osutil.h 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. /*
  2. * category: [misc]
  3. * apply status:
  4. * edit status:
  5. * build status:
  6. * description:
  7. */
  8. #ifndef __OSUTIL_H__
  9. #define __OSUTIL_H__
  10. #pragma once
  11. #include "config.h"
  12. typedef void* ostuile_void_ptr;
  13. #ifdef __cplusplus
  14. extern "C" {
  15. #endif
  16. #define MAX_ALIVE_PROCESS_COUNT 100
  17. #define ALIVE_PROCESS_PATH_LEN 512
  18. typedef struct t_process_info
  19. {
  20. int pid;
  21. char name[64];
  22. char path[ALIVE_PROCESS_PATH_LEN]; //or cmd
  23. } alive_process_info;
  24. typedef struct toolkit_utsname_s
  25. {
  26. char sysname[256];
  27. char release[256];
  28. char version[256];
  29. char machine[256];
  30. /* This struct does not contain the nodename and domainname fields present in
  31. the utsname type. domainname is a GNU extension. Both fields are referred
  32. to as meaningless in the docs. */
  33. }tk_utsname_t;
  34. // non-zero: unique
  35. // zero: has clone
  36. TOOLKIT_API int osutil_detect_unique_app(char **pNames, int nNum, int* alive, alive_process_info* alive_process_arr);
  37. TOOLKIT_API int osutil_restart_system();
  38. TOOLKIT_API int osutil_shutdown_system();
  39. //force: which is only available at UOS, non-zero meaning kill -9 otherwise -15
  40. TOOLKIT_API void osutil_terminate_related_process(char** process_array, const int array_size, int force);
  41. TOOLKIT_API int osutil_uname(tk_utsname_t* buffer);
  42. /*
  43. * -1:failed
  44. * 0:no
  45. * 1:yes
  46. */
  47. TOOLKIT_API int osutil_is32r64_platform();
  48. TOOLKIT_API ostuile_void_ptr osutil_sure_redirect_32sys_in_wow64();
  49. TOOLKIT_API void osutil_reset_redirect_32sys_in_wow64(ostuile_void_ptr* value);
  50. #ifdef __cplusplus
  51. } // extern "C" {
  52. #endif
  53. #endif //__OSUTIL_H__