1 // Copyright © 2015, Gigih Aji Ibrahim
2 // Licensed under the MIT License <LICENSE.md>
3 pub const MAX_MODULE_NAME32: usize = 255;
4 pub const TH32CS_SNAPHEAPLIST: ::DWORD = 0x00000001;
5 pub const TH32CS_SNAPPROCESS: ::DWORD = 0x00000002;
6 pub const TH32CS_SNAPTHREAD: ::DWORD = 0x00000004;
7 pub const TH32CS_SNAPMODULE: ::DWORD = 0x00000008;
8 pub const TH32CS_SNAPMODULE32: ::DWORD = 0x00000010;
9 pub const TH32CS_SNAPALL: ::DWORD =
10     (TH32CS_SNAPHEAPLIST | TH32CS_SNAPPROCESS | TH32CS_SNAPTHREAD | TH32CS_SNAPMODULE);
11 pub const TH32CS_INHERIT: ::DWORD = 0x80000000;
12 STRUCT!{struct HEAPLIST32 {
13     dwSize: ::SIZE_T,
14     th32ProcessID: ::DWORD,
15     th32HeapID: :: ULONG_PTR,
16     dwFlags: ::DWORD,
17 }}
18 pub type PHEAPLIST32 = *mut HEAPLIST32;
19 pub type LPHEAPLIST32 = *mut HEAPLIST32;
20 pub const HF32_DEFAULT: ::DWORD = 1;
21 pub const HF32_SHARED: ::DWORD = 2;
22 STRUCT!{struct HEAPENTRY32 {
23     dwSize: ::SIZE_T,
24     hHandle: ::HANDLE,
25     dwAddress: ::ULONG_PTR,
26     dwBlockSize: ::SIZE_T,
27     dwFlags: ::DWORD,
28     dwLockCount: ::DWORD,
29     dwResvd: ::DWORD,
30     th32ProcessID: ::DWORD,
31     th32HeapID: ::ULONG_PTR,
32 }}
33 pub type PHEAPENTRY32 = *mut HEAPENTRY32;
34 pub type LPHEAPENTRY32 = *mut HEAPENTRY32;
35 pub const LF32_FIXED: ::DWORD = 0x00000001;
36 pub const LF32_FREE: ::DWORD = 0x00000002;
37 pub const LF32_MOVEABLE: ::DWORD = 0x00000004;
38 STRUCT!{nodebug struct PROCESSENTRY32W {
39     dwSize: ::DWORD,
40     cntUsage: ::DWORD,
41     th32ProcessID: ::DWORD,
42     th32DefaultHeapID: ::ULONG_PTR,
43     th32ModuleID: ::DWORD,
44     cntThreads: ::DWORD,
45     th32ParentProcessID: ::DWORD,
46     pcPriClassBase: ::LONG,
47     dwFlags: ::DWORD,
48     szExeFile: [::WCHAR; ::MAX_PATH],
49 }}
50 pub type PPROCESSENTRY32W = *mut PROCESSENTRY32W;
51 pub type LPPROCESSENTRY32W = *mut PROCESSENTRY32W;
52 STRUCT!{nodebug struct PROCESSENTRY32 {
53     dwSize: ::DWORD,
54     cntUsage: ::DWORD,
55     th32ProcessID: ::DWORD,
56     th32DefaultHeapID: ::ULONG_PTR,
57     th32ModuleID: ::DWORD,
58     cntThreads: ::DWORD,
59     th32ParentProcessID: ::DWORD,
60     pcPriClassBase: ::LONG,
61     dwFlags: ::DWORD,
62     szExeFile: [::CHAR; ::MAX_PATH],
63 }}
64 pub type PPROCESSENTRY32 = *mut PROCESSENTRY32;
65 pub type LPPROCESSENTRY32 = *mut PROCESSENTRY32;
66 STRUCT!{struct THREADENTRY32 {
67     dwSize: ::DWORD,
68     cntUsage: ::DWORD,
69     th32ThreadID: ::DWORD,
70     th32OwnerProcessID: ::DWORD,
71     tpBasePri: ::LONG,
72     tpDeltaPri: ::LONG,
73     dwFlags: ::DWORD,
74 }}
75 pub type PTHREADENTRY32 = *mut THREADENTRY32;
76 pub type LPTHREADENTRY32 = *mut THREADENTRY32;
77 STRUCT!{nodebug struct MODULEENTRY32W {
78     dwSize: ::DWORD,
79     th32ModuleID: ::DWORD,
80     th32ProcessID: ::DWORD,
81     GlblcntUsage: ::DWORD,
82     ProccntUsage: ::DWORD,
83     modBaseAddr: *mut ::BYTE,
84     modBaseSize: ::DWORD,
85     hModule: ::HMODULE,
86     szModule: [::WCHAR; ::MAX_MODULE_NAME32 + 1],
87     szExePath: [::WCHAR; ::MAX_PATH],
88 }}
89 pub type PMODULEENTRY32W = *mut MODULEENTRY32W;
90 pub type LPMODULEENTRY32W = *mut MODULEENTRY32W;
91 STRUCT!{nodebug struct MODULEENTRY32 {
92     dwSize: ::DWORD,
93     th32ModuleID: ::DWORD,
94     th32ProcessID: ::DWORD,
95     GlblcntUsage: ::DWORD,
96     ProccntUsage: ::DWORD,
97     modBaseAddr: *mut ::BYTE,
98     modBaseSize: ::DWORD,
99     hModule: ::HMODULE,
100     szModule: [::CHAR; ::MAX_MODULE_NAME32 + 1],
101     szExePath: [::CHAR; ::MAX_PATH],
102 }}
103 pub type PMODULEENTRY32 = *mut MODULEENTRY32;
104 pub type LPMODULEENTRY32 = *mut MODULEENTRY32;
105