2 * Copyright (C) the Wine project
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the Free Software
16 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19 #ifndef __WINE_TOOLHELP_H
20 #define __WINE_TOOLHELP_H
23 #include <wine/windef16.h>
26 #define MAX_MODULE_NAME 9
27 #define MAX_PATH16 255
28 #define MAX_CLASSNAME 255
59 /* GlobalFirst()/GlobalNext() flags */
75 #define GT_BURGERMASTER 10
78 #define GD_USERDEFINED 0
79 #define GD_CURSORCOMPONENT 1
81 #define GD_ICONCOMPONENT 3
87 #define GD_ACCELERATORS 9
89 #define GD_ERRTABLE 11
92 #define GD_NAMETABLE 15
93 #define GD_MAX_RESOURCE 15
96 #define GF_PDB_OWNER 0x0100 /* Low byte is KERNEL flags */
98 WORD WINAPI
GlobalHandleToSel16( HGLOBAL16 handle
);
99 BOOL16 WINAPI
GlobalInfo16( GLOBALINFO
*pInfo
);
100 BOOL16 WINAPI
GlobalFirst16( GLOBALENTRY
*pGlobal
, WORD wFlags
);
101 BOOL16 WINAPI
GlobalNext16( GLOBALENTRY
*pGlobal
, WORD wFlags
) ;
102 BOOL16 WINAPI
GlobalEntryHandle16( GLOBALENTRY
*pGlobal
, HGLOBAL16 hItem
);
103 BOOL16 WINAPI
GlobalEntryModule16( GLOBALENTRY
*pGlobal
, HMODULE16 hModule
,
106 /* FIXME: Wine internal functions */
107 extern HGLOBAL16
GLOBAL_CreateBlock( UINT16 flags
, const void *ptr
, DWORD size
,
108 HGLOBAL16 hOwner
, unsigned char selflags
);
109 extern BOOL16
GLOBAL_FreeBlock( HGLOBAL16 handle
);
110 extern BOOL16
GLOBAL_MoveBlock( HGLOBAL16 handle
, const void *ptr
, DWORD size
);
111 extern HGLOBAL16
GLOBAL_Alloc( WORD flags
, DWORD size
, HGLOBAL16 hOwner
, unsigned char selflags
);
135 /* wHeapType values */
136 #define NORMAL_HEAP 0
143 #define LF_MOVEABLE 4
148 #define LT_GDI_PEN 1 /* LT_GDI_* is for GDI's heap */
149 #define LT_GDI_BRUSH 2
150 #define LT_GDI_FONT 3
151 #define LT_GDI_PALETTE 4
152 #define LT_GDI_BITMAP 5
155 #define LT_GDI_DISABLED_DC 8
156 #define LT_GDI_METADC 9
157 #define LT_GDI_METAFILE 10
158 #define LT_GDI_MAX LT_GDI_METAFILE
159 #define LT_USER_CLASS 1 /* LT_USER_* is for USER's heap */
160 #define LT_USER_WND 2
161 #define LT_USER_STRING 3
162 #define LT_USER_MENU 4
163 #define LT_USER_CLIP 5
164 #define LT_USER_CBOX 6
165 #define LT_USER_PALETTE 7
167 #define LT_USER_BWL 9
168 #define LT_USER_OWNERDRAW 10
169 #define LT_USER_SPB 11
170 #define LT_USER_CHECKPOINT 12
171 #define LT_USER_DCE 13
172 #define LT_USER_MWP 14
173 #define LT_USER_PROP 15
174 #define LT_USER_LBIV 16
175 #define LT_USER_MISC 17
176 #define LT_USER_ATOMS 18
177 #define LT_USER_LOCKINPUTSTATE 19
178 #define LT_USER_HOOKLIST 20
179 #define LT_USER_USERSEEUSERDOALLOC 21
180 #define LT_USER_HOTKEYLIST 22
181 #define LT_USER_POPUPMENU 23
182 #define LT_USER_HANDLETABLE 32
183 #define LT_USER_MAX LT_USER_HANDLETABLE
185 BOOL16 WINAPI
LocalInfo16( LOCALINFO
*pLocalInfo
, HGLOBAL16 handle
);
186 BOOL16 WINAPI
LocalFirst16( LOCALENTRY
*pLocalEntry
, HGLOBAL16 handle
);
187 BOOL16 WINAPI
LocalNext16( LOCALENTRY
*pLocalEntry
);
189 /* Local 32-bit heap */
193 DWORD dwSize
; /* 00 */
194 DWORD dwMemReserved
; /* 04 */
195 DWORD dwMemCommitted
; /* 08 */
196 DWORD dwTotalFree
; /* 0C */
197 DWORD dwLargestFreeBlock
; /* 10 */
198 DWORD dwcFreeHandles
; /* 14 */
203 DWORD dwSize
; /* 00 */
204 WORD hHandle
; /* 04 */
205 DWORD dwAddress
; /* 06 */
206 DWORD dwSizeBlock
; /* 0A */
207 WORD wFlags
; /* 0E */
210 WORD wHeapType
; /* 14 */
211 DWORD dwNext
; /* 16 */
212 DWORD dwNextAlt
; /* 1A */
215 /* LOCAL32ENTRY.wHeapType flags same as LOCALENTRY.wHeapType flags */
216 /* LOCAL32ENTRY.wFlags same as LOCALENTRY.wFlags */
217 /* LOCAL32ENTRY.wType same as LOCALENTRY.wType */
219 BOOL16 WINAPI
Local32Info16( LOCAL32INFO
*pLocal32Info
, HGLOBAL16 handle
);
220 BOOL16 WINAPI
Local32First16( LOCAL32ENTRY
*pLocal32Entry
, HGLOBAL16 handle
);
221 BOOL16 WINAPI
Local32Next16( LOCAL32ENTRY
*pLocal32Entry
);
229 char szModule
[MAX_MODULE_NAME
+ 1];
232 char szExePath
[MAX_PATH16
+ 1];
234 } MODULEENTRY
, *LPMODULEENTRY
;
236 BOOL16 WINAPI
ModuleFirst16(MODULEENTRY
*lpModule
);
237 BOOL16 WINAPI
ModuleNext16(MODULEENTRY
*lpModule
);
238 BOOL16 WINAPI
ModuleFindName16(MODULEENTRY
*lpModule
, LPCSTR lpstrName
);
239 BOOL16 WINAPI
ModuleFindHandle16(MODULEENTRY
*lpModule
, HMODULE16 hModule
);
257 char szModule
[MAX_MODULE_NAME
+ 1];
260 } TASKENTRY
, *LPTASKENTRY
;
262 BOOL16 WINAPI
TaskFirst16(LPTASKENTRY lpTask
);
263 BOOL16 WINAPI
TaskNext16(LPTASKENTRY lpTask
);
264 BOOL16 WINAPI
TaskFindHandle16(LPTASKENTRY lpTask
, HTASK16 hTask
);
265 DWORD WINAPI
TaskSetCSIP(HTASK16 hTask
, WORD wCS
, WORD wIP
);
266 DWORD WINAPI
TaskGetCSIP(HTASK16 hTask
);
267 BOOL16 WINAPI
TaskSwitch(HTASK16 hTask
, DWORD dwNewCSIP
);
269 /* flag for TerminateApp16() */
274 typedef struct tagMEMMANINFO
{
276 DWORD dwLargestFreeBlock
;
277 DWORD dwMaxPagesAvailable
;
278 DWORD dwMaxPagesLockable
;
279 DWORD dwTotalLinearSpace
;
280 DWORD dwTotalUnlockedPages
;
283 DWORD dwFreeLinearSpace
;
284 DWORD dwSwapFilePages
;
287 typedef MEMMANINFO
*LPMEMMANINFO
;
292 WORD wUserFreePercent
;
293 WORD wGDIFreePercent
;
294 HGLOBAL16 hUserSegment
;
295 HGLOBAL16 hGDISegment
;
298 BOOL16 WINAPI
MemManInfo16(LPMEMMANINFO lpEnhMode
);
299 BOOL16 WINAPI
SystemHeapInfo16( SYSHEAPINFO
*pHeapInfo
);
303 typedef struct tagTIMERINFO
{
305 DWORD dwmsSinceStart
;
309 BOOL16 WINAPI
TimerCount16( TIMERINFO
*pTimerInfo
);
316 HMODULE16 hInst
; /* This is really an hModule */
317 char szClassName
[MAX_CLASSNAME
+ 1];
321 BOOL16 WINAPI
ClassFirst16( CLASSENTRY
*pClassEntry
);
322 BOOL16 WINAPI
ClassNext16( CLASSENTRY
*pClassEntry
);
325 /* Memory read/write */
327 DWORD WINAPI
MemoryRead16( WORD sel
, DWORD offset
, void *buffer
, DWORD count
);
328 DWORD WINAPI
MemoryWrite16( WORD sel
, DWORD offset
, void *buffer
, DWORD count
);
330 /* flags to NotifyRegister() */
331 #define NF_NORMAL 0 /* everything except taskswitches, debugerrors,
334 #define NF_TASKSWITCH 1 /* get taskswitch information */
335 #define NF_RIP 2 /* get debugerrors of system */
337 BOOL16 WINAPI
NotifyRegister16(HTASK16 htask
,FARPROC16 lpfnCallback
,WORD wFlags
);
339 #define NFY_UNKNOWN 0
340 #define NFY_LOADSEG 1
341 /* DATA is a pointer to following struct: */
346 WORD wType
; /* bit 0 set if this is a code segment */
347 WORD wcInstance
; /* only valid for data segment */
349 /* called when freeing a segment. LOWORD(dwData) is the freed selector */
350 #define NFY_FREESEG 2
352 /* called when loading/starting a DLL */
353 #define NFY_STARTDLL 3
361 /* called when starting a task. dwData is CS:IP */
362 #define NFY_STARTTASK 4
364 /* called when a task terminates. dwData is the return code */
365 #define NFY_EXITTASK 5
367 /* called when module is removed. LOWORD(dwData) is the handle */
368 #define NFY_DELMODULE 6
370 /* RIP? debugevent */
381 /* called before (after?) switching to a task
382 * no data, callback should call GetCurrentTask
386 /* called before(after?) switching from a task
387 * no data, callback should call GetCurrentTask
389 #define NFY_TASKOUT 9
391 /* returns ASCII input value, dwData not set */
392 #define NFY_INCHAR 10
394 /* output debugstring (pointed to by dwData) */
395 #define NFY_OUTSTRING 11
398 #define NFY_LOGERROR 12
402 VOID
*lpInfo
; /* depends on wErrCode */
405 /* called for parameter errors? */
406 #define NFY_LOGPARAMERROR 13
410 FARPROC16 lpfnErrorAddr
;
428 #endif /* __WINE_TOOLHELP_H */