TLHELP32.H
上传用户:jnhwc1
上传日期:2022-07-09
资源大小:100k
文件大小:8k
源码类别:

进程与线程

开发平台:

Visual C++

  1. /*****************************************************************************
  2. *                                                                             *
  3. * tlhelp32.h -  WIN32 tool help functions, types, and definitions             *
  4. *                                                                             *
  5. * Version 1.0                                                                 *
  6. *                                                                             *
  7. * NOTE: windows.h/winbase.h must be #included first                           *
  8. *                                                                             *
  9. * Copyright 1994 - 1998 Microsoft Corp.   All rights reserved.             *
  10. *                                                                             *
  11. *****************************************************************************/
  12. #ifndef _INC_TOOLHELP32
  13. #define _INC_TOOLHELP32
  14. #ifdef __cplusplus
  15. extern "C" {            /* Assume C declarations for C++ */
  16. #endif  /* __cplusplus */
  17. #define MAX_MODULE_NAME32 255
  18. /****** Shapshot function **********************************************/
  19. HANDLE
  20. WINAPI
  21. CreateToolhelp32Snapshot(
  22.     DWORD dwFlags,
  23.     DWORD th32ProcessID
  24.     );
  25. //
  26. // The th32ProcessID argument is only used if TH32CS_SNAPHEAPLIST or
  27. // TH32CS_SNAPMODULE is specified. th32ProcessID == 0 means the current
  28. // process.
  29. //
  30. // NOTE that all of the snapshots are global except for the heap and module
  31. //      lists which are process specific. To enumerate the heap or module
  32. //      state for all WIN32 processes call with TH32CS_SNAPALL and the
  33. //      current process. Then for each process in the TH32CS_SNAPPROCESS
  34. //      list that isn't the current process, do a call with just
  35. //      TH32CS_SNAPHEAPLIST and/or TH32CS_SNAPMODULE.
  36. //
  37. // dwFlags
  38. //
  39. #define TH32CS_SNAPHEAPLIST 0x00000001
  40. #define TH32CS_SNAPPROCESS  0x00000002
  41. #define TH32CS_SNAPTHREAD   0x00000004
  42. #define TH32CS_SNAPMODULE   0x00000008
  43. #define TH32CS_SNAPALL      (TH32CS_SNAPHEAPLIST | TH32CS_SNAPPROCESS | TH32CS_SNAPTHREAD | TH32CS_SNAPMODULE)
  44. #define TH32CS_INHERIT      0x80000000
  45. //
  46. // Use CloseHandle to destroy the snapshot
  47. //
  48. /****** heap walking ***************************************************/
  49. typedef struct tagHEAPLIST32
  50. {
  51.     DWORD  dwSize;
  52.     DWORD  th32ProcessID;   // owning process
  53.     DWORD  th32HeapID;      // heap (in owning process's context!)
  54.     DWORD  dwFlags;
  55. } HEAPLIST32;
  56. typedef HEAPLIST32 *  PHEAPLIST32;
  57. typedef HEAPLIST32 *  LPHEAPLIST32;
  58. //
  59. // dwFlags
  60. //
  61. #define HF32_DEFAULT      1  // process's default heap
  62. #define HF32_SHARED       2  // is shared heap
  63. BOOL
  64. WINAPI
  65. Heap32ListFirst(
  66.     HANDLE hSnapshot,
  67.     LPHEAPLIST32 lphl
  68.     );
  69. BOOL
  70. WINAPI
  71. Heap32ListNext(
  72.     HANDLE hSnapshot,
  73.     LPHEAPLIST32 lphl
  74.     );
  75. typedef struct tagHEAPENTRY32
  76. {
  77.     DWORD  dwSize;
  78.     HANDLE hHandle;     // Handle of this heap block
  79.     DWORD  dwAddress;   // Linear address of start of block
  80.     DWORD  dwBlockSize; // Size of block in bytes
  81.     DWORD  dwFlags;
  82.     DWORD  dwLockCount;
  83.     DWORD  dwResvd;
  84.     DWORD  th32ProcessID;   // owning process
  85.     DWORD  th32HeapID;      // heap block is in
  86. } HEAPENTRY32;
  87. typedef HEAPENTRY32 *  PHEAPENTRY32;
  88. typedef HEAPENTRY32 *  LPHEAPENTRY32;
  89. //
  90. // dwFlags
  91. //
  92. #define LF32_FIXED    0x00000001
  93. #define LF32_FREE     0x00000002
  94. #define LF32_MOVEABLE 0x00000004
  95. BOOL
  96. WINAPI
  97. Heap32First(
  98.     LPHEAPENTRY32 lphe,
  99.     DWORD th32ProcessID,
  100.     DWORD th32HeapID
  101.     );
  102. BOOL
  103. WINAPI
  104. Heap32Next(
  105.     LPHEAPENTRY32 lphe
  106.     );
  107. BOOL
  108. WINAPI
  109. Toolhelp32ReadProcessMemory(
  110.     DWORD   th32ProcessID,
  111.     LPCVOID lpBaseAddress,
  112.     LPVOID  lpBuffer,
  113.     DWORD   cbRead,
  114.     LPDWORD lpNumberOfBytesRead
  115.     );
  116. /***** Process walking *************************************************/
  117. typedef struct tagPROCESSENTRY32W
  118. {
  119.     DWORD   dwSize;
  120.     DWORD   cntUsage;
  121.     DWORD   th32ProcessID;          // this process
  122.     DWORD   th32DefaultHeapID;
  123.     DWORD   th32ModuleID;           // associated exe
  124.     DWORD   cntThreads;
  125.     DWORD   th32ParentProcessID;    // this process's parent process
  126.     LONG    pcPriClassBase;         // Base priority of process's threads
  127.     DWORD   dwFlags;
  128.     WCHAR   szExeFile[MAX_PATH];    // Path
  129. } PROCESSENTRY32W;
  130. typedef PROCESSENTRY32W *  PPROCESSENTRY32W;
  131. typedef PROCESSENTRY32W *  LPPROCESSENTRY32W;
  132. BOOL
  133. WINAPI
  134. Process32FirstW(
  135.     HANDLE hSnapshot,
  136.     LPPROCESSENTRY32W lppe
  137.     );
  138. BOOL
  139. WINAPI
  140. Process32NextW(
  141.     HANDLE hSnapshot,
  142.     LPPROCESSENTRY32W lppe
  143.     );
  144. typedef struct tagPROCESSENTRY32
  145. {
  146.     DWORD   dwSize;
  147.     DWORD   cntUsage;
  148.     DWORD   th32ProcessID;          // this process
  149.     DWORD   th32DefaultHeapID;
  150.     DWORD   th32ModuleID;           // associated exe
  151.     DWORD   cntThreads;
  152.     DWORD   th32ParentProcessID;    // this process's parent process
  153.     LONG    pcPriClassBase;         // Base priority of process's threads
  154.     DWORD   dwFlags;
  155.     CHAR    szExeFile[MAX_PATH];    // Path
  156. } PROCESSENTRY32;
  157. typedef PROCESSENTRY32 *  PPROCESSENTRY32;
  158. typedef PROCESSENTRY32 *  LPPROCESSENTRY32;
  159. BOOL
  160. WINAPI
  161. Process32First(
  162.     HANDLE hSnapshot,
  163.     LPPROCESSENTRY32 lppe
  164.     );
  165. BOOL
  166. WINAPI
  167. Process32Next(
  168.     HANDLE hSnapshot,
  169.     LPPROCESSENTRY32 lppe
  170.     );
  171. #ifdef UNICODE
  172. #define Process32First Process32FirstW
  173. #define Process32Next Process32NextW
  174. #define PROCESSENTRY32 PROCESSENTRY32W
  175. #define PPROCESSENTRY32 PPROCESSENTRY32W
  176. #define LPPROCESSENTRY32 LPPROCESSENTRY32W
  177. #endif  // !UNICODE
  178. /***** Thread walking **************************************************/
  179. typedef struct tagTHREADENTRY32
  180. {
  181.     DWORD   dwSize;
  182.     DWORD   cntUsage;
  183.     DWORD   th32ThreadID;       // this thread
  184.     DWORD   th32OwnerProcessID; // Process this thread is associated with
  185.     LONG    tpBasePri;
  186.     LONG    tpDeltaPri;
  187.     DWORD   dwFlags;
  188. } THREADENTRY32;
  189. typedef THREADENTRY32 *  PTHREADENTRY32;
  190. typedef THREADENTRY32 *  LPTHREADENTRY32;
  191. BOOL
  192. WINAPI
  193. Thread32First(
  194.     HANDLE hSnapshot,
  195.     LPTHREADENTRY32 lpte
  196.     );
  197. BOOL
  198. WINAPI
  199. Thread32Next(
  200.     HANDLE hSnapshot,
  201.     LPTHREADENTRY32 lpte
  202.     );
  203. /***** Module walking *************************************************/
  204. typedef struct tagMODULEENTRY32W
  205. {
  206.     DWORD   dwSize;
  207.     DWORD   th32ModuleID;       // This module
  208.     DWORD   th32ProcessID;      // owning process
  209.     DWORD   GlblcntUsage;       // Global usage count on the module
  210.     DWORD   ProccntUsage;       // Module usage count in th32ProcessID's context
  211.     BYTE  * modBaseAddr;        // Base address of module in th32ProcessID's context
  212.     DWORD   modBaseSize;        // Size in bytes of module starting at modBaseAddr
  213.     HMODULE hModule;            // The hModule of this module in th32ProcessID's context
  214.     WCHAR   szModule[MAX_MODULE_NAME32 + 1];
  215.     WCHAR   szExePath[MAX_PATH];
  216. } MODULEENTRY32W;
  217. typedef MODULEENTRY32W *  PMODULEENTRY32W;
  218. typedef MODULEENTRY32W *  LPMODULEENTRY32W;
  219. BOOL
  220. WINAPI
  221. Module32FirstW(
  222.     HANDLE hSnapshot,
  223.     LPMODULEENTRY32W lpme
  224.     );
  225. BOOL
  226. WINAPI
  227. Module32NextW(
  228.     HANDLE hSnapshot,
  229.     LPMODULEENTRY32W lpme
  230.     );
  231. typedef struct tagMODULEENTRY32
  232. {
  233.     DWORD   dwSize;
  234.     DWORD   th32ModuleID;       // This module
  235.     DWORD   th32ProcessID;      // owning process
  236.     DWORD   GlblcntUsage;       // Global usage count on the module
  237.     DWORD   ProccntUsage;       // Module usage count in th32ProcessID's context
  238.     BYTE  * modBaseAddr;        // Base address of module in th32ProcessID's context
  239.     DWORD   modBaseSize;        // Size in bytes of module starting at modBaseAddr
  240.     HMODULE hModule;            // The hModule of this module in th32ProcessID's context
  241.     char    szModule[MAX_MODULE_NAME32 + 1];
  242.     char    szExePath[MAX_PATH];
  243. } MODULEENTRY32;
  244. typedef MODULEENTRY32 *  PMODULEENTRY32;
  245. typedef MODULEENTRY32 *  LPMODULEENTRY32;
  246. //
  247. // NOTE CAREFULLY that the modBaseAddr and hModule fields are valid ONLY
  248. // in th32ProcessID's process context.
  249. //
  250. BOOL
  251. WINAPI
  252. Module32First(
  253.     HANDLE hSnapshot,
  254.     LPMODULEENTRY32 lpme
  255.     );
  256. BOOL
  257. WINAPI
  258. Module32Next(
  259.     HANDLE hSnapshot,
  260.     LPMODULEENTRY32 lpme
  261.     );
  262. #ifdef UNICODE
  263. #define Module32First Module32FirstW
  264. #define Module32Next Module32NextW
  265. #define MODULEENTRY32 MODULEENTRY32W
  266. #define PMODULEENTRY32 PMODULEENTRY32W
  267. #define LPMODULEENTRY32 LPMODULEENTRY32W
  268. #endif  // !UNICODE
  269. #ifdef __cplusplus
  270. }
  271. #endif
  272. #endif // _INC_TOOLHELP32