1 /**
2 * Windows API header module
3 *
4 * Translated from MinGW Windows headers
5 *
6 * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0)
7 * Source: $(DRUNTIMESRC src/core/sys/windows/_tlhelp32.d)
8 */
9 module core.sys.windows.tlhelp32;
10 version (Windows):
11 pragma(lib, "kernel32");
12
version(ANSI)13 version (ANSI) {} else version = Unicode;
14
15 private import core.sys.windows.windef;
16
17 enum : uint {
18 HF32_DEFAULT = 1,
19 HF32_SHARED
20 }
21
22 enum : uint {
23 LF32_FIXED = 0x1,
24 LF32_FREE = 0x2,
25 LF32_MOVEABLE = 0x4
26 }
27
28 enum MAX_MODULE_NAME32 = 255;
29
30 enum : uint {
31 TH32CS_SNAPHEAPLIST = 0x1,
32 TH32CS_SNAPPROCESS = 0x2,
33 TH32CS_SNAPTHREAD = 0x4,
34 TH32CS_SNAPMODULE = 0x8,
35 TH32CS_SNAPALL = (TH32CS_SNAPHEAPLIST|TH32CS_SNAPPROCESS|TH32CS_SNAPTHREAD|TH32CS_SNAPMODULE),
36 TH32CS_INHERIT = 0x80000000
37 }
38
39 struct HEAPLIST32 {
40 SIZE_T dwSize;
41 DWORD th32ProcessID;
42 ULONG_PTR th32HeapID;
43 DWORD dwFlags;
44 }
45 alias HEAPLIST32* PHEAPLIST32;
46 alias HEAPLIST32* LPHEAPLIST32;
47
48 struct HEAPENTRY32 {
49 SIZE_T dwSize;
50 HANDLE hHandle;
51 ULONG_PTR dwAddress;
52 SIZE_T dwBlockSize;
53 DWORD dwFlags;
54 DWORD dwLockCount;
55 DWORD dwResvd;
56 DWORD th32ProcessID;
57 ULONG_PTR th32HeapID;
58 }
59 alias HEAPENTRY32* PHEAPENTRY32;
60 alias HEAPENTRY32* LPHEAPENTRY32;
61
62 struct PROCESSENTRY32W {
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[MAX_PATH] szExeFile = 0;
73 }
74 alias PROCESSENTRY32W* PPROCESSENTRY32W;
75 alias PROCESSENTRY32W* LPPROCESSENTRY32W;
76
77 struct THREADENTRY32 {
78 DWORD dwSize;
79 DWORD cntUsage;
80 DWORD th32ThreadID;
81 DWORD th32OwnerProcessID;
82 LONG tpBasePri;
83 LONG tpDeltaPri;
84 DWORD dwFlags;
85 }
86 alias THREADENTRY32* PTHREADENTRY32;
87 alias THREADENTRY32* LPTHREADENTRY32;
88
89 struct MODULEENTRY32W {
90 DWORD dwSize;
91 DWORD th32ModuleID;
92 DWORD th32ProcessID;
93 DWORD GlblcntUsage;
94 DWORD ProccntUsage;
95 BYTE *modBaseAddr;
96 DWORD modBaseSize;
97 HMODULE hModule;
98 WCHAR[MAX_MODULE_NAME32 + 1] szModule = 0;
99 WCHAR[MAX_PATH] szExePath = 0;
100 }
101 alias MODULEENTRY32W* PMODULEENTRY32W;
102 alias MODULEENTRY32W* LPMODULEENTRY32W;
103
version(Unicode)104 version (Unicode) {
105 alias PROCESSENTRY32W PROCESSENTRY32;
106 alias PPROCESSENTRY32W PPROCESSENTRY32;
107 alias LPPROCESSENTRY32W LPPROCESSENTRY32;
108
109 alias MODULEENTRY32W MODULEENTRY32;
110 alias PMODULEENTRY32W PMODULEENTRY32;
111 alias LPMODULEENTRY32W LPMODULEENTRY32;
112 } else {
113 struct PROCESSENTRY32 {
114 DWORD dwSize;
115 DWORD cntUsage;
116 DWORD th32ProcessID;
117 ULONG_PTR th32DefaultHeapID;
118 DWORD th32ModuleID;
119 DWORD cntThreads;
120 DWORD th32ParentProcessID;
121 LONG pcPriClassBase;
122 DWORD dwFlags;
123 CHAR[MAX_PATH] szExeFile = 0;
124 }
125 alias PROCESSENTRY32* PPROCESSENTRY32;
126 alias PROCESSENTRY32* LPPROCESSENTRY32;
127
128 struct MODULEENTRY32 {
129 DWORD dwSize;
130 DWORD th32ModuleID;
131 DWORD th32ProcessID;
132 DWORD GlblcntUsage;
133 DWORD ProccntUsage;
134 BYTE *modBaseAddr;
135 DWORD modBaseSize;
136 HMODULE hModule;
137 char[MAX_MODULE_NAME32 + 1] szModule = 0;
138 char[MAX_PATH] szExePath = 0;
139 }
140 alias MODULEENTRY32* PMODULEENTRY32;
141 alias MODULEENTRY32* LPMODULEENTRY32;
142 }
143
144
145 extern(Windows) nothrow @nogc {
146 BOOL Heap32First(LPHEAPENTRY32,DWORD,ULONG_PTR);
147 BOOL Heap32ListFirst(HANDLE,LPHEAPLIST32);
148 BOOL Heap32ListNext(HANDLE,LPHEAPLIST32);
149 BOOL Heap32Next(LPHEAPENTRY32);
150 BOOL Thread32First(HANDLE,LPTHREADENTRY32);
151 BOOL Thread32Next(HANDLE,LPTHREADENTRY32);
152 BOOL Toolhelp32ReadProcessMemory(DWORD,LPCVOID,LPVOID,SIZE_T,SIZE_T*);
153 HANDLE CreateToolhelp32Snapshot(DWORD,DWORD);
154 BOOL Module32FirstW(HANDLE,LPMODULEENTRY32W);
155 BOOL Module32NextW(HANDLE,LPMODULEENTRY32W);
156 BOOL Process32FirstW(HANDLE,LPPROCESSENTRY32W);
157 BOOL Process32NextW(HANDLE,LPPROCESSENTRY32W);
158 }
159
version(Unicode)160 version (Unicode) {
161 alias Module32FirstW Module32First;
162 alias Module32NextW Module32Next;
163 alias Process32FirstW Process32First;
164 alias Process32NextW Process32Next;
165 } else {
166 extern(Windows) nothrow @nogc {
167 BOOL Module32First(HANDLE,LPMODULEENTRY32);
168 BOOL Module32Next(HANDLE,LPMODULEENTRY32);
169 BOOL Process32First(HANDLE,LPPROCESSENTRY32);
170 BOOL Process32Next(HANDLE,LPPROCESSENTRY32);
171 }
172 }
173