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