Release 951105
[wine.git] / include / toolhelp.h
blob5ffb1b4b78476209b8cdcba2235e775e8372d3a5
1 #ifndef __TOOLHELP_H
2 #define __TOOLHELP_H
4 #include "windows.h"
6 #define MAX_DATA 11
7 #define MAX_MODULE_NAME 9
8 #define MAX_PATH 255
9 #define MAX_CLASSNAME 255
11 /* Global heap */
13 typedef struct
15 DWORD dwSize;
16 WORD wcItems;
17 WORD wcItemsFree;
18 WORD wcItemsLRU;
19 } GLOBALINFO;
21 typedef struct
23 DWORD dwSize;
24 DWORD dwAddress;
25 DWORD dwBlockSize;
26 HGLOBAL hBlock;
27 WORD wcLock;
28 WORD wcPageLock;
29 WORD wFlags;
30 BOOL wHeapPresent;
31 HGLOBAL hOwner;
32 WORD wType;
33 WORD wData;
34 DWORD dwNext;
35 DWORD dwNextAlt;
36 } GLOBALENTRY;
38 /* GlobalFirst()/GlobalNext() flags */
39 #define GLOBAL_ALL 0
40 #define GLOBAL_LRU 1
41 #define GLOBAL_FREE 2
43 /* wType values */
44 #define GT_UNKNOWN 0
45 #define GT_DGROUP 1
46 #define GT_DATA 2
47 #define GT_CODE 3
48 #define GT_TASK 4
49 #define GT_RESOURCE 5
50 #define GT_MODULE 6
51 #define GT_FREE 7
52 #define GT_INTERNAL 8
53 #define GT_SENTINEL 9
54 #define GT_BURGERMASTER 10
56 /* wData values */
57 #define GD_USERDEFINED 0
58 #define GD_CURSORCOMPONENT 1
59 #define GD_BITMAP 2
60 #define GD_ICONCOMPONENT 3
61 #define GD_MENU 4
62 #define GD_DIALOG 5
63 #define GD_STRING 6
64 #define GD_FONTDIR 7
65 #define GD_FONT 8
66 #define GD_ACCELERATORS 9
67 #define GD_RCDATA 10
68 #define GD_ERRTABLE 11
69 #define GD_CURSOR 12
70 #define GD_ICON 14
71 #define GD_NAMETABLE 15
72 #define GD_MAX_RESOURCE 15
74 /* wFlags values */
75 #define GF_PDB_OWNER 0x0100 /* Low byte is KERNEL flags */
77 BOOL GlobalInfo( GLOBALINFO *pInfo );
78 BOOL GlobalFirst( GLOBALENTRY *pGlobal, WORD wFlags );
79 BOOL GlobalNext( GLOBALENTRY *pGlobal, WORD wFlags) ;
80 BOOL GlobalEntryHandle( GLOBALENTRY *pGlobal, HGLOBAL hItem );
81 BOOL GlobalEntryModule( GLOBALENTRY *pGlobal, HMODULE hModule, WORD wSeg );
82 WORD GlobalHandleToSel( HGLOBAL handle );
84 /* Local heap */
86 typedef struct
88 DWORD dwSize;
89 WORD wcItems;
90 } LOCALINFO;
92 typedef struct
94 DWORD dwSize;
95 HLOCAL hHandle;
96 WORD wAddress;
97 WORD wSize;
98 WORD wFlags;
99 WORD wcLock;
100 WORD wType;
101 WORD hHeap;
102 WORD wHeapType;
103 WORD wNext;
104 } LOCALENTRY;
106 /* wHeapType values */
107 #define NORMAL_HEAP 0
108 #define USER_HEAP 1
109 #define GDI_HEAP 2
111 /* wFlags values */
112 #define LF_FIXED 1
113 #define LF_FREE 2
114 #define LF_MOVEABLE 4
116 /* wType values */
117 #define LT_NORMAL 0
118 #define LT_FREE 0xff
119 #define LT_GDI_PEN 1 /* LT_GDI_* is for GDI's heap */
120 #define LT_GDI_BRUSH 2
121 #define LT_GDI_FONT 3
122 #define LT_GDI_PALETTE 4
123 #define LT_GDI_BITMAP 5
124 #define LT_GDI_RGN 6
125 #define LT_GDI_DC 7
126 #define LT_GDI_DISABLED_DC 8
127 #define LT_GDI_METADC 9
128 #define LT_GDI_METAFILE 10
129 #define LT_GDI_MAX LT_GDI_METAFILE
130 #define LT_USER_CLASS 1 /* LT_USER_* is for USER's heap */
131 #define LT_USER_WND 2
132 #define LT_USER_STRING 3
133 #define LT_USER_MENU 4
134 #define LT_USER_CLIP 5
135 #define LT_USER_CBOX 6
136 #define LT_USER_PALETTE 7
137 #define LT_USER_ED 8
138 #define LT_USER_BWL 9
139 #define LT_USER_OWNERDRAW 10
140 #define LT_USER_SPB 11
141 #define LT_USER_CHECKPOINT 12
142 #define LT_USER_DCE 13
143 #define LT_USER_MWP 14
144 #define LT_USER_PROP 15
145 #define LT_USER_LBIV 16
146 #define LT_USER_MISC 17
147 #define LT_USER_ATOMS 18
148 #define LT_USER_LOCKINPUTSTATE 19
149 #define LT_USER_HOOKLIST 20
150 #define LT_USER_USERSEEUSERDOALLOC 21
151 #define LT_USER_HOTKEYLIST 22
152 #define LT_USER_POPUPMENU 23
153 #define LT_USER_HANDLETABLE 32
154 #define LT_USER_MAX LT_USER_HANDLETABLE
156 BOOL LocalInfo( LOCALINFO *pLocalInfo, HGLOBAL handle );
157 BOOL LocalFirst( LOCALENTRY *pLocalEntry, HGLOBAL handle );
158 BOOL LocalNext( LOCALENTRY *pLocalEntry );
161 /* modules */
163 typedef struct {
164 DWORD dwSize;
165 char szModule[MAX_MODULE_NAME + 1];
166 HMODULE hModule;
167 WORD wcUsage;
168 char szExePath[MAX_PATH + 1];
169 HANDLE wNext;
170 } MODULEENTRY;
171 typedef MODULEENTRY *LPMODULEENTRY;
173 BOOL ModuleFirst(MODULEENTRY *lpModule);
174 BOOL ModuleNext(MODULEENTRY *lpModule);
175 BOOL ModuleFindName(MODULEENTRY *lpModule, LPCSTR lpstrName);
176 BOOL ModuleFindHandle(MODULEENTRY *lpModule, HMODULE hModule);
178 /* tasks */
180 typedef struct tagTASKENTRY {
181 DWORD dwSize;
182 HTASK hTask;
183 HTASK hTaskParent;
184 HINSTANCE hInst;
185 HMODULE hModule;
186 WORD wSS;
187 WORD wSP;
188 WORD wStackTop;
189 WORD wStackMinimum;
190 WORD wStackBottom;
191 WORD wcEvents;
192 HGLOBAL hQueue;
193 char szModule[MAX_MODULE_NAME + 1];
194 WORD wPSPOffset;
195 HANDLE hNext;
196 } TASKENTRY;
197 typedef TASKENTRY *LPTASKENTRY;
199 BOOL TaskFirst(LPTASKENTRY lpTask);
200 BOOL TaskNext(LPTASKENTRY lpTask);
201 BOOL TaskFindHandle(LPTASKENTRY lpTask, HTASK hTask);
202 DWORD TaskSetCSIP(HTASK hTask, WORD wCS, WORD wIP);
203 DWORD TaskGetCSIP(HTASK hTask);
204 BOOL TaskSwitch(HTASK hTask, DWORD dwNewCSIP);
206 /* mem info */
208 typedef struct tagMEMMANINFO {
209 DWORD dwSize;
210 DWORD dwLargestFreeBlock;
211 DWORD dwMaxPagesAvailable;
212 DWORD dwMaxPagesLockable;
213 DWORD dwTotalLinearSpace;
214 DWORD dwTotalUnlockedPages;
215 DWORD dwFreePages;
216 DWORD dwTotalPages;
217 DWORD dwFreeLinearSpace;
218 DWORD dwSwapFilePages;
219 WORD wPageSize;
220 } MEMMANINFO;
221 typedef MEMMANINFO *LPMEMMANINFO;
223 typedef struct
225 DWORD dwSize;
226 WORD wUserFreePercent;
227 WORD wGDIFreePercent;
228 HGLOBAL hUserSegment;
229 HGLOBAL hGDISegment;
230 } SYSHEAPINFO;
232 BOOL MemManInfo(LPMEMMANINFO lpEnhMode);
233 BOOL SystemHeapInfo( SYSHEAPINFO *pHeapInfo );
236 /* Window classes */
238 typedef struct
240 DWORD dwSize;
241 HMODULE hInst; /* This is really an hModule */
242 char szClassName[MAX_CLASSNAME + 1];
243 HANDLE wNext;
244 } CLASSENTRY;
246 BOOL ClassFirst( CLASSENTRY *pClassEntry );
247 BOOL ClassNext( CLASSENTRY *pClassEntry );
250 /* Memory read/write */
252 DWORD MemoryRead( WORD sel, DWORD offset, void *buffer, DWORD count );
253 DWORD MemoryWrite( WORD sel, DWORD offset, void *buffer, DWORD count );
256 #endif /* __TOOLHELP_H */