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