#ifndef __TOOLHELP_H #define __TOOLHELP_H #include "windows.h" DECLARE_HANDLE(HMODULE); DECLARE_HANDLE(HGLOBAL); #define MAX_DATA 11 #define MAX_MODULE_NAME 9 #define MAX_PATH 255 #define MAX_CLASSNAME 255 /* 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 tagSYSHEAPINFO { DWORD dwSize; WORD wUserFreePercent; WORD wGDIFreePercent; HGLOBAL hUserSegment; HGLOBAL hGDISegment; } SYSHEAPINFO; typedef SYSHEAPINFO *LPSYSHEAPINFO; BOOL MemManInfo(LPMEMMANINFO lpEnhMode); BOOL SystemHeapInfo(LPSYSHEAPINFO lpSysHeap); #endif /* __TOOLHELP_H */