3 * Copyright 2012, 2013 MinGW.org project
5 * Permission is hereby granted, free of charge, to any person obtaining a
6 * copy of this software and associated documentation files (the "Software"),
7 * to deal in the Software without restriction, including without limitation
8 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
9 * and/or sell copies of the Software, and to permit persons to whom the
10 * Software is furnished to do so, subject to the following conditions:
12 * The above copyright notice and this permission notice (including the next
13 * paragraph) shall be included in all copies or substantial portions of the
16 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
21 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
22 * DEALINGS IN THE SOFTWARE.
24 /* Written by Mumit Khan <khan@nanotech.wisc.edu> */
27 #pragma GCC system_header
34 #define HF32_DEFAULT 1
36 #define LF32_FIXED 0x1
38 #define LF32_MOVEABLE 0x4
39 #define MAX_MODULE_NAME32 255
40 #define TH32CS_SNAPHEAPLIST 0x1
41 #define TH32CS_SNAPPROCESS 0x2
42 #define TH32CS_SNAPTHREAD 0x4
43 #define TH32CS_SNAPMODULE 0x8
44 #define TH32CS_SNAPALL (TH32CS_SNAPHEAPLIST|TH32CS_SNAPPROCESS|TH32CS_SNAPTHREAD|TH32CS_SNAPMODULE)
45 #define TH32CS_INHERIT 0x80000000
46 typedef struct tagHEAPLIST32 {
51 } HEAPLIST32,*PHEAPLIST32,*LPHEAPLIST32;
52 typedef struct tagHEAPENTRY32 {
62 } HEAPENTRY32,*PHEAPENTRY32,*LPHEAPENTRY32;
63 typedef struct tagPROCESSENTRY32W {
67 DWORD th32DefaultHeapID;
70 DWORD th32ParentProcessID;
73 WCHAR szExeFile[MAX_PATH];
74 } PROCESSENTRY32W,*PPROCESSENTRY32W,*LPPROCESSENTRY32W;
75 typedef struct tagPROCESSENTRY32 {
79 DWORD th32DefaultHeapID;
82 DWORD th32ParentProcessID;
85 CHAR szExeFile[MAX_PATH];
86 } PROCESSENTRY32,*PPROCESSENTRY32,*LPPROCESSENTRY32;
87 typedef struct tagTHREADENTRY32 {
91 DWORD th32OwnerProcessID;
95 } THREADENTRY32,*PTHREADENTRY32,*LPTHREADENTRY32;
96 typedef struct tagMODULEENTRY32W {
105 WCHAR szModule[MAX_MODULE_NAME32 + 1];
106 WCHAR szExePath[MAX_PATH];
107 } MODULEENTRY32W,*PMODULEENTRY32W,*LPMODULEENTRY32W;
108 typedef struct tagMODULEENTRY32 {
117 char szModule[MAX_MODULE_NAME32 + 1];
118 char szExePath[MAX_PATH];
119 } MODULEENTRY32,*PMODULEENTRY32,*LPMODULEENTRY32;
120 BOOL WINAPI Heap32First(LPHEAPENTRY32,DWORD,DWORD);
121 BOOL WINAPI Heap32ListFirst(HANDLE,LPHEAPLIST32);
122 BOOL WINAPI Heap32ListNext(HANDLE,LPHEAPLIST32);
123 BOOL WINAPI Heap32Next(LPHEAPENTRY32);
124 BOOL WINAPI Module32First(HANDLE,LPMODULEENTRY32);
125 BOOL WINAPI Module32FirstW(HANDLE,LPMODULEENTRY32W);
126 BOOL WINAPI Module32Next(HANDLE,LPMODULEENTRY32);
127 BOOL WINAPI Module32NextW(HANDLE,LPMODULEENTRY32W);
128 BOOL WINAPI Process32First(HANDLE,LPPROCESSENTRY32);
129 BOOL WINAPI Process32FirstW(HANDLE,LPPROCESSENTRY32W);
130 BOOL WINAPI Process32Next(HANDLE,LPPROCESSENTRY32);
131 BOOL WINAPI Process32NextW(HANDLE,LPPROCESSENTRY32W);
132 BOOL WINAPI Thread32First(HANDLE,LPTHREADENTRY32);
133 BOOL WINAPI Thread32Next(HANDLE,LPTHREADENTRY32);
134 BOOL WINAPI Toolhelp32ReadProcessMemory(DWORD,LPCVOID,LPVOID,DWORD,LPDWORD);
135 HANDLE WINAPI CreateToolhelp32Snapshot(DWORD,DWORD);
137 /* Cannot use __AW() since there is no A version. */
139 #define LPMODULEENTRY32 LPMODULEENTRY32W
140 #define LPPROCESSENTRY32 LPPROCESSENTRY32W
141 #define MODULEENTRY32 MODULEENTRY32W
142 #define Module32First Module32FirstW
143 #define Module32Next Module32NextW
144 #define PMODULEENTRY32 PMODULEENTRY32W
145 #define PPROCESSENTRY32 PPROCESSENTRY32W
146 #define PROCESSENTRY32 PROCESSENTRY32W
147 #define Process32First Process32FirstW
148 #define Process32Next Process32NextW
155 #endif /* _TLHELP32_H */