1 /** 2 * @file tlhelp32.h 3 * Copyright 2012, 2013 MinGW.org project 4 * 5 * Permission is hereby granted, free of charge, to any person obtaining a 6 * copy of this software and associated documentation files (the "Software"), 7 * to deal in the Software without restriction, including without limitation 8 * the rights to use, copy, modify, merge, publish, distribute, sublicense, 9 * and/or sell copies of the Software, and to permit persons to whom the 10 * Software is furnished to do so, subject to the following conditions: 11 * 12 * The above copyright notice and this permission notice (including the next 13 * paragraph) shall be included in all copies or substantial portions of the 14 * Software. 15 * 16 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 21 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 22 * DEALINGS IN THE SOFTWARE. 23 */ 24 /* Written by Mumit Khan <khan@nanotech.wisc.edu> */ 25 #ifndef _TLHELP32_H 26 #define _TLHELP32_H 27 #pragma GCC system_header 28 #include <_mingw.h> 29 30 #ifdef __cplusplus 31 extern "C" { 32 #endif 33 34 #define HF32_DEFAULT 1 35 #define HF32_SHARED 2 36 #define LF32_FIXED 0x1 37 #define LF32_FREE 0x2 38 #define LF32_MOVEABLE 0x4 39 #define MAX_MODULE_NAME32 255 40 #define TH32CS_SNAPHEAPLIST 0x1 41 #define TH32CS_SNAPPROCESS 0x2 42 #define TH32CS_SNAPTHREAD 0x4 43 #define TH32CS_SNAPMODULE 0x8 44 #define TH32CS_SNAPALL (TH32CS_SNAPHEAPLIST|TH32CS_SNAPPROCESS|TH32CS_SNAPTHREAD|TH32CS_SNAPMODULE) 45 #define TH32CS_INHERIT 0x80000000 46 typedef struct tagHEAPLIST32 { 47 DWORD dwSize; 48 DWORD th32ProcessID; 49 DWORD th32HeapID; 50 DWORD dwFlags; 51 } HEAPLIST32,*PHEAPLIST32,*LPHEAPLIST32; 52 typedef struct tagHEAPENTRY32 { 53 DWORD dwSize; 54 HANDLE hHandle; 55 DWORD dwAddress; 56 DWORD dwBlockSize; 57 DWORD dwFlags; 58 DWORD dwLockCount; 59 DWORD dwResvd; 60 DWORD th32ProcessID; 61 DWORD th32HeapID; 62 } HEAPENTRY32,*PHEAPENTRY32,*LPHEAPENTRY32; 63 typedef struct tagPROCESSENTRY32W { 64 DWORD dwSize; 65 DWORD cntUsage; 66 DWORD th32ProcessID; 67 DWORD th32DefaultHeapID; 68 DWORD th32ModuleID; 69 DWORD cntThreads; 70 DWORD th32ParentProcessID; 71 LONG pcPriClassBase; 72 DWORD dwFlags; 73 WCHAR szExeFile[MAX_PATH]; 74 } PROCESSENTRY32W,*PPROCESSENTRY32W,*LPPROCESSENTRY32W; 75 typedef struct tagPROCESSENTRY32 { 76 DWORD dwSize; 77 DWORD cntUsage; 78 DWORD th32ProcessID; 79 DWORD th32DefaultHeapID; 80 DWORD th32ModuleID; 81 DWORD cntThreads; 82 DWORD th32ParentProcessID; 83 LONG pcPriClassBase; 84 DWORD dwFlags; 85 CHAR szExeFile[MAX_PATH]; 86 } PROCESSENTRY32,*PPROCESSENTRY32,*LPPROCESSENTRY32; 87 typedef struct tagTHREADENTRY32 { 88 DWORD dwSize; 89 DWORD cntUsage; 90 DWORD th32ThreadID; 91 DWORD th32OwnerProcessID; 92 LONG tpBasePri; 93 LONG tpDeltaPri; 94 DWORD dwFlags; 95 } THREADENTRY32,*PTHREADENTRY32,*LPTHREADENTRY32; 96 typedef struct tagMODULEENTRY32W { 97 DWORD dwSize; 98 DWORD th32ModuleID; 99 DWORD th32ProcessID; 100 DWORD GlblcntUsage; 101 DWORD ProccntUsage; 102 BYTE *modBaseAddr; 103 DWORD modBaseSize; 104 HMODULE hModule; 105 WCHAR szModule[MAX_MODULE_NAME32 + 1]; 106 WCHAR szExePath[MAX_PATH]; 107 } MODULEENTRY32W,*PMODULEENTRY32W,*LPMODULEENTRY32W; 108 typedef struct tagMODULEENTRY32 { 109 DWORD dwSize; 110 DWORD th32ModuleID; 111 DWORD th32ProcessID; 112 DWORD GlblcntUsage; 113 DWORD ProccntUsage; 114 BYTE *modBaseAddr; 115 DWORD modBaseSize; 116 HMODULE hModule; 117 char szModule[MAX_MODULE_NAME32 + 1]; 118 char szExePath[MAX_PATH]; 119 } MODULEENTRY32,*PMODULEENTRY32,*LPMODULEENTRY32; 120 BOOL WINAPI Heap32First(LPHEAPENTRY32,DWORD,DWORD); 121 BOOL WINAPI Heap32ListFirst(HANDLE,LPHEAPLIST32); 122 BOOL WINAPI Heap32ListNext(HANDLE,LPHEAPLIST32); 123 BOOL WINAPI Heap32Next(LPHEAPENTRY32); 124 BOOL WINAPI Module32First(HANDLE,LPMODULEENTRY32); 125 BOOL WINAPI Module32FirstW(HANDLE,LPMODULEENTRY32W); 126 BOOL WINAPI Module32Next(HANDLE,LPMODULEENTRY32); 127 BOOL WINAPI Module32NextW(HANDLE,LPMODULEENTRY32W); 128 BOOL WINAPI Process32First(HANDLE,LPPROCESSENTRY32); 129 BOOL WINAPI Process32FirstW(HANDLE,LPPROCESSENTRY32W); 130 BOOL WINAPI Process32Next(HANDLE,LPPROCESSENTRY32); 131 BOOL WINAPI Process32NextW(HANDLE,LPPROCESSENTRY32W); 132 BOOL WINAPI Thread32First(HANDLE,LPTHREADENTRY32); 133 BOOL WINAPI Thread32Next(HANDLE,LPTHREADENTRY32); 134 BOOL WINAPI Toolhelp32ReadProcessMemory(DWORD,LPCVOID,LPVOID,DWORD,LPDWORD); 135 HANDLE WINAPI CreateToolhelp32Snapshot(DWORD,DWORD); 136 137 /* Cannot use __AW() since there is no A version. */ 138 #ifdef UNICODE 139 #define LPMODULEENTRY32 LPMODULEENTRY32W 140 #define LPPROCESSENTRY32 LPPROCESSENTRY32W 141 #define MODULEENTRY32 MODULEENTRY32W 142 #define Module32First Module32FirstW 143 #define Module32Next Module32NextW 144 #define PMODULEENTRY32 PMODULEENTRY32W 145 #define PPROCESSENTRY32 PPROCESSENTRY32W 146 #define PROCESSENTRY32 PROCESSENTRY32W 147 #define Process32First Process32FirstW 148 #define Process32Next Process32NextW 149 #endif /* UNICODE */ 150 151 #ifdef __cplusplus 152 } 153 #endif 154 155 #endif /* _TLHELP32_H */ 156