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