Release 970305
[wine/multimedia.git] / include / toolhelp.h
blobfbf21a8b5293f8943b383d068945ad62ab893d9c
1 #ifndef __WINE_TOOLHELP_H
2 #define __WINE_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 #pragma pack(1)
13 /* Global heap */
15 typedef struct
17 DWORD dwSize;
18 WORD wcItems;
19 WORD wcItemsFree;
20 WORD wcItemsLRU;
21 } GLOBALINFO;
23 typedef struct
25 DWORD dwSize;
26 DWORD dwAddress;
27 DWORD dwBlockSize;
28 HGLOBAL16 hBlock;
29 WORD wcLock;
30 WORD wcPageLock;
31 WORD wFlags;
32 BOOL16 wHeapPresent;
33 HGLOBAL16 hOwner;
34 WORD wType;
35 WORD wData;
36 DWORD dwNext;
37 DWORD dwNextAlt;
38 } GLOBALENTRY;
40 /* GlobalFirst()/GlobalNext() flags */
41 #define GLOBAL_ALL 0
42 #define GLOBAL_LRU 1
43 #define GLOBAL_FREE 2
45 /* wType values */
46 #define GT_UNKNOWN 0
47 #define GT_DGROUP 1
48 #define GT_DATA 2
49 #define GT_CODE 3
50 #define GT_TASK 4
51 #define GT_RESOURCE 5
52 #define GT_MODULE 6
53 #define GT_FREE 7
54 #define GT_INTERNAL 8
55 #define GT_SENTINEL 9
56 #define GT_BURGERMASTER 10
58 /* wData values */
59 #define GD_USERDEFINED 0
60 #define GD_CURSORCOMPONENT 1
61 #define GD_BITMAP 2
62 #define GD_ICONCOMPONENT 3
63 #define GD_MENU 4
64 #define GD_DIALOG 5
65 #define GD_STRING 6
66 #define GD_FONTDIR 7
67 #define GD_FONT 8
68 #define GD_ACCELERATORS 9
69 #define GD_RCDATA 10
70 #define GD_ERRTABLE 11
71 #define GD_CURSOR 12
72 #define GD_ICON 14
73 #define GD_NAMETABLE 15
74 #define GD_MAX_RESOURCE 15
76 /* wFlags values */
77 #define GF_PDB_OWNER 0x0100 /* Low byte is KERNEL flags */
79 BOOL16 GlobalInfo( GLOBALINFO *pInfo );
80 BOOL16 GlobalFirst( GLOBALENTRY *pGlobal, WORD wFlags );
81 BOOL16 GlobalNext( GLOBALENTRY *pGlobal, WORD wFlags) ;
82 BOOL16 GlobalEntryHandle( GLOBALENTRY *pGlobal, HGLOBAL16 hItem );
83 BOOL16 GlobalEntryModule( GLOBALENTRY *pGlobal, HMODULE16 hModule, WORD wSeg );
85 /* Local heap */
87 typedef struct
89 DWORD dwSize;
90 WORD wcItems;
91 } LOCALINFO;
93 typedef struct
95 DWORD dwSize;
96 HLOCAL16 hHandle;
97 WORD wAddress;
98 WORD wSize;
99 WORD wFlags;
100 WORD wcLock;
101 WORD wType;
102 WORD hHeap;
103 WORD wHeapType;
104 WORD wNext;
105 } LOCALENTRY;
107 /* wHeapType values */
108 #define NORMAL_HEAP 0
109 #define USER_HEAP 1
110 #define GDI_HEAP 2
112 /* wFlags values */
113 #define LF_FIXED 1
114 #define LF_FREE 2
115 #define LF_MOVEABLE 4
117 /* wType values */
118 #define LT_NORMAL 0
119 #define LT_FREE 0xff
120 #define LT_GDI_PEN 1 /* LT_GDI_* is for GDI's heap */
121 #define LT_GDI_BRUSH 2
122 #define LT_GDI_FONT 3
123 #define LT_GDI_PALETTE 4
124 #define LT_GDI_BITMAP 5
125 #define LT_GDI_RGN 6
126 #define LT_GDI_DC 7
127 #define LT_GDI_DISABLED_DC 8
128 #define LT_GDI_METADC 9
129 #define LT_GDI_METAFILE 10
130 #define LT_GDI_MAX LT_GDI_METAFILE
131 #define LT_USER_CLASS 1 /* LT_USER_* is for USER's heap */
132 #define LT_USER_WND 2
133 #define LT_USER_STRING 3
134 #define LT_USER_MENU 4
135 #define LT_USER_CLIP 5
136 #define LT_USER_CBOX 6
137 #define LT_USER_PALETTE 7
138 #define LT_USER_ED 8
139 #define LT_USER_BWL 9
140 #define LT_USER_OWNERDRAW 10
141 #define LT_USER_SPB 11
142 #define LT_USER_CHECKPOINT 12
143 #define LT_USER_DCE 13
144 #define LT_USER_MWP 14
145 #define LT_USER_PROP 15
146 #define LT_USER_LBIV 16
147 #define LT_USER_MISC 17
148 #define LT_USER_ATOMS 18
149 #define LT_USER_LOCKINPUTSTATE 19
150 #define LT_USER_HOOKLIST 20
151 #define LT_USER_USERSEEUSERDOALLOC 21
152 #define LT_USER_HOTKEYLIST 22
153 #define LT_USER_POPUPMENU 23
154 #define LT_USER_HANDLETABLE 32
155 #define LT_USER_MAX LT_USER_HANDLETABLE
157 BOOL16 LocalInfo( LOCALINFO *pLocalInfo, HGLOBAL16 handle );
158 BOOL16 LocalFirst( LOCALENTRY *pLocalEntry, HGLOBAL16 handle );
159 BOOL16 LocalNext( LOCALENTRY *pLocalEntry );
162 /* modules */
164 typedef struct
166 DWORD dwSize;
167 char szModule[MAX_MODULE_NAME + 1];
168 HMODULE16 hModule;
169 WORD wcUsage;
170 char szExePath[MAX_PATH + 1];
171 HANDLE16 wNext;
172 } MODULEENTRY, *LPMODULEENTRY;
174 BOOL16 ModuleFirst(MODULEENTRY *lpModule);
175 BOOL16 ModuleNext(MODULEENTRY *lpModule);
176 BOOL16 ModuleFindName(MODULEENTRY *lpModule, LPCSTR lpstrName);
177 BOOL16 ModuleFindHandle(MODULEENTRY *lpModule, HMODULE16 hModule);
179 /* tasks */
181 typedef struct
183 DWORD dwSize;
184 HTASK16 hTask;
185 HTASK16 hTaskParent;
186 HINSTANCE16 hInst;
187 HMODULE16 hModule;
188 WORD wSS;
189 WORD wSP;
190 WORD wStackTop;
191 WORD wStackMinimum;
192 WORD wStackBottom;
193 WORD wcEvents;
194 HGLOBAL16 hQueue;
195 char szModule[MAX_MODULE_NAME + 1];
196 WORD wPSPOffset;
197 HANDLE16 hNext;
198 } TASKENTRY, *LPTASKENTRY;
200 BOOL16 TaskFirst(LPTASKENTRY lpTask);
201 BOOL16 TaskNext(LPTASKENTRY lpTask);
202 BOOL16 TaskFindHandle(LPTASKENTRY lpTask, HTASK16 hTask);
203 DWORD TaskSetCSIP(HTASK16 hTask, WORD wCS, WORD wIP);
204 DWORD TaskGetCSIP(HTASK16 hTask);
205 BOOL16 TaskSwitch(HTASK16 hTask, DWORD dwNewCSIP);
207 /* mem info */
209 typedef struct tagMEMMANINFO {
210 DWORD dwSize;
211 DWORD dwLargestFreeBlock;
212 DWORD dwMaxPagesAvailable;
213 DWORD dwMaxPagesLockable;
214 DWORD dwTotalLinearSpace;
215 DWORD dwTotalUnlockedPages;
216 DWORD dwFreePages;
217 DWORD dwTotalPages;
218 DWORD dwFreeLinearSpace;
219 DWORD dwSwapFilePages;
220 WORD wPageSize;
221 } MEMMANINFO;
222 typedef MEMMANINFO *LPMEMMANINFO;
224 typedef struct
226 DWORD dwSize;
227 WORD wUserFreePercent;
228 WORD wGDIFreePercent;
229 HGLOBAL16 hUserSegment;
230 HGLOBAL16 hGDISegment;
231 } SYSHEAPINFO;
233 BOOL16 MemManInfo(LPMEMMANINFO lpEnhMode);
234 BOOL16 SystemHeapInfo( SYSHEAPINFO *pHeapInfo );
236 /* timer info */
238 typedef struct tagTIMERINFO {
239 DWORD dwSize;
240 DWORD dwmsSinceStart;
241 DWORD dwmsThisVM;
242 } TIMERINFO;
244 BOOL16 TimerCount( TIMERINFO *pTimerInfo );
246 /* Window classes */
248 typedef struct
250 DWORD dwSize;
251 HMODULE16 hInst; /* This is really an hModule */
252 char szClassName[MAX_CLASSNAME + 1];
253 HANDLE16 wNext;
254 } CLASSENTRY;
256 BOOL16 ClassFirst( CLASSENTRY *pClassEntry );
257 BOOL16 ClassNext( CLASSENTRY *pClassEntry );
260 /* Memory read/write */
262 DWORD MemoryRead( WORD sel, DWORD offset, void *buffer, DWORD count );
263 DWORD MemoryWrite( WORD sel, DWORD offset, void *buffer, DWORD count );
265 /* flags to NotifyRegister() */
266 #define NF_NORMAL 0 /* everything except taskswitches, debugerrors,
267 * debugstrings
269 #define NF_TASKSWITCH 1 /* get taskswitch information */
270 #define NF_RIP 2 /* get debugerrors of system */
272 BOOL16 NotifyRegister(HTASK16 htask,FARPROC16 lpfnCallback,WORD wFlags);
274 #define NFY_UNKNOWN 0
275 #define NFY_LOADSEG 1
276 /* DATA is a pointer to following struct: */
277 struct {
278 DWORD dwSize;
279 WORD wSelector;
280 WORD wSegNum;
281 WORD wType; /* bit 0 set if this is a code segment */
282 WORD wcInstance; /* only valid for data segment */
283 } NFYLOADSEG;
284 /* called when freeing a segment. LOWORD(dwData) is the freed selector */
285 #define NFY_FREESEG 2
287 /* called when loading/starting a DLL */
288 #define NFY_STARTDLL 3
289 struct {
290 DWORD dwSize;
291 HMODULE16 hModule;
292 WORD wCS;
293 WORD wIP;
294 } NFYSTARTDLL;
296 /* called when starting a task. dwData is CS:IP */
297 #define NFY_STARTTASK 4
299 /* called when a task terminates. dwData is the return code */
300 #define NFY_EXITTASK 5
302 /* called when module is removed. LOWORD(dwData) is the handle */
303 #define NFY_DELMODULE 6
305 /* RIP? debugevent */
306 #define NFY_RIP 7
307 struct {
308 DWORD dwSize;
309 WORD wIP;
310 WORD wCS;
311 WORD wSS;
312 WORD wBP;
313 WORD wExitCode;
314 } NFYRIP;
316 /* called before (after?) switching to a task
317 * no data, callback should call GetCurrentTask
319 #define NFY_TASKIN 8
321 /* called before(after?) switching from a task
322 * no data, callback should call GetCurrentTask
324 #define NFY_TASKOUT 9
326 /* returns ASCII input value, dwData not set */
327 #define NFY_INCHAR 10
329 /* output debugstring (pointed to by dwData) */
330 #define NFY_OUTSTRING 11
332 /* log errors */
333 #define NFY_LOGERROR 12
334 struct {
335 DWORD dwSize;
336 UINT16 wErrCode;
337 VOID *lpInfo; /* depends on wErrCode */
338 } NFYLOGERROR;
340 /* called for parameter errors? */
341 #define NFY_LOGPARAMERROR 13
342 struct {
343 DWORD dwSize;
344 UINT16 wErrCode;
345 FARPROC16 lpfnErrorAddr;
346 void **lpBadParam;
347 } NFYLOGPARAMERROR;
349 #pragma pack(4)
351 #endif /* __WINE_TOOLHELP_H */