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