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