Release 961215
[wine/multimedia.git] / include / toolhelp.h
blobc1d98364b11fa6310c5084627c55d00805a0e2e7
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 HGLOBAL16 hBlock;
27 WORD wcLock;
28 WORD wcPageLock;
29 WORD wFlags;
30 BOOL16 wHeapPresent;
31 HGLOBAL16 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 BOOL16 GlobalInfo( GLOBALINFO *pInfo );
78 BOOL16 GlobalFirst( GLOBALENTRY *pGlobal, WORD wFlags );
79 BOOL16 GlobalNext( GLOBALENTRY *pGlobal, WORD wFlags) ;
80 BOOL16 GlobalEntryHandle( GLOBALENTRY *pGlobal, HGLOBAL16 hItem );
81 BOOL16 GlobalEntryModule( GLOBALENTRY *pGlobal, HMODULE16 hModule, WORD wSeg );
83 /* Local heap */
85 typedef struct
87 DWORD dwSize;
88 WORD wcItems;
89 } LOCALINFO;
91 typedef struct
93 DWORD dwSize;
94 HLOCAL16 hHandle;
95 WORD wAddress;
96 WORD wSize;
97 WORD wFlags;
98 WORD wcLock;
99 WORD wType;
100 WORD hHeap;
101 WORD wHeapType;
102 WORD wNext;
103 } LOCALENTRY;
105 /* wHeapType values */
106 #define NORMAL_HEAP 0
107 #define USER_HEAP 1
108 #define GDI_HEAP 2
110 /* wFlags values */
111 #define LF_FIXED 1
112 #define LF_FREE 2
113 #define LF_MOVEABLE 4
115 /* wType values */
116 #define LT_NORMAL 0
117 #define LT_FREE 0xff
118 #define LT_GDI_PEN 1 /* LT_GDI_* is for GDI's heap */
119 #define LT_GDI_BRUSH 2
120 #define LT_GDI_FONT 3
121 #define LT_GDI_PALETTE 4
122 #define LT_GDI_BITMAP 5
123 #define LT_GDI_RGN 6
124 #define LT_GDI_DC 7
125 #define LT_GDI_DISABLED_DC 8
126 #define LT_GDI_METADC 9
127 #define LT_GDI_METAFILE 10
128 #define LT_GDI_MAX LT_GDI_METAFILE
129 #define LT_USER_CLASS 1 /* LT_USER_* is for USER's heap */
130 #define LT_USER_WND 2
131 #define LT_USER_STRING 3
132 #define LT_USER_MENU 4
133 #define LT_USER_CLIP 5
134 #define LT_USER_CBOX 6
135 #define LT_USER_PALETTE 7
136 #define LT_USER_ED 8
137 #define LT_USER_BWL 9
138 #define LT_USER_OWNERDRAW 10
139 #define LT_USER_SPB 11
140 #define LT_USER_CHECKPOINT 12
141 #define LT_USER_DCE 13
142 #define LT_USER_MWP 14
143 #define LT_USER_PROP 15
144 #define LT_USER_LBIV 16
145 #define LT_USER_MISC 17
146 #define LT_USER_ATOMS 18
147 #define LT_USER_LOCKINPUTSTATE 19
148 #define LT_USER_HOOKLIST 20
149 #define LT_USER_USERSEEUSERDOALLOC 21
150 #define LT_USER_HOTKEYLIST 22
151 #define LT_USER_POPUPMENU 23
152 #define LT_USER_HANDLETABLE 32
153 #define LT_USER_MAX LT_USER_HANDLETABLE
155 BOOL16 LocalInfo( LOCALINFO *pLocalInfo, HGLOBAL16 handle );
156 BOOL16 LocalFirst( LOCALENTRY *pLocalEntry, HGLOBAL16 handle );
157 BOOL16 LocalNext( LOCALENTRY *pLocalEntry );
160 /* modules */
162 typedef struct
164 DWORD dwSize;
165 char szModule[MAX_MODULE_NAME + 1];
166 HMODULE16 hModule;
167 WORD wcUsage;
168 char szExePath[MAX_PATH + 1];
169 HANDLE16 wNext;
170 } MODULEENTRY, *LPMODULEENTRY;
172 BOOL16 ModuleFirst(MODULEENTRY *lpModule);
173 BOOL16 ModuleNext(MODULEENTRY *lpModule);
174 BOOL16 ModuleFindName(MODULEENTRY *lpModule, LPCSTR lpstrName);
175 BOOL16 ModuleFindHandle(MODULEENTRY *lpModule, HMODULE16 hModule);
177 /* tasks */
179 typedef struct
181 DWORD dwSize;
182 HTASK16 hTask;
183 HTASK16 hTaskParent;
184 HINSTANCE16 hInst;
185 HMODULE16 hModule;
186 WORD wSS;
187 WORD wSP;
188 WORD wStackTop;
189 WORD wStackMinimum;
190 WORD wStackBottom;
191 WORD wcEvents;
192 HGLOBAL16 hQueue;
193 char szModule[MAX_MODULE_NAME + 1];
194 WORD wPSPOffset;
195 HANDLE16 hNext;
196 } TASKENTRY, *LPTASKENTRY;
198 BOOL16 TaskFirst(LPTASKENTRY lpTask);
199 BOOL16 TaskNext(LPTASKENTRY lpTask);
200 BOOL16 TaskFindHandle(LPTASKENTRY lpTask, HTASK16 hTask);
201 DWORD TaskSetCSIP(HTASK16 hTask, WORD wCS, WORD wIP);
202 DWORD TaskGetCSIP(HTASK16 hTask);
203 BOOL16 TaskSwitch(HTASK16 hTask, DWORD dwNewCSIP);
205 /* mem info */
207 typedef struct tagMEMMANINFO {
208 DWORD dwSize;
209 DWORD dwLargestFreeBlock;
210 DWORD dwMaxPagesAvailable;
211 DWORD dwMaxPagesLockable;
212 DWORD dwTotalLinearSpace;
213 DWORD dwTotalUnlockedPages;
214 DWORD dwFreePages;
215 DWORD dwTotalPages;
216 DWORD dwFreeLinearSpace;
217 DWORD dwSwapFilePages;
218 WORD wPageSize;
219 } MEMMANINFO;
220 typedef MEMMANINFO *LPMEMMANINFO;
222 typedef struct
224 DWORD dwSize;
225 WORD wUserFreePercent;
226 WORD wGDIFreePercent;
227 HGLOBAL16 hUserSegment;
228 HGLOBAL16 hGDISegment;
229 } SYSHEAPINFO;
231 BOOL16 MemManInfo(LPMEMMANINFO lpEnhMode);
232 BOOL16 SystemHeapInfo( SYSHEAPINFO *pHeapInfo );
234 /* timer info */
236 typedef struct tagTIMERINFO {
237 DWORD dwSize;
238 DWORD dwmsSinceStart;
239 DWORD dwmsThisVM;
240 } TIMERINFO;
242 BOOL16 TimerCount( TIMERINFO *pTimerInfo );
244 /* Window classes */
246 typedef struct
248 DWORD dwSize;
249 HMODULE16 hInst; /* This is really an hModule */
250 char szClassName[MAX_CLASSNAME + 1];
251 HANDLE16 wNext;
252 } CLASSENTRY;
254 BOOL16 ClassFirst( CLASSENTRY *pClassEntry );
255 BOOL16 ClassNext( CLASSENTRY *pClassEntry );
258 /* Memory read/write */
260 DWORD MemoryRead( WORD sel, DWORD offset, void *buffer, DWORD count );
261 DWORD MemoryWrite( WORD sel, DWORD offset, void *buffer, DWORD count );
263 /* flags to NotifyRegister() */
264 #define NF_NORMAL 0 /* everything except taskswitches, debugerrors,
265 * debugstrings
267 #define NF_TASKSWITCH 1 /* get taskswitch information */
268 #define NF_RIP 2 /* get debugerrors of system */
270 BOOL16 NotifyRegister(HTASK16 htask,FARPROC16 lpfnCallback,WORD wFlags);
272 #define NFY_UNKNOWN 0
273 #define NFY_LOADSEG 1
274 /* DATA is a pointer to following struct: */
275 struct {
276 DWORD dwSize;
277 WORD wSelector;
278 WORD wSegNum;
279 WORD wType; /* bit 0 set if this is a code segment */
280 WORD wcInstance; /* only valid for data segment */
281 } NFYLOADSEG;
282 /* called when freeing a segment. LOWORD(dwData) is the freed selector */
283 #define NFY_FREESEG 2
285 /* called when loading/starting a DLL */
286 #define NFY_STARTDLL 3
287 struct {
288 DWORD dwSize;
289 HMODULE16 hModule;
290 WORD wCS;
291 WORD wIP;
292 } NFYSTARTDLL;
294 /* called when starting a task. dwData is CS:IP */
295 #define NFY_STARTTASK 4
297 /* called when a task terminates. dwData is the return code */
298 #define NFY_EXITTASK 5
300 /* called when module is removed. LOWORD(dwData) is the handle */
301 #define NFY_DELMODULE 6
303 /* RIP? debugevent */
304 #define NFY_RIP 7
305 struct {
306 DWORD dwSize;
307 WORD wIP;
308 WORD wCS;
309 WORD wSS;
310 WORD wBP;
311 WORD wExitCode;
312 } NFYRIP;
314 /* called before (after?) switching to a task
315 * no data, callback should call GetCurrentTask
317 #define NFY_TASKIN 8
319 /* called before(after?) switching from a task
320 * no data, callback should call GetCurrentTask
322 #define NFY_TASKOUT 9
324 /* returns ASCII input value, dwData not set */
325 #define NFY_INCHAR 10
327 /* output debugstring (pointed to by dwData) */
328 #define NFY_OUTSTRING 11
330 /* log errors */
331 #define NFY_LOGERROR 12
332 struct {
333 DWORD dwSize;
334 UINT16 wErrCode;
335 VOID *lpInfo; /* depends on wErrCode */
336 } NFYLOGERROR;
338 /* called for parameter errors? */
339 #define NFY_LOGPARAMERROR 13
340 struct {
341 DWORD dwSize;
342 UINT16 wErrCode;
343 FARPROC16 lpfnErrorAddr;
344 void **lpBadParam;
345 } NFYLOGPARAMERROR;
346 #endif /* __TOOLHELP_H */