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