master
  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
 10extern "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