|  | /* | 
|  | * Copyright (C) the Wine project | 
|  | * | 
|  | * This library is free software; you can redistribute it and/or | 
|  | * modify it under the terms of the GNU Lesser General Public | 
|  | * License as published by the Free Software Foundation; either | 
|  | * version 2.1 of the License, or (at your option) any later version. | 
|  | * | 
|  | * This library is distributed in the hope that it will be useful, | 
|  | * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
|  | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | 
|  | * Lesser General Public License for more details. | 
|  | * | 
|  | * You should have received a copy of the GNU Lesser General Public | 
|  | * License along with this library; if not, write to the Free Software | 
|  | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA | 
|  | */ | 
|  |  | 
|  | #ifndef __WINE_TOOLHELP_H | 
|  | #define __WINE_TOOLHELP_H | 
|  |  | 
|  | #include <windef.h> | 
|  | #include <wine/windef16.h> | 
|  |  | 
|  | #define MAX_DATA	11 | 
|  | #define MAX_MODULE_NAME	9 | 
|  | #define MAX_PATH16	255 | 
|  | #define MAX_CLASSNAME	255 | 
|  |  | 
|  | #include <pshpack1.h> | 
|  |  | 
|  | /* Global heap */ | 
|  |  | 
|  | typedef struct | 
|  | { | 
|  | DWORD dwSize; | 
|  | WORD  wcItems; | 
|  | WORD  wcItemsFree; | 
|  | WORD  wcItemsLRU; | 
|  | } GLOBALINFO; | 
|  |  | 
|  | typedef struct | 
|  | { | 
|  | DWORD     dwSize; | 
|  | DWORD     dwAddress; | 
|  | DWORD     dwBlockSize; | 
|  | HGLOBAL16 hBlock; | 
|  | WORD      wcLock; | 
|  | WORD      wcPageLock; | 
|  | WORD      wFlags; | 
|  | BOOL16    wHeapPresent; | 
|  | HGLOBAL16 hOwner; | 
|  | WORD      wType; | 
|  | WORD      wData; | 
|  | DWORD     dwNext; | 
|  | DWORD     dwNextAlt; | 
|  | } GLOBALENTRY; | 
|  |  | 
|  | /* GlobalFirst()/GlobalNext() flags */ | 
|  | #define GLOBAL_ALL      0 | 
|  | #define GLOBAL_LRU      1 | 
|  | #define GLOBAL_FREE     2 | 
|  |  | 
|  | /* wType values */ | 
|  | #define GT_UNKNOWN      0 | 
|  | #define GT_DGROUP       1 | 
|  | #define GT_DATA         2 | 
|  | #define GT_CODE         3 | 
|  | #define GT_TASK         4 | 
|  | #define GT_RESOURCE     5 | 
|  | #define GT_MODULE       6 | 
|  | #define GT_FREE         7 | 
|  | #define GT_INTERNAL     8 | 
|  | #define GT_SENTINEL     9 | 
|  | #define GT_BURGERMASTER 10 | 
|  |  | 
|  | /* wData values */ | 
|  | #define GD_USERDEFINED      0 | 
|  | #define GD_CURSORCOMPONENT  1 | 
|  | #define GD_BITMAP           2 | 
|  | #define GD_ICONCOMPONENT    3 | 
|  | #define GD_MENU             4 | 
|  | #define GD_DIALOG           5 | 
|  | #define GD_STRING           6 | 
|  | #define GD_FONTDIR          7 | 
|  | #define GD_FONT             8 | 
|  | #define GD_ACCELERATORS     9 | 
|  | #define GD_RCDATA           10 | 
|  | #define GD_ERRTABLE         11 | 
|  | #define GD_CURSOR           12 | 
|  | #define GD_ICON             14 | 
|  | #define GD_NAMETABLE        15 | 
|  | #define GD_MAX_RESOURCE     15 | 
|  |  | 
|  | /* wFlags values */ | 
|  | #define GF_PDB_OWNER        0x0100      /* Low byte is KERNEL flags */ | 
|  |  | 
|  | WORD   WINAPI GlobalHandleToSel16( HGLOBAL16 handle ); | 
|  | BOOL16 WINAPI GlobalInfo16( GLOBALINFO *pInfo ); | 
|  | BOOL16 WINAPI GlobalFirst16( GLOBALENTRY *pGlobal, WORD wFlags ); | 
|  | BOOL16 WINAPI GlobalNext16( GLOBALENTRY *pGlobal, WORD wFlags) ; | 
|  | BOOL16 WINAPI GlobalEntryHandle16( GLOBALENTRY *pGlobal, HGLOBAL16 hItem ); | 
|  | BOOL16 WINAPI GlobalEntryModule16( GLOBALENTRY *pGlobal, HMODULE16 hModule, | 
|  | WORD wSeg ); | 
|  |  | 
|  | /* FIXME: Wine internal functions */ | 
|  | extern HGLOBAL16 GLOBAL_CreateBlock( UINT16 flags, const void *ptr, DWORD size, | 
|  | HGLOBAL16 hOwner, unsigned char selflags ); | 
|  | extern BOOL16 GLOBAL_FreeBlock( HGLOBAL16 handle ); | 
|  | extern BOOL16 GLOBAL_MoveBlock( HGLOBAL16 handle, const void *ptr, DWORD size ); | 
|  | extern HGLOBAL16 GLOBAL_Alloc( WORD flags, DWORD size, HGLOBAL16 hOwner, unsigned char selflags ); | 
|  |  | 
|  | /* Local heap */ | 
|  |  | 
|  | typedef struct | 
|  | { | 
|  | DWORD   dwSize; | 
|  | WORD    wcItems; | 
|  | } LOCALINFO; | 
|  |  | 
|  | typedef struct | 
|  | { | 
|  | DWORD   dwSize; | 
|  | HLOCAL16  hHandle; | 
|  | WORD    wAddress; | 
|  | WORD    wSize; | 
|  | WORD    wFlags; | 
|  | WORD    wcLock; | 
|  | WORD    wType; | 
|  | WORD    hHeap; | 
|  | WORD    wHeapType; | 
|  | WORD    wNext; | 
|  | } LOCALENTRY; | 
|  |  | 
|  | /* wHeapType values */ | 
|  | #define NORMAL_HEAP     0 | 
|  | #define USER_HEAP       1 | 
|  | #define GDI_HEAP        2 | 
|  |  | 
|  | /* wFlags values */ | 
|  | #define LF_FIXED        1 | 
|  | #define LF_FREE         2 | 
|  | #define LF_MOVEABLE     4 | 
|  |  | 
|  | /* wType values */ | 
|  | #define LT_NORMAL                   0 | 
|  | #define LT_FREE                     0xff | 
|  | #define LT_GDI_PEN                  1   /* LT_GDI_* is for GDI's heap */ | 
|  | #define LT_GDI_BRUSH                2 | 
|  | #define LT_GDI_FONT                 3 | 
|  | #define LT_GDI_PALETTE              4 | 
|  | #define LT_GDI_BITMAP               5 | 
|  | #define LT_GDI_RGN                  6 | 
|  | #define LT_GDI_DC                   7 | 
|  | #define LT_GDI_DISABLED_DC          8 | 
|  | #define LT_GDI_METADC               9 | 
|  | #define LT_GDI_METAFILE             10 | 
|  | #define LT_GDI_MAX                  LT_GDI_METAFILE | 
|  | #define LT_USER_CLASS               1   /* LT_USER_* is for USER's heap */ | 
|  | #define LT_USER_WND                 2 | 
|  | #define LT_USER_STRING              3 | 
|  | #define LT_USER_MENU                4 | 
|  | #define LT_USER_CLIP                5 | 
|  | #define LT_USER_CBOX                6 | 
|  | #define LT_USER_PALETTE             7 | 
|  | #define LT_USER_ED                  8 | 
|  | #define LT_USER_BWL                 9 | 
|  | #define LT_USER_OWNERDRAW           10 | 
|  | #define LT_USER_SPB                 11 | 
|  | #define LT_USER_CHECKPOINT          12 | 
|  | #define LT_USER_DCE                 13 | 
|  | #define LT_USER_MWP                 14 | 
|  | #define LT_USER_PROP                15 | 
|  | #define LT_USER_LBIV                16 | 
|  | #define LT_USER_MISC                17 | 
|  | #define LT_USER_ATOMS               18 | 
|  | #define LT_USER_LOCKINPUTSTATE      19 | 
|  | #define LT_USER_HOOKLIST            20 | 
|  | #define LT_USER_USERSEEUSERDOALLOC  21 | 
|  | #define LT_USER_HOTKEYLIST          22 | 
|  | #define LT_USER_POPUPMENU           23 | 
|  | #define LT_USER_HANDLETABLE         32 | 
|  | #define LT_USER_MAX                 LT_USER_HANDLETABLE | 
|  |  | 
|  | BOOL16 WINAPI LocalInfo16( LOCALINFO *pLocalInfo, HGLOBAL16 handle ); | 
|  | BOOL16 WINAPI LocalFirst16( LOCALENTRY *pLocalEntry, HGLOBAL16 handle ); | 
|  | BOOL16 WINAPI LocalNext16( LOCALENTRY *pLocalEntry ); | 
|  |  | 
|  | /* Local 32-bit heap */ | 
|  |  | 
|  | typedef struct | 
|  | { | 
|  | DWORD dwSize;                /* 00 */ | 
|  | DWORD dwMemReserved;         /* 04 */ | 
|  | DWORD dwMemCommitted;        /* 08 */ | 
|  | DWORD dwTotalFree;           /* 0C */ | 
|  | DWORD dwLargestFreeBlock;    /* 10 */ | 
|  | DWORD dwcFreeHandles;        /* 14 */ | 
|  | } LOCAL32INFO; | 
|  |  | 
|  | typedef struct | 
|  | { | 
|  | DWORD dwSize;                /* 00 */ | 
|  | WORD hHandle;                /* 04 */ | 
|  | DWORD dwAddress;             /* 06 */ | 
|  | DWORD dwSizeBlock;           /* 0A */ | 
|  | WORD wFlags;                 /* 0E */ | 
|  | WORD wType;                  /* 10 */ | 
|  | WORD hHeap;                  /* 12 */ | 
|  | WORD wHeapType;              /* 14 */ | 
|  | DWORD dwNext;                /* 16 */ | 
|  | DWORD dwNextAlt;             /* 1A */ | 
|  | } LOCAL32ENTRY; | 
|  |  | 
|  | /* LOCAL32ENTRY.wHeapType flags same as LOCALENTRY.wHeapType flags */ | 
|  | /* LOCAL32ENTRY.wFlags same as LOCALENTRY.wFlags */ | 
|  | /* LOCAL32ENTRY.wType same as LOCALENTRY.wType */ | 
|  |  | 
|  | BOOL16 WINAPI Local32Info16( LOCAL32INFO *pLocal32Info, HGLOBAL16 handle ); | 
|  | BOOL16 WINAPI Local32First16( LOCAL32ENTRY *pLocal32Entry, HGLOBAL16 handle ); | 
|  | BOOL16 WINAPI Local32Next16( LOCAL32ENTRY *pLocal32Entry ); | 
|  |  | 
|  |  | 
|  | /* modules */ | 
|  |  | 
|  | typedef struct | 
|  | { | 
|  | DWORD      dwSize; | 
|  | char       szModule[MAX_MODULE_NAME + 1]; | 
|  | HMODULE16  hModule; | 
|  | WORD       wcUsage; | 
|  | char       szExePath[MAX_PATH16 + 1]; | 
|  | HANDLE16   wNext; | 
|  | } MODULEENTRY, *LPMODULEENTRY; | 
|  |  | 
|  | BOOL16 WINAPI ModuleFirst16(MODULEENTRY *lpModule); | 
|  | BOOL16 WINAPI ModuleNext16(MODULEENTRY *lpModule); | 
|  | BOOL16 WINAPI ModuleFindName16(MODULEENTRY *lpModule, LPCSTR lpstrName); | 
|  | BOOL16 WINAPI ModuleFindHandle16(MODULEENTRY *lpModule, HMODULE16 hModule); | 
|  |  | 
|  | /* tasks */ | 
|  |  | 
|  | typedef struct | 
|  | { | 
|  | DWORD        dwSize; | 
|  | HTASK16      hTask; | 
|  | HTASK16      hTaskParent; | 
|  | HINSTANCE16  hInst; | 
|  | HMODULE16    hModule; | 
|  | WORD         wSS; | 
|  | WORD         wSP; | 
|  | WORD         wStackTop; | 
|  | WORD         wStackMinimum; | 
|  | WORD         wStackBottom; | 
|  | WORD         wcEvents; | 
|  | HGLOBAL16    hQueue; | 
|  | char         szModule[MAX_MODULE_NAME + 1]; | 
|  | WORD         wPSPOffset; | 
|  | HANDLE16     hNext; | 
|  | } TASKENTRY, *LPTASKENTRY; | 
|  |  | 
|  | BOOL16 WINAPI TaskFirst16(LPTASKENTRY lpTask); | 
|  | BOOL16 WINAPI TaskNext16(LPTASKENTRY lpTask); | 
|  | BOOL16 WINAPI TaskFindHandle16(LPTASKENTRY lpTask, HTASK16 hTask); | 
|  | DWORD  WINAPI TaskSetCSIP(HTASK16 hTask, WORD wCS, WORD wIP); | 
|  | DWORD  WINAPI TaskGetCSIP(HTASK16 hTask); | 
|  | BOOL16 WINAPI TaskSwitch(HTASK16 hTask, DWORD dwNewCSIP); | 
|  |  | 
|  | /* flag for TerminateApp16() */ | 
|  | #define NO_UAE_BOX     1 | 
|  |  | 
|  | /* mem info */ | 
|  |  | 
|  | typedef struct tagMEMMANINFO { | 
|  | DWORD dwSize; | 
|  | DWORD dwLargestFreeBlock; | 
|  | DWORD dwMaxPagesAvailable; | 
|  | DWORD dwMaxPagesLockable; | 
|  | DWORD dwTotalLinearSpace; | 
|  | DWORD dwTotalUnlockedPages; | 
|  | DWORD dwFreePages; | 
|  | DWORD dwTotalPages; | 
|  | DWORD dwFreeLinearSpace; | 
|  | DWORD dwSwapFilePages; | 
|  | WORD wPageSize; | 
|  | } MEMMANINFO; | 
|  | typedef MEMMANINFO *LPMEMMANINFO; | 
|  |  | 
|  | typedef struct | 
|  | { | 
|  | DWORD     dwSize; | 
|  | WORD      wUserFreePercent; | 
|  | WORD      wGDIFreePercent; | 
|  | HGLOBAL16 hUserSegment; | 
|  | HGLOBAL16 hGDISegment; | 
|  | } SYSHEAPINFO; | 
|  |  | 
|  | BOOL16 WINAPI MemManInfo16(LPMEMMANINFO lpEnhMode); | 
|  | BOOL16 WINAPI SystemHeapInfo16( SYSHEAPINFO *pHeapInfo ); | 
|  |  | 
|  | /* timer info */ | 
|  |  | 
|  | typedef struct tagTIMERINFO { | 
|  | DWORD dwSize; | 
|  | DWORD dwmsSinceStart; | 
|  | DWORD dwmsThisVM; | 
|  | } TIMERINFO; | 
|  |  | 
|  | BOOL16 WINAPI TimerCount16( TIMERINFO *pTimerInfo ); | 
|  |  | 
|  | /* Window classes */ | 
|  |  | 
|  | typedef struct | 
|  | { | 
|  | DWORD     dwSize; | 
|  | HMODULE16 hInst;              /* This is really an hModule */ | 
|  | char      szClassName[MAX_CLASSNAME + 1]; | 
|  | HANDLE16  wNext; | 
|  | } CLASSENTRY; | 
|  |  | 
|  | BOOL16 WINAPI ClassFirst16( CLASSENTRY *pClassEntry ); | 
|  | BOOL16 WINAPI ClassNext16( CLASSENTRY *pClassEntry ); | 
|  |  | 
|  |  | 
|  | /* Memory read/write */ | 
|  |  | 
|  | DWORD WINAPI MemoryRead16( WORD sel, DWORD offset, void *buffer, DWORD count ); | 
|  | DWORD WINAPI MemoryWrite16( WORD sel, DWORD offset, void *buffer, DWORD count ); | 
|  |  | 
|  | /* flags to NotifyRegister() */ | 
|  | #define NF_NORMAL	0	/* everything except taskswitches, debugerrors, | 
|  | * debugstrings | 
|  | */ | 
|  | #define NF_TASKSWITCH	1	/* get taskswitch information */ | 
|  | #define NF_RIP		2	/* get debugerrors of system */ | 
|  |  | 
|  | BOOL16 WINAPI NotifyRegister16(HTASK16 htask,FARPROC16 lpfnCallback,WORD wFlags); | 
|  |  | 
|  | #define NFY_UNKNOWN	0 | 
|  | #define NFY_LOADSEG	1 | 
|  | /* DATA is a pointer to following struct: */ | 
|  | typedef struct { | 
|  | DWORD	dwSize; | 
|  | WORD	wSelector; | 
|  | WORD	wSegNum; | 
|  | WORD	wType;		/* bit 0 set if this is a code segment */ | 
|  | WORD	wcInstance;	/* only valid for data segment */ | 
|  | } NFYLOADSEG; | 
|  | /* called when freeing a segment. LOWORD(dwData) is the freed selector */ | 
|  | #define NFY_FREESEG	2 | 
|  |  | 
|  | /* called when loading/starting a DLL */ | 
|  | #define NFY_STARTDLL	3 | 
|  | typedef struct { | 
|  | DWORD      dwSize; | 
|  | HMODULE16  hModule; | 
|  | WORD       wCS; | 
|  | WORD       wIP; | 
|  | } NFYSTARTDLL; | 
|  |  | 
|  | /* called when starting a task. dwData is CS:IP */ | 
|  | #define NFY_STARTTASK	4 | 
|  |  | 
|  | /* called when a task terminates. dwData is the return code */ | 
|  | #define NFY_EXITTASK	5 | 
|  |  | 
|  | /* called when module is removed. LOWORD(dwData) is the handle */ | 
|  | #define NFY_DELMODULE	6 | 
|  |  | 
|  | /* RIP? debugevent */ | 
|  | #define NFY_RIP		7 | 
|  | typedef struct { | 
|  | DWORD	dwSize; | 
|  | WORD	wIP; | 
|  | WORD	wCS; | 
|  | WORD	wSS; | 
|  | WORD	wBP; | 
|  | WORD	wExitCode; | 
|  | } NFYRIP; | 
|  |  | 
|  | /* called before (after?) switching to a task | 
|  | * no data, callback should call GetCurrentTask | 
|  | */ | 
|  | #define	NFY_TASKIN	8 | 
|  |  | 
|  | /* called before(after?) switching from a task | 
|  | * no data, callback should call GetCurrentTask | 
|  | */ | 
|  | #define NFY_TASKOUT	9 | 
|  |  | 
|  | /* returns ASCII input value, dwData not set */ | 
|  | #define NFY_INCHAR	10 | 
|  |  | 
|  | /* output debugstring (pointed to by dwData) */ | 
|  | #define NFY_OUTSTRING	11 | 
|  |  | 
|  | /* log errors */ | 
|  | #define NFY_LOGERROR	12 | 
|  | typedef struct { | 
|  | DWORD	dwSize; | 
|  | UINT16	wErrCode; | 
|  | VOID   *lpInfo; /* depends on wErrCode */ | 
|  | } NFYLOGERROR; | 
|  |  | 
|  | /* called for parameter errors? */ | 
|  | #define NFY_LOGPARAMERROR	13 | 
|  | typedef struct { | 
|  | DWORD       dwSize; | 
|  | UINT16      wErrCode; | 
|  | FARPROC16   lpfnErrorAddr; | 
|  | void      **lpBadParam; | 
|  | } NFYLOGPARAMERROR; | 
|  |  | 
|  | typedef struct { | 
|  | DWORD dwSize; | 
|  | HTASK16 hTask; | 
|  | WORD wSS; | 
|  | WORD wBP; | 
|  | WORD wCS; | 
|  | WORD wIP; | 
|  | HMODULE16 hModule; | 
|  | WORD wSegment; | 
|  | WORD wFlags; | 
|  | } STACKTRACEENTRY; | 
|  |  | 
|  | #include <poppack.h> | 
|  |  | 
|  | #endif /* __WINE_TOOLHELP_H */ |