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