| #ifndef __TOOLHELP_H |
| #define __TOOLHELP_H |
| |
| #include "windows.h" |
| |
| #define MAX_DATA 11 |
| #define MAX_MODULE_NAME 9 |
| #define MAX_PATH 255 |
| #define MAX_CLASSNAME 255 |
| |
| /* Global heap */ |
| |
| typedef struct |
| { |
| DWORD dwSize; |
| WORD wcItems; |
| WORD wcItemsFree; |
| WORD wcItemsLRU; |
| } GLOBALINFO; |
| |
| typedef struct |
| { |
| DWORD dwSize; |
| DWORD dwAddress; |
| DWORD dwBlockSize; |
| HGLOBAL hBlock; |
| WORD wcLock; |
| WORD wcPageLock; |
| WORD wFlags; |
| BOOL wHeapPresent; |
| HGLOBAL 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 */ |
| |
| BOOL GlobalInfo( GLOBALINFO *pInfo ); |
| BOOL GlobalFirst( GLOBALENTRY *pGlobal, WORD wFlags ); |
| BOOL GlobalNext( GLOBALENTRY *pGlobal, WORD wFlags) ; |
| BOOL GlobalEntryHandle( GLOBALENTRY *pGlobal, HGLOBAL hItem ); |
| BOOL GlobalEntryModule( GLOBALENTRY *pGlobal, HMODULE hModule, WORD wSeg ); |
| WORD GlobalHandleToSel( HGLOBAL handle ); |
| |
| /* Local heap */ |
| |
| typedef struct |
| { |
| DWORD dwSize; |
| WORD wcItems; |
| } LOCALINFO; |
| |
| typedef struct |
| { |
| DWORD dwSize; |
| HLOCAL 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 |
| |
| BOOL LocalInfo( LOCALINFO *pLocalInfo, HGLOBAL handle ); |
| BOOL LocalFirst( LOCALENTRY *pLocalEntry, HGLOBAL handle ); |
| BOOL LocalNext( LOCALENTRY *pLocalEntry ); |
| |
| |
| /* modules */ |
| |
| typedef struct { |
| DWORD dwSize; |
| char szModule[MAX_MODULE_NAME + 1]; |
| HMODULE hModule; |
| WORD wcUsage; |
| char szExePath[MAX_PATH + 1]; |
| WORD wNext; |
| } MODULEENTRY; |
| typedef MODULEENTRY *LPMODULEENTRY; |
| |
| BOOL ModuleFirst(MODULEENTRY *lpModule); |
| BOOL ModuleNext(MODULEENTRY *lpModule); |
| HMODULE ModuleFindName(MODULEENTRY *lpModule, LPCSTR lpstrName); |
| HMODULE ModuleFindHandle(MODULEENTRY *lpModule, HMODULE hModule); |
| |
| /* tasks */ |
| |
| typedef struct tagTASKENTRY { |
| DWORD dwSize; |
| HTASK hTask; |
| HTASK hTaskParent; |
| HINSTANCE hInst; |
| HMODULE hModule; |
| WORD wSS; |
| WORD wSP; |
| WORD wStackTop; |
| WORD wStackMinimum; |
| WORD wStackBottom; |
| WORD wcEvents; |
| HGLOBAL hQueue; |
| char szModule[MAX_MODULE_NAME + 1]; |
| WORD wPSPOffset; |
| HANDLE hNext; |
| } TASKENTRY; |
| typedef TASKENTRY *LPTASKENTRY; |
| |
| BOOL TaskFirst(LPTASKENTRY lpTask); |
| BOOL TaskNext(LPTASKENTRY lpTask); |
| BOOL TaskFindHandle(LPTASKENTRY lpTask, HTASK hTask); |
| DWORD TaskSetCSIP(HTASK hTask, WORD wCS, WORD wIP); |
| DWORD TaskGetCSIP(HTASK hTask); |
| BOOL TaskSwitch(HTASK hTask, DWORD dwNewCSIP); |
| |
| /* 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; |
| HGLOBAL hUserSegment; |
| HGLOBAL hGDISegment; |
| } SYSHEAPINFO; |
| |
| BOOL MemManInfo(LPMEMMANINFO lpEnhMode); |
| BOOL SystemHeapInfo( SYSHEAPINFO *pHeapInfo ); |
| |
| |
| /* Window classes */ |
| |
| typedef struct |
| { |
| DWORD dwSize; |
| HMODULE hInst; /* This is really an hModule */ |
| char szClassName[MAX_CLASSNAME + 1]; |
| WORD wNext; |
| } CLASSENTRY; |
| |
| BOOL ClassFirst( CLASSENTRY *pClassEntry ); |
| BOOL ClassNext( CLASSENTRY *pClassEntry ); |
| |
| |
| /* Memory read/write */ |
| |
| DWORD MemoryRead( WORD sel, DWORD offset, void *buffer, DWORD count ); |
| DWORD MemoryWrite( WORD sel, DWORD offset, void *buffer, DWORD count ); |
| |
| |
| #endif /* __TOOLHELP_H */ |