home *** CD-ROM | disk | FTP | other *** search
- /**************************************************************************
- * TOOLHELP.H
- *
- * Header file for applications using the TOOLHELP.DLL
- *
- **************************************************************************/
-
- #ifndef TOOLHELP_H
- #define TOOLHELP_H
-
- /* ----- General symbols ----- */
- #define MAX_DATA 11
- #define MAX_PATH 255
- #define MAX_MODULE_NAME 8 + 1
- #define MAX_CLASSNAME 255
-
- /* ----- Global heap walking ----- */
-
- typedef struct tagGLOBALINFO
- {
- DWORD dwSize;
- WORD wcItems;
- WORD wcItemsFree;
- WORD wcItemsLRU;
- } GLOBALINFO;
-
- typedef struct tagGLOBALENTRY
- {
- DWORD dwSize;
- DWORD dwAddress;
- DWORD dwBlockSize;
- HANDLE hBlock;
- WORD wcLock;
- WORD wcPageLock;
- WORD wFlags;
- BOOL wHeapPresent;
- HANDLE hOwner;
- WORD wType;
- WORD wData;
- DWORD dwNext;
- DWORD dwNextAlt;
- } GLOBALENTRY;
-
- BOOL FAR PASCAL GlobalInfo(
- GLOBALINFO FAR *lpGlobalInfo);
-
- BOOL FAR PASCAL GlobalFirst(
- GLOBALENTRY FAR *lpGlobal,
- WORD wFlags);
-
- BOOL FAR PASCAL GlobalNext(
- GLOBALENTRY FAR *lpGlobal,
- WORD wFlags);
-
- BOOL FAR PASCAL GlobalEntryHandle(
- GLOBALENTRY FAR *lpGlobal,
- HANDLE hItem);
-
- BOOL FAR PASCAL GlobalEntryModule(
- GLOBALENTRY FAR *lpGlobal,
- HANDLE hModule,
- WORD wSeg);
-
- /* GlobalFirst()/GlobalNext() flags */
- #define GLOBAL_ALL 0
- #define GLOBAL_LRU 1
- #define GLOBAL_FREE 2
-
- /* GLOBALENTRY.wType entries */
- #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
-
- /* If GLOBALENTRY.wType==GT_RESOURCE, the following is GLOBALENTRY.wData: */
- #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
-
- /* GLOBALENTRY.wFlags */
- #define GF_PDB_OWNER 0x0100 /* Low byte is KERNEL flags */
-
- /* ----- Local heap walking ----- */
-
- typedef struct tagLOCALINFO
- {
- DWORD dwSize;
- WORD wcItems;
- } LOCALINFO;
-
- typedef struct tagLOCALENTRY
- {
- DWORD dwSize;
- HANDLE hHandle;
- WORD wAddress;
- WORD wSize;
- WORD wFlags;
- WORD wcLock;
- WORD wType;
- WORD hHeap;
- WORD wHeapType;
- WORD wNext;
- } LOCALENTRY;
-
- BOOL FAR PASCAL LocalInfo(
- LOCALINFO FAR *lpLocal,
- HANDLE hHeap);
-
- BOOL FAR PASCAL LocalFirst(
- LOCALENTRY FAR *lpLocal,
- HANDLE hHeap);
-
- BOOL FAR PASCAL LocalNext(
- LOCALENTRY FAR *lpLocal);
-
- /* LOCALENTRY.wHeapType flags */
- #define NORMAL_HEAP 0
- #define USER_HEAP 1
- #define GDI_HEAP 2
-
- /* LOCALENTRY.wFlags */
- #define LF_FIXED 1
- #define LF_FREE 2
- #define LF_MOVEABLE 4
-
- /* LOCALENTRY.wType */
- #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
-
- /* ----- Stack Tracing ----- */
-
- typedef struct tagSTACKTRACEENTRY
- {
- DWORD dwSize;
- HANDLE hTask;
- WORD wSS;
- WORD wBP;
- WORD wCS;
- WORD wIP;
- HANDLE hModule;
- WORD wSegment;
- WORD wFlags;
- } STACKTRACEENTRY;
-
- BOOL FAR PASCAL StackTraceFirst(
- STACKTRACEENTRY FAR *lpStackTrace,
- HANDLE hTask);
-
- BOOL FAR PASCAL StackTraceCSIPFirst(
- STACKTRACEENTRY FAR *lpStackTrace,
- WORD wSS,
- WORD wCS,
- WORD wIP,
- WORD wBP);
-
- BOOL FAR PASCAL StackTraceNext(
- STACKTRACEENTRY FAR *lpStackTrace);
-
- /* STACKTRACEENTRY.wFlags values */
- #define FRAME_FAR 0
- #define FRAME_NEAR 1
-
- /* ----- Module list walking ----- */
-
- typedef struct tagMODULEENTRY
- {
- DWORD dwSize;
- char szModule[MAX_MODULE_NAME + 1];
- HANDLE hModule;
- WORD wUsageFlags;
- char szExePath[MAX_PATH + 1];
- WORD wNext;
- } MODULEENTRY;
-
- BOOL FAR PASCAL ModuleFirst(
- MODULEENTRY FAR *lpModule);
-
- BOOL FAR PASCAL ModuleNext(
- MODULEENTRY FAR *lpModule);
-
- HANDLE FAR PASCAL ModuleFindName(
- MODULEENTRY FAR *lpModule,
- LPSTR lpstrName);
-
- HANDLE FAR PASCAL ModuleFindHandle(
- MODULEENTRY FAR *lpModule,
- HANDLE hModule);
-
- /* ----- Task list walking ----- */
-
- typedef struct tagTASKENTRY
- {
- DWORD dwSize;
- HANDLE hTask;
- HANDLE hTaskParent;
- HANDLE hInst;
- HANDLE hModule;
- WORD wSS;
- WORD wSP;
- WORD wStackTop;
- WORD wStackMinimum;
- WORD wStackBottom;
- WORD wcEvents;
- HANDLE hQueue;
- char szModule[MAX_MODULE_NAME + 1];
- WORD wPSPOffset;
- HANDLE hNext;
- } TASKENTRY;
-
- BOOL FAR PASCAL TaskFirst(
- TASKENTRY FAR *lpTask);
-
- BOOL FAR PASCAL TaskNext(
- TASKENTRY FAR *lpTask);
-
- BOOL FAR PASCAL TaskFindHandle(
- TASKENTRY FAR *lpTask,
- HANDLE hTask);
-
- DWORD FAR PASCAL TaskSetCSIP(
- HANDLE hTask,
- WORD wCS,
- WORD wIP);
-
- DWORD FAR PASCAL TaskGetCSIP(
- HANDLE hTask,
- WORD wCS,
- WORD wIP);
-
- BOOL FAR PASCAL TaskSwitch(
- HANDLE hTask,
- DWORD dwNewCSIP);
-
- /* ----- Window Class enumeration ----- */
-
- typedef struct tagCLASSENTRY
- {
- DWORD dwSize;
- HANDLE hInst;
- char szClassName[MAX_CLASSNAME + 1];
- WORD wNext;
- } CLASSENTRY;
-
- BOOL FAR PASCAL ClassFirst(
- CLASSENTRY FAR *lpClass);
-
- BOOL FAR PASCAL ClassNext(
- CLASSENTRY FAR *lpClass);
-
- /* ----- Information functions ----- */
-
- 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;
-
- BOOL FAR PASCAL MemManInfo(
- MEMMANINFO FAR *lpEnhMode);
-
- typedef struct tagUSERHEAPINFO
- {
- DWORD dwSize;
- WORD wHeapFree;
- WORD wMaxHeapSize;
- WORD wPercentFree;
- HANDLE hSegment;
- } USERHEAPINFO;
-
- BOOL FAR PASCAL UserHeapInfo(
- USERHEAPINFO FAR *lpUser);
-
- typedef struct tagGDIHEAPINFO
- {
- DWORD dwSize;
- WORD wHeapFree;
- WORD wMaxHeapSize;
- WORD wPercentFree;
- HANDLE hSegment;
- } GDIHEAPINFO;
-
- BOOL FAR PASCAL GDIHeapInfo(
- GDIHEAPINFO FAR *lpGDI);
-
- /* ----- Interrupt Handling ----- */
-
- typedef void (FAR PASCAL *LPFNINTCALLBACK)(void);
-
- BOOL FAR PASCAL InterruptRegister(
- HANDLE hTask,
- LPFNINTCALLBACK lpfnIntCallback);
-
- BOOL FAR PASCAL InterruptUnRegister(
- HANDLE hTask);
-
- /* Hooked interrupts */
- #define INT_DIV0 0
- #define INT_1 1
- #define INT_2 2
- #define INT_3 3
- #define INT_UDINSTR 6
- #define INT_GPFAULT 13
- #define INT_CTLALTSYSRQ 256
-
- /* Notifications:
- * When a notification callback is called, two parameters are passed
- * in: a WORD, wID, and another DWORD, dwData. wID is one of
- * the values NFY_* below. Callback routines should ignore unrecog-
- * nized values to preserve future compatibility. Callback routines
- * are also passed a dwData value. This may contain data or may be
- * a FAR pointer to a structure, or may not be used depending on
- * which notification is being received.
- *
- * In all cases, if the return value of the callback is TRUE, the
- * notification will NOT be passed on to other callbacks. It has
- * been handled. This should be used sparingly and only with certain
- * notifications. Callbacks almost always return FALSE.
- */
-
- /* NFY_UNKNOWN: An unknown notification has been returned from KERNEL. Apps
- * should ignore these.
- */
- #define NFY_UNKNOWN 0
-
- /* NFY_LOADSEG: dwData points to a NFYLOADSEG structure */
- #define NFY_LOADSEG 1
- typedef struct tagNFYLOADSEG
- {
- DWORD dwSize;
- WORD wSelector;
- WORD wSegNum;
- WORD wType;
- HANDLE hInstance;
- LPSTR lpstrModuleName;
- } NFYLOADSEG;
-
- /* NFY_FREESEG: LOWORD(dwData) is the selector of the segment being freed */
- #define NFY_FREESEG 2
-
- /* NFY_STARTTASK: dwData points to a NFYSTARTTASK structure */
- #define NFY_STARTTASK 3
- typedef struct tagNFYSTARTTASK
- {
- DWORD dwSize;
- HANDLE hInstance;
- WORD wCS;
- WORD wIP;
- } NFYSTARTTASK;
-
- /* NFY_EXITTASK: The low byte of dwData contains the program exit code */
- #define NFY_EXITTASK 4
-
- /* NFY_LOADDLL: dwData points to a NFYLOADDLL structure */
- #define NFY_LOADDLL 5
- typedef struct tagNFYLOADDLL
- {
- DWORD dwSize;
- HANDLE hModule;
- WORD wCS;
- WORD wIP;
- } NFYLOADDLL;
-
- /* NFY_DELMODULE: LOWORD(dwData) is the handle of the module to be freed */
- #define NFY_DELMODULE 6
-
- /* NFY_DEBUGSTR: dwData points to the string to be output */
- #define NFY_DEBUGSTR 7
-
- /* NFY_RIP: dwData points to a NFYRIP structure */
- #define NFY_RIP 8
- typedef struct tagNFYRIP
- {
- WORD wExitCode;
- WORD wCS;
- WORD wIP;
- } NFYRIP;
-
- /* NFY_TASKIN: LOWORD(dwData) is the hTask for the entering task */
- #define NFY_TASKIN 9
-
- /* NFY_TASKOUT: LOWORD(dwData) is the hTask for the task being left */
- #define NFY_TASKOUT 10
-
- /* NFY_INCHAR: Return value from callback is used. If NULL, mapped to 'i' */
- #define NFY_INCHAR 11
-
- /* NFY_OUTSTR: dwData points to the string to be displayed */
- #define NFY_OUTSTR 12
-
- typedef BOOL (FAR PASCAL *LPFNNOTIFYCALLBACK)(
- WORD wID,
- DWORD dwData);
-
- BOOL FAR PASCAL NotifyRegister(
- HANDLE hTask,
- LPFNNOTIFYCALLBACK lpfn,
- WORD wFlags);
-
- BOOL FAR PASCAL NotifyUnRegister(
- HANDLE hTask);
-
- /* NotifyRegister() flags */
- #define NF_NORMAL 0
- #define NF_TASKSWITCH 1
- #define NF_RIP 2
- #define NF_DEBUGSTR 4
-
- /* ----- Miscellaneous ----- */
-
- void FAR PASCAL TerminateApp(
- HANDLE hTask,
- WORD wFlags);
-
- /* TerminateApp() flag values */
- #define UAE_BOX 0
- #define NO_UAE_BOX 1
-
- DWORD FAR PASCAL MemoryRead(
- WORD wSel,
- DWORD dwOffset,
- LPSTR lpBuffer,
- DWORD dwcb);
-
- DWORD FAR PASCAL MemoryWrite(
- WORD wSel,
- DWORD dwOffset,
- LPSTR lpBuffer,
- DWORD dwcb);
-
- typedef struct tagTIMERINFO
- {
- DWORD dwSize;
- DWORD dwmsSinceStart;
- DWORD dwmsThisVM;
- } TIMERINFO;
-
- BOOL FAR PASCAL TimerCount(
- TIMERINFO FAR *lpTimer);
-
- #endif /* ifndef TOOLHELP_H */
-