tlhelp32.h 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168
  1. /**
  2. * This file has no copyright assigned and is placed in the Public Domain.
  3. * This file is part of the mingw-w64 runtime package.
  4. * No warranty is given; refer to the file DISCLAIMER.PD within this package.
  5. */
  6. #ifndef _INC_TOOLHELP32
  7. #define _INC_TOOLHELP32
  8. #ifdef __cplusplus
  9. extern "C" {
  10. #endif
  11. #define MAX_MODULE_NAME32 255
  12. HANDLE WINAPI CreateToolhelp32Snapshot(DWORD dwFlags,DWORD th32ProcessID);
  13. #define TH32CS_SNAPHEAPLIST 0x00000001
  14. #define TH32CS_SNAPPROCESS 0x00000002
  15. #define TH32CS_SNAPTHREAD 0x00000004
  16. #define TH32CS_SNAPMODULE 0x00000008
  17. #define TH32CS_SNAPMODULE32 0x00000010
  18. #define TH32CS_SNAPALL (TH32CS_SNAPHEAPLIST | TH32CS_SNAPPROCESS | TH32CS_SNAPTHREAD | TH32CS_SNAPMODULE)
  19. #define TH32CS_INHERIT 0x80000000
  20. typedef struct tagHEAPLIST32 {
  21. SIZE_T dwSize;
  22. DWORD th32ProcessID;
  23. ULONG_PTR th32HeapID;
  24. DWORD dwFlags;
  25. } HEAPLIST32;
  26. typedef HEAPLIST32 *PHEAPLIST32;
  27. typedef HEAPLIST32 *LPHEAPLIST32;
  28. #define HF32_DEFAULT 1
  29. #define HF32_SHARED 2
  30. WINBOOL WINAPI Heap32ListFirst(HANDLE hSnapshot,LPHEAPLIST32 lphl);
  31. WINBOOL WINAPI Heap32ListNext(HANDLE hSnapshot,LPHEAPLIST32 lphl);
  32. typedef struct tagHEAPENTRY32 {
  33. SIZE_T dwSize;
  34. HANDLE hHandle;
  35. ULONG_PTR dwAddress;
  36. SIZE_T dwBlockSize;
  37. DWORD dwFlags;
  38. DWORD dwLockCount;
  39. DWORD dwResvd;
  40. DWORD th32ProcessID;
  41. ULONG_PTR th32HeapID;
  42. } HEAPENTRY32;
  43. typedef HEAPENTRY32 *PHEAPENTRY32;
  44. typedef HEAPENTRY32 *LPHEAPENTRY32;
  45. #define LF32_FIXED 0x00000001
  46. #define LF32_FREE 0x00000002
  47. #define LF32_MOVEABLE 0x00000004
  48. WINBOOL WINAPI Heap32First(LPHEAPENTRY32 lphe,DWORD th32ProcessID,ULONG_PTR th32HeapID);
  49. WINBOOL WINAPI Heap32Next(LPHEAPENTRY32 lphe);
  50. WINBOOL WINAPI Toolhelp32ReadProcessMemory(DWORD th32ProcessID,LPCVOID lpBaseAddress,LPVOID lpBuffer,SIZE_T cbRead,SIZE_T *lpNumberOfBytesRead);
  51. typedef struct tagPROCESSENTRY32W {
  52. DWORD dwSize;
  53. DWORD cntUsage;
  54. DWORD th32ProcessID;
  55. ULONG_PTR th32DefaultHeapID;
  56. DWORD th32ModuleID;
  57. DWORD cntThreads;
  58. DWORD th32ParentProcessID;
  59. LONG pcPriClassBase;
  60. DWORD dwFlags;
  61. WCHAR szExeFile[MAX_PATH];
  62. } PROCESSENTRY32W;
  63. typedef PROCESSENTRY32W *PPROCESSENTRY32W;
  64. typedef PROCESSENTRY32W *LPPROCESSENTRY32W;
  65. WINBOOL WINAPI Process32FirstW(HANDLE hSnapshot,LPPROCESSENTRY32W lppe);
  66. WINBOOL WINAPI Process32NextW(HANDLE hSnapshot,LPPROCESSENTRY32W lppe);
  67. typedef struct tagPROCESSENTRY32 {
  68. DWORD dwSize;
  69. DWORD cntUsage;
  70. DWORD th32ProcessID;
  71. ULONG_PTR th32DefaultHeapID;
  72. DWORD th32ModuleID;
  73. DWORD cntThreads;
  74. DWORD th32ParentProcessID;
  75. LONG pcPriClassBase;
  76. DWORD dwFlags;
  77. CHAR szExeFile[MAX_PATH];
  78. } PROCESSENTRY32;
  79. typedef PROCESSENTRY32 *PPROCESSENTRY32;
  80. typedef PROCESSENTRY32 *LPPROCESSENTRY32;
  81. WINBOOL WINAPI Process32First(HANDLE hSnapshot,LPPROCESSENTRY32 lppe);
  82. WINBOOL WINAPI Process32Next(HANDLE hSnapshot,LPPROCESSENTRY32 lppe);
  83. #if defined(UNICODE)
  84. #define Process32First Process32FirstW
  85. #define Process32Next Process32NextW
  86. #define PROCESSENTRY32 PROCESSENTRY32W
  87. #define PPROCESSENTRY32 PPROCESSENTRY32W
  88. #define LPPROCESSENTRY32 LPPROCESSENTRY32W
  89. #endif
  90. typedef struct tagTHREADENTRY32 {
  91. DWORD dwSize;
  92. DWORD cntUsage;
  93. DWORD th32ThreadID;
  94. DWORD th32OwnerProcessID;
  95. LONG tpBasePri;
  96. LONG tpDeltaPri;
  97. DWORD dwFlags;
  98. } THREADENTRY32;
  99. typedef THREADENTRY32 *PTHREADENTRY32;
  100. typedef THREADENTRY32 *LPTHREADENTRY32;
  101. WINBOOL WINAPI Thread32First(HANDLE hSnapshot,LPTHREADENTRY32 lpte);
  102. WINBOOL WINAPI Thread32Next(HANDLE hSnapshot,LPTHREADENTRY32 lpte);
  103. typedef struct tagMODULEENTRY32W {
  104. DWORD dwSize;
  105. DWORD th32ModuleID;
  106. DWORD th32ProcessID;
  107. DWORD GlblcntUsage;
  108. DWORD ProccntUsage;
  109. BYTE *modBaseAddr;
  110. DWORD modBaseSize;
  111. HMODULE hModule;
  112. WCHAR szModule[MAX_MODULE_NAME32 + 1];
  113. WCHAR szExePath[MAX_PATH];
  114. } MODULEENTRY32W;
  115. typedef MODULEENTRY32W *PMODULEENTRY32W;
  116. typedef MODULEENTRY32W *LPMODULEENTRY32W;
  117. WINBOOL WINAPI Module32FirstW(HANDLE hSnapshot,LPMODULEENTRY32W lpme);
  118. WINBOOL WINAPI Module32NextW(HANDLE hSnapshot,LPMODULEENTRY32W lpme);
  119. typedef struct tagMODULEENTRY32 {
  120. DWORD dwSize;
  121. DWORD th32ModuleID;
  122. DWORD th32ProcessID;
  123. DWORD GlblcntUsage;
  124. DWORD ProccntUsage;
  125. BYTE *modBaseAddr;
  126. DWORD modBaseSize;
  127. HMODULE hModule;
  128. char szModule[MAX_MODULE_NAME32 + 1];
  129. char szExePath[MAX_PATH];
  130. } MODULEENTRY32;
  131. typedef MODULEENTRY32 *PMODULEENTRY32;
  132. typedef MODULEENTRY32 *LPMODULEENTRY32;
  133. WINBOOL WINAPI Module32First(HANDLE hSnapshot,LPMODULEENTRY32 lpme);
  134. WINBOOL WINAPI Module32Next(HANDLE hSnapshot,LPMODULEENTRY32 lpme);
  135. #if defined(UNICODE)
  136. #define Module32First Module32FirstW
  137. #define Module32Next Module32NextW
  138. #define MODULEENTRY32 MODULEENTRY32W
  139. #define PMODULEENTRY32 PMODULEENTRY32W
  140. #define LPMODULEENTRY32 LPMODULEENTRY32W
  141. #endif
  142. #ifdef __cplusplus
  143. }
  144. #endif
  145. #endif