OSDN Git Service

* NEWS: Add and adjust release notes for 4.0.
[mingw/mingw-org-wsl.git] / include / tlhelp32.h
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 */