293 lines
8.3 KiB
PHP
293 lines
8.3 KiB
PHP
;**************************************************************************
|
|
;* TOOLHELP.INC
|
|
;*
|
|
;* Assembly-language public include file for TOOLHELP.DLL
|
|
;*
|
|
;**************************************************************************
|
|
|
|
;** General symbol values
|
|
MAX_DATA EQU 11
|
|
MAX_PATH EQU 255
|
|
MAX_MODULE_NAME EQU 8 + 1 ;Leave room for the zero and padding
|
|
MAX_CLASSNAME EQU 255
|
|
|
|
; ----- Global heap walking -----
|
|
|
|
GLOBALENTRY STRUC
|
|
ge_dwSize DD ? ;Structure version
|
|
ge_dwAddress DD ? ;This block's address
|
|
ge_dwBlockSize DD ? ;This block's size
|
|
ge_hBlock DW ? ;This block's handle
|
|
ge_wcLock DW ? ;Lock count
|
|
ge_wcPageLock DW ? ;Page lock count
|
|
ge_wFlags DW ? ;Block flags
|
|
ge_wHeapPresent DW ? ;Size of available local heap
|
|
ge_hOwner DW ? ;Owner handle
|
|
ge_wType DW ? ;Block type
|
|
ge_wData DW ? ;Type-specific data
|
|
ge_dwNext DD ? ;Pointer to next block
|
|
ge_dwNextAlt DD ? ;Next free/LRU block in chain
|
|
GLOBALENTRY ENDS
|
|
|
|
; ** GlobalFirst()/GlobalNext() flags
|
|
GLOBAL_ALL EQU 0
|
|
GLOBAL_LRU EQU 1
|
|
GLOBAL_FREE EQU 2
|
|
|
|
; ** GLOBALENTRY.ge_wType entries
|
|
GT_UNKNOWN EQU 0
|
|
GT_DGROUP EQU 1
|
|
GT_DATA EQU 2
|
|
GT_CODE EQU 3
|
|
GT_TASK EQU 4
|
|
GT_RESOURCE EQU 5
|
|
GT_MODULE EQU 6
|
|
GT_FREE EQU 7
|
|
GT_INTERNAL EQU 8
|
|
GT_SENTINEL EQU 9
|
|
GT_BURGERMASTER EQU 10
|
|
|
|
; ** if GLOBALENTRY.wType==GT_RESOURCE, the following is GLOBALENTRY.wData:
|
|
GD_USERDEFINED EQU 0
|
|
GD_CURSORCOMPONENT EQU 1
|
|
GD_BITMAP EQU 2
|
|
GD_ICONCOMPONENT EQU 3
|
|
GD_MENU EQU 4
|
|
GD_DIALOG EQU 5
|
|
GD_STRING EQU 6
|
|
GD_FONTDIR EQU 7
|
|
GD_FONT EQU 8
|
|
GD_ACCELERATORS EQU 9
|
|
GD_RCDATA EQU 10
|
|
GD_ERRTABLE EQU 11
|
|
GD_CURSOR EQU 12
|
|
GD_ICON EQU 14
|
|
GD_NAMETABLE EQU 15
|
|
GD_MAX_RESOURCE EQU 15
|
|
|
|
;** GLOBALENTRY.wFlags
|
|
GF_PDB_OWNER EQU 100h ;Low byte is KERNEL flags
|
|
|
|
; ----- Local heap walking -----
|
|
|
|
LOCALENTRY STRUC
|
|
le_dwSize DD ?
|
|
le_hHandle DW ?
|
|
le_wAddress DW ?
|
|
le_wSize DW ?
|
|
le_wFlags DW ?
|
|
le_wcLock DW ?
|
|
le_wType DW ?
|
|
le_hHeap DW ?
|
|
le_wHeapType DW ?
|
|
le_wNext DW ?
|
|
LOCALENTRY ENDS
|
|
|
|
; ** LOCALENTRY.wHeapType flags
|
|
NORMAL_HEAP EQU 0
|
|
USER_HEAP EQU 1
|
|
GDI_HEAP EQU 2
|
|
|
|
;** LOCALENTRY.wFlags
|
|
LF_FIXED EQU 1
|
|
LF_FREE EQU 2
|
|
LF_MOVEABLE EQU 4
|
|
|
|
;** LOCALENTRY.wType
|
|
LT_NORMAL EQU 0
|
|
LT_GDI_PEN EQU 1
|
|
LT_GDI_BRUSH EQU 2
|
|
LT_GDI_FONT EQU 3
|
|
LT_GDI_PALETTE EQU 4
|
|
LT_GDI_BITMAP EQU 5
|
|
LT_GDI_RGN EQU 6
|
|
LT_GDI_DC EQU 7
|
|
LT_GDI_DISABLED_DC EQU 8
|
|
LT_GDI_METADC EQU 9
|
|
LT_GDI_METAFILE EQU 10
|
|
LT_GDI_MAX EQU LT_GDI_METAFILE
|
|
LT_FREE EQU 0ffh
|
|
|
|
; ----- Stack tracing -----
|
|
|
|
STACKTRACEENTRY STRUC
|
|
st_dwSize DD ?
|
|
st_hTask DW ?
|
|
st_wSS DW ?
|
|
st_wBP DW ?
|
|
st_wCS DW ?
|
|
st_wIP DW ?
|
|
st_hModule DW ?
|
|
st_wSegment DW ?
|
|
st_wFlags DW ?
|
|
STACKTRACEENTRY ENDS
|
|
|
|
;** STACKTRACEENTRY.wFlags values
|
|
FRAME_FAR EQU 0
|
|
FRAME_NEAR EQU 1
|
|
|
|
; ----- Module list walking -----
|
|
|
|
MODULEENTRY STRUC
|
|
me_dwSize DD ?
|
|
me_szModule DB MAX_MODULE_NAME + 1 DUP(?)
|
|
me_hModule DW ?
|
|
me_wcUsage DW ?
|
|
me_szExePath DB MAX_PATH + 1 + 1 DUP(?)
|
|
me_wNext DW ?
|
|
MODULEENTRY ENDS
|
|
|
|
; ----- Task list walking -----
|
|
|
|
TASKENTRY STRUC
|
|
te_dwSize DD ?
|
|
te_hTask DW ?
|
|
te_hTaskParent DW ?
|
|
te_hInst DW ?
|
|
te_hModule DW ?
|
|
te_wSS DW ?
|
|
te_wSP DW ?
|
|
te_wStackTop DW ?
|
|
te_wStackMinimum DW ?
|
|
te_wStackBottom DW ?
|
|
te_wcEvents DW ?
|
|
te_hQueue DW ?
|
|
te_szModule DB MAX_MODULE_NAME + 1 DUP(?)
|
|
te_wPSPOffset DW ?
|
|
te_hNext DW ?
|
|
TASKENTRY ENDS
|
|
|
|
;** TaskSwitch() return values
|
|
TS_ERROR EQU 0
|
|
TS_NEW EQU 1
|
|
TS_OLD EQU 2
|
|
|
|
; ----- Window Class enumeration -----
|
|
|
|
CLASSENTRY STRUC
|
|
ce_dwSize DD ?
|
|
ce_hInst DW ?
|
|
ce_szClassName DB MAX_CLASSNAME + 1 DUP(?)
|
|
ce_wNext DW ?
|
|
CLASSENTRY ENDS
|
|
|
|
; ----- Information functions -----
|
|
|
|
VMEMMANINFO STRUC
|
|
vmm_dwSize DD ?
|
|
vmm_dwLargestFreeBlock DD ?
|
|
vmm_dwMaxPagesAvailable DD ?
|
|
vmm_dwMaxPagesLockable DD ?
|
|
vmm_dwTotalLinearSpace DD ?
|
|
vmm_dwTotalUnlockedPages DD ?
|
|
vmm_dwFreePages DD ?
|
|
vmm_dwTotalPages DD ?
|
|
vmm_dwFreeLinearSpace DD ?
|
|
vmm_dwSwapFilePages DD ?
|
|
vmm_wPageSize DW ?
|
|
VMEMMANINFO ENDS
|
|
|
|
SYSHEAPINFO STRUC
|
|
si_dwSize DD ?
|
|
si_wUserFreePercent DW ?
|
|
si_wGDIFreePercent DW ?
|
|
si_hUserSegment DW ?
|
|
si_hGDISegment DW ?
|
|
SYSHEAPINFO ENDS
|
|
|
|
; ----- Notifications -----
|
|
|
|
;* NFY_UNKNOWN: An unknown notification has been returned from KERNEL. Apps
|
|
;* should ignore these.
|
|
;*
|
|
NFY_UNKNOWN EQU 0
|
|
|
|
;** NFY_LOADSEG: dwData points to a NFYLOADSEG structure
|
|
NFY_LOADSEG EQU 1
|
|
NFYLOADSEG STRUC
|
|
nls_dwSize DD ?
|
|
nls_wSelector DW ?
|
|
nls_wSegNum DW ?
|
|
nls_wType DW ? ;Low bit set for DATA, clear for CODE
|
|
nls_wcInstance DW ? ;Instance count ONLY VALID FOR DATA!
|
|
nls_lpstrModuleName DD ?
|
|
NFYLOADSEG ENDS
|
|
|
|
;** NFY_FREESEG: LOWORD(dwData) is the selector of the segment being freed
|
|
NFY_FREESEG EQU 2
|
|
|
|
;** NFY_STARTDLL: dwData points to a NFYSTARTDLL structure
|
|
NFY_STARTDLL EQU 3
|
|
NFYSTARTDLL STRUC
|
|
nsd_dwSize DD ?
|
|
nsd_hModule DW ?
|
|
nsd_wCS DW ?
|
|
nsd_wIP DW ?
|
|
NFYSTARTDLL ENDS
|
|
|
|
;** NFY_STARTTASK: dwData is the CS:IP of the task start address
|
|
NFY_STARTTASK EQU 4
|
|
|
|
;** NFY_EXITTASK: The low byte of dwData contains the program exit code
|
|
NFY_EXITTASK EQU 5
|
|
|
|
;** NFY_DELMODULE: LOWORD(dwData) is the handle of the module to be freed
|
|
NFY_DELMODULE EQU 6
|
|
|
|
;** NFY_RIP: LOWORD(dwData) is the fatal exit code
|
|
;** NFY_RIP: dwData points to a NFYRIP structure
|
|
NFY_RIP EQU 7
|
|
NFYRIP STRUC
|
|
nrp_dwSize DD ?
|
|
nrp_wIP DW ?
|
|
nrp_wCS DW ?
|
|
nrp_wSS DW ?
|
|
nrp_wBP DW ?
|
|
nrp_wExitCode DW ?
|
|
NFYRIP ENDS
|
|
|
|
;** NFY_TASKIN: No data. Callback should do GetCurrentTask()
|
|
NFY_TASKIN EQU 8
|
|
|
|
;** NFY_TASKOUT: No data. Callback should do GetCurrentTask()
|
|
NFY_TASKOUT EQU 9
|
|
|
|
;** NFY_INCHAR: Return value of callback is used. If FALSE, mapped to 'i'
|
|
NFY_INCHAR EQU 10
|
|
|
|
;** NFY_OUTSTR: dwData points to the string to be displayed
|
|
NFY_OUTSTR EQU 11
|
|
|
|
;** NFY_LOGERROR: dwData points to a NFYLOGERROR struct
|
|
NFY_LOGERROR EQU 12
|
|
NFYLOGERROR STRUC
|
|
nle_dwSize DD ?
|
|
nle_wErrCode DW ?
|
|
nle_lpInfo DD ? ;Error-code dependent
|
|
NFYLOGERROR ENDS
|
|
|
|
;** NFY_LOGPARAMERROR: dwData points to a NFYLOGPARAMERROR struct
|
|
NFY_LOGPARAMERROR EQU 13
|
|
NFYLOGPARAMERROR STRUC
|
|
nlp_dwSize DD ?
|
|
nlp_wErrCode DW ?
|
|
nlp_lpfnErrorAddr DD ?
|
|
nlp_lpBadParam DD ?
|
|
NFYLOGPARAMERROR ENDS
|
|
|
|
;** NotifyRegister() flags
|
|
NF_NORMAL EQU 0
|
|
NF_TASKSWITCH EQU 1
|
|
NF_RIP EQU 2
|
|
|
|
;** TerminateApp() flag values
|
|
UAE_BOX EQU 0
|
|
NO_UAE_BOX EQU 1
|
|
|
|
TIMERINFO STRUC
|
|
ti_dwSize DD ?
|
|
ti_dwmsSinceStart DD ?
|
|
ti_dwmsThisVM DD ?
|
|
TIMERINFO ENDS
|
|
|