Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

220 lines
4.8 KiB

/**************************************************************************
* TOOLPRIV.H
*
* Private header file for routines in the tool helper library
*
**************************************************************************/
#ifndef TOOLPRIV_H
#define TOOLPRIV_H
#define BUILDDLL
#include <windows.h>
#include "toolhelp.h"
/* ----- Symbols ----- */
#define VERSION 1
#ifndef NOEXPORT
#define NOEXPORT static
#endif
#define TOOLHELPAPI WINAPI
#define FAULT_ACTIVE 2
#define NUM_EXCEPTIONS 3
/* wTHFlag values */
#define TH_KERNEL_286 1
#define TH_KERNEL_386 2
#define TH_WIN30 4
#define TH_WIN30STDMODE 8 /* THWIN30STDMODE set if TH_WIN30 & Std mode */
#define TH_GOODPTRACEHOOK 16
#define TH_GOTOLDPTRACE 32
/* ----- Code macros ----- */
#define MAKEFARPTR(s, o) ((void FAR *)(((WORD)(o)) | \
(((DWORD)(WORD)(s)) << 16)))
/* ----- Types ----- */
typedef struct tagNOTIFYSTRUCT
{
struct tagNOTIFYSTRUCT *pNext;
HANDLE hTask;
LPFNNOTIFYCALLBACK lpfn;
WORD wFlags;
} NOTIFYSTRUCT;
typedef void (FAR PASCAL *LPFNCALLBACK)(void);
typedef struct tagINTERRUPT
{
struct tagINTERRUPT *pNext;
HANDLE hTask;
LPFNCALLBACK lpfn;
} INTERRUPT;
typedef struct tagSIGNAL
{
struct tagSIGNAL *pNext;
HANDLE hTask;
LPFNCALLBACK lpfn;
LPFNCALLBACK lpfnOld;
} SIGNAL;
typedef LONG (FAR PASCAL *LPFNUSUD)(
WORD wID,
WORD wParam,
LONG lParam);
/* ----- TOOLHELP global variables ----- */
extern WORD segKernel;
extern WORD wLibInstalled;
extern HANDLE hMaster;
extern WORD wTHFlags;
extern HANDLE hUserHeap;
extern HANDLE hGDIHeap;
extern WORD NEAR *npwExeHead;
extern WORD NEAR *npwTDBHead;
extern WORD NEAR *npwTDBCur;
extern DWORD NEAR *npdwSelTableStart;
extern WORD NEAR *npwSelTableLen;
extern WORD wNotifyInstalled;
extern NOTIFYSTRUCT NEAR *npNotifyHead;
extern WORD wIntInstalled;
extern INTERRUPT NEAR *npIntHead;
extern FARPROC lpfnGetUserLocalObjType;
extern FARPROC lpfnFatalExitHook;
extern FARPROC PASCAL lpfnPV;
extern FARPROC lpfnNotifyHook;
extern FARPROC lpfnGetFreeSystemResources;
extern FARPROC lpfntimeGetTime;
extern LPFNUSUD lpfnUserSeeUserDo;
extern WORD wSignalInstalled;
extern SIGNAL NEAR *npSignalHead;
extern NOTIFYSTRUCT NEAR* npNotifyNext;
extern WORD wLRUCount;
/* ----- Private function prototypes ----- */
void PASCAL KernelType(void);
DWORD PASCAL Walk386First(
WORD wFlags);
WORD PASCAL Walk386Count(
WORD wFlags);
void PASCAL Walk386(
DWORD dwBlock,
GLOBALENTRY FAR *lpGlobal,
WORD wFlags);
DWORD PASCAL Walk386Handle(
HANDLE hBlock);
WORD PASCAL WalkLoc386Count(
HANDLE hHeap);
HANDLE PASCAL WalkLoc386First(
HANDLE hHeap);
void PASCAL WalkLoc386(
WORD wBlock,
LOCALENTRY FAR *lpLocal,
HANDLE hHeap);
DWORD PASCAL Walk286First(
WORD wFlags);
WORD PASCAL Walk286Count(
WORD wFlags);
void PASCAL Walk286(
DWORD dwBlock,
GLOBALENTRY FAR *lpGlobal,
WORD wFlags);
DWORD PASCAL Walk286Handle(
HANDLE hBlock);
WORD PASCAL WalkLoc286Count(
HANDLE hHeap);
HANDLE PASCAL WalkLoc286First(
HANDLE hHeap);
void PASCAL WalkLoc286(
WORD wBlock,
LOCALENTRY FAR *lpLocal,
HANDLE hHeap);
BOOL PASCAL TaskInfo(
TASKENTRY FAR *lpTask,
WORD wBlock);
WORD PASCAL StackFrameFirst(
STACKTRACEENTRY FAR *lpStack,
HANDLE hTDB);
BOOL PASCAL StackFrameNext(
STACKTRACEENTRY FAR *lpStack);
HANDLE PASCAL UserGdiDGROUP(
HANDLE hModule);
DWORD PASCAL UserGdiSpace(
HANDLE hData);
WORD PASCAL HelperVerifySeg(
WORD wSeg,
WORD wcb);
WORD PASCAL HelperHandleToSel(
HANDLE h);
void PASCAL HelperGlobalType(
GLOBALENTRY FAR *lpGlobal);
WORD PASCAL HelperGrabSelector(void);
void PASCAL HelperReleaseSelector(
WORD wSelector);
void PASCAL UserGdiType(
LOCALENTRY FAR *lpLocal);
BOOL PASCAL NotifyInit(void);
void PASCAL NotifyUnInit(void);
BOOL PASCAL NotifyIsHooked(
HANDLE hTask);
BOOL PASCAL InterruptInit(void);
void PASCAL InterruptUnInit(void);
BOOL PASCAL InterruptIsHooked(
HANDLE hTask);
BOOL PASCAL SignalRegister(
HANDLE hTask);
BOOL PASCAL SignalUnRegister(
HANDLE hTask);
void FAR PASCAL HelperSignalProc(void);
DWORD PASCAL HelperSetSignalProc(
HANDLE hTask,
DWORD lpfn);
BOOL PASCAL ClassInfo(
CLASSENTRY FAR *lpClass,
WORD wOffset);
DWORD PASCAL HelperSegLen(
WORD wSeg);
#endif