File: tlhelp32.d

package info (click to toggle)
gcc-arm-none-eabi 15%3A12.2.rel1-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 959,712 kB
  • sloc: cpp: 3,275,382; ansic: 2,061,766; ada: 840,956; f90: 208,513; makefile: 76,132; asm: 73,433; xml: 50,448; exp: 34,146; sh: 32,436; objc: 15,637; fortran: 14,012; python: 11,991; pascal: 6,787; awk: 4,779; perl: 3,054; yacc: 338; ml: 285; lex: 201; haskell: 122
file content (173 lines) | stat: -rw-r--r-- 4,496 bytes parent folder | download | duplicates (2)
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);
    }
}