mirror of https://github.com/lianthony/NT4.0
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.
396 lines
9.1 KiB
396 lines
9.1 KiB
/*
|
|
** WARNING: DO NOT MODIFY THIS CODE. IT IS IMPORTED FROM
|
|
** -S \\RASTAMAN\OSDEBUG4 -P OSDEBUG4\OSDEBUG\INCLUDE AND IS KEPT UP TO
|
|
** DATE DAILY BY THE BUILD PROCESS.
|
|
**
|
|
*/
|
|
/*++
|
|
|
|
Copyright (c) 1993 Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
odp.h
|
|
|
|
Abstract:
|
|
|
|
This is part of OSDebug version 4.
|
|
|
|
These are types and data which are private to OSDebug and the
|
|
components below it: TL, EM and DM.
|
|
|
|
Author:
|
|
|
|
Kent D. Forschmiedt (kentf)
|
|
|
|
Environment:
|
|
|
|
Win32, User Mode
|
|
|
|
--*/
|
|
|
|
#ifndef _ODP_
|
|
#define _ODP_
|
|
|
|
typedef enum _EMF {
|
|
|
|
emfDebugPacket,
|
|
|
|
emfRegisterDBF,
|
|
emfInit,
|
|
emfGetModel,
|
|
emfUnInit,
|
|
emfDetach,
|
|
emfAttach,
|
|
emfGetInfo,
|
|
emfSetup,
|
|
emfConnect,
|
|
emfDisconnect,
|
|
|
|
emfCreateHpid,
|
|
emfDestroyHpid,
|
|
emfDestroyHtid,
|
|
|
|
emfSetMulti,
|
|
emfDebugger,
|
|
|
|
emfProgramLoad,
|
|
emfDebugActive,
|
|
emfSetPath,
|
|
emfProgramFree,
|
|
|
|
emfThreadStatus,
|
|
emfProcessStatus,
|
|
emfFreezeThread,
|
|
emfSetThreadPriority,
|
|
|
|
emfGetExceptionState,
|
|
emfSetExceptionState,
|
|
|
|
emfGetModuleList,
|
|
|
|
emfGo,
|
|
emfSingleStep,
|
|
emfRangeStep,
|
|
emfReturnStep,
|
|
emfStop,
|
|
|
|
emfBreakPoint,
|
|
|
|
emfSetupExecute,
|
|
emfStartExecute,
|
|
emfCleanUpExecute,
|
|
|
|
emfGetAddr,
|
|
emfSetAddr,
|
|
emfFixupAddr,
|
|
emfUnFixupAddr,
|
|
emfSetEmi,
|
|
emfRegisterEmi,
|
|
emfUnRegisterEmi,
|
|
emfCompareAddrs,
|
|
emfGetObjLength,
|
|
emfGetMemoryInfo,
|
|
|
|
emfReadMemory,
|
|
emfWriteMemory,
|
|
|
|
emfGetRegStruct,
|
|
emfGetFlagStruct,
|
|
emfGetReg,
|
|
emfSetReg,
|
|
emfGetFlag,
|
|
emfSetFlag,
|
|
emfSaveRegs,
|
|
emfRestoreRegs,
|
|
|
|
emfUnassemble,
|
|
emfGetPrevInst,
|
|
emfAssemble,
|
|
|
|
emfGetFrame,
|
|
|
|
emfMetric,
|
|
|
|
emfGetMessageMap,
|
|
emfGetMessageMaskMap,
|
|
|
|
emfInfoReply,
|
|
emfContinue,
|
|
|
|
emfReadFile,
|
|
emfWriteFile,
|
|
|
|
emfShowDebuggee,
|
|
emfGetTaskList,
|
|
emfSystemService,
|
|
emfSetDebugMode,
|
|
|
|
emfMax
|
|
|
|
} EMF;
|
|
|
|
typedef enum {
|
|
dbcoCreateThread = dbcMax,
|
|
dbcoNewProc,
|
|
|
|
dbcoMax
|
|
} DBCO; // Debug CallBacks Osdebug specific
|
|
|
|
// the set of transport layer commands process by TLFunc and DMTLFunc
|
|
|
|
typedef enum {
|
|
tlfRegisterDBF, // register the debugger helper functions
|
|
tlfInit, // initialize/create a (specific) transport layer
|
|
tlfDestroy, // vaporize any tl structs created
|
|
tlfConnect, // connect to the companion transport layer
|
|
tlfDisconnect, // disconnected from the companion transport layer
|
|
tlfSendVersion, // Send the version packet to the remote side
|
|
tlfGetVersion, // Request the version packet from the remote side
|
|
tlfSetBuffer, // set the data buffer to be used for incoming packets
|
|
tlfDebugPacket, // send the debug packet to the debug monitor
|
|
tlfRequest, // request data from the companion transport layer
|
|
tlfReply, // reply to a data request message
|
|
tlfGetInfo, // return an id string and other data
|
|
tlfSetup, // set up the transport layer
|
|
tlfGetProc, // return the true TLFUNC proc for the htl
|
|
tlfLoadDM, // load the DM module
|
|
tlfSetErrorCB, // Set the address of the error callback function
|
|
tlfPoll, // WIN32S: enter polling loop
|
|
tlfRemoteQuit, // signal loss of connection
|
|
tlfMax
|
|
} _TLF;
|
|
typedef DWORD TLF;
|
|
|
|
//
|
|
// callbacks the TL uses to communicate with shell -- stub or client.
|
|
//
|
|
typedef enum {
|
|
tlcbDisconnect, // Transport layer was disconnected normally
|
|
tlcbMax
|
|
} _TLCB;
|
|
typedef DWORD TLCB;
|
|
|
|
|
|
typedef XOSD (FAR PASCAL LOADDS *TLFUNC) ( TLF, HPID, LPARAM, LPARAM );
|
|
typedef XOSD (FAR PASCAL LOADDS *EMFUNC) ( EMF, HPID, HTID, LPARAM, LPARAM );
|
|
typedef XOSD (FAR PASCAL LOADDS *TLFUNCTYPE) ( TLF, HPID, LPARAM, LPARAM );
|
|
typedef XOSD (FAR PASCAL LOADDS *DMTLFUNCTYPE) ( TLF, HPID, LPARAM, LPARAM );
|
|
typedef XOSD (FAR PASCAL LOADDS *TLCALLBACKTYPE) (HPID, LPARAM, LPARAM );
|
|
typedef VOID (FAR PASCAL LOADDS *LPDMINIT) ( DMTLFUNCTYPE, LPVOID );
|
|
typedef VOID (FAR PASCAL LOADDS *LPDMFUNC) ( DWORD, LPBYTE );
|
|
typedef DWORD (FAR PASCAL LOADDS *LPDMDLLINIT) ( LPDBF );
|
|
typedef XOSD (FAR PASCAL LOADDS *LPUISERVERCB) (TLCB, HPID, HTID, LPARAM, LPARAM );
|
|
|
|
|
|
|
|
DECLARE_HANDLE32(HEMP);
|
|
|
|
typedef struct _THREADINFO {
|
|
HPID hpid;
|
|
HLLI llemp;
|
|
} THREADINFO;
|
|
typedef THREADINFO FAR *LPTHREADINFO; // Thread information
|
|
|
|
typedef struct _PROCESSINFO {
|
|
HTL htl;
|
|
HEMP hempNative;
|
|
HLLI llemp;
|
|
DWORD fNative;
|
|
DWORD lastmodel;
|
|
LPFNSVC lpfnsvcCC;
|
|
HLLI lltid;
|
|
} PROCESSINFO;
|
|
typedef PROCESSINFO FAR *LPPROCESSINFO; // Process information
|
|
|
|
typedef struct _EMS {
|
|
EMFUNC emfunc;
|
|
EMTYPE emtype;
|
|
HLLI llhpid;
|
|
DWORD model;
|
|
} EMS; // Execution Model Structure - per EM
|
|
typedef EMS FAR *LPEMS;
|
|
|
|
typedef struct _EMP {
|
|
HEM hem;
|
|
EMFUNC emfunc;
|
|
EMTYPE emtype;
|
|
DWORD model;
|
|
} EMP; // Execution Model Structure - per process
|
|
typedef EMP FAR *LPEMP;
|
|
|
|
typedef struct _TLS {
|
|
TLFUNC tlfunc;
|
|
HLLI llpid;
|
|
} TLS; // Transport Layer Structure
|
|
typedef TLS FAR *LPTL;
|
|
|
|
typedef struct _OSDFILE {
|
|
HPID hpid;
|
|
DWORD dwPrivateData; // EM's representation of the file
|
|
} OSDFILE;
|
|
typedef OSDFILE FAR * LPOSDFILE;
|
|
|
|
//
|
|
// Compare Address Struct
|
|
//
|
|
typedef struct _CAS {
|
|
LPADDR lpaddr1;
|
|
LPADDR lpaddr2;
|
|
LPDWORD lpResult;
|
|
} CAS;
|
|
typedef CAS FAR * LPCAS;
|
|
|
|
//
|
|
// Range Step Struct
|
|
//
|
|
typedef struct _RSS {
|
|
LPADDR lpaddrMin;
|
|
LPADDR lpaddrMax;
|
|
LPEXOP lpExop;
|
|
} RSS;
|
|
typedef RSS FAR * LPRSS;
|
|
|
|
//
|
|
// read memory struct
|
|
//
|
|
typedef struct _RWMS {
|
|
LPADDR lpaddr;
|
|
LPVOID lpbBuffer;
|
|
DWORD cbBuffer;
|
|
LPDWORD lpcb;
|
|
} RWMS;
|
|
typedef RWMS FAR * LPRWMS;
|
|
|
|
//
|
|
// Get Object Length struct
|
|
//
|
|
typedef struct _GOL {
|
|
LPADDR lpaddr;
|
|
LPUOFF32 lplBase;
|
|
LPUOFF32 lplLen;
|
|
} GOL;
|
|
typedef GOL FAR * LPGOL;
|
|
|
|
//
|
|
// Get Previous Instruction Structure
|
|
//
|
|
typedef struct _GPIS {
|
|
LPADDR lpaddr;
|
|
LPUOFF32 lpuoffset;
|
|
} GPIS;
|
|
typedef GPIS FAR * LPGPIS;
|
|
|
|
//
|
|
// Set Debug Mode Structure
|
|
//
|
|
typedef struct _SDMS {
|
|
DBM dbmService;
|
|
LPVOID lpvData;
|
|
DWORD cbData;
|
|
} SDMS;
|
|
typedef SDMS FAR * LPSDMS;
|
|
|
|
typedef struct _SSS {
|
|
SSVC ssvc;
|
|
DWORD cbSend;
|
|
DWORD cbReturned;
|
|
BYTE rgbData[];
|
|
} SSS;
|
|
typedef SSS FAR * LPSSS;
|
|
|
|
//
|
|
// The following structure is used by the emfSetupExecute message
|
|
//
|
|
typedef struct _EXECUTE_STRUCT {
|
|
ADDR addr; /* Starting address for function */
|
|
HIND hindDm; /* This is the DMs handle */
|
|
HDEP lphdep; /* Handle of save area */
|
|
DWORD fIgnoreEvents:1; /* Ignore events coming back? */
|
|
DWORD fFar:1; /* Is the function a _far routine */
|
|
} EXECUTE_STRUCT;
|
|
typedef EXECUTE_STRUCT FAR * LPEXECUTE_STRUCT;
|
|
|
|
//
|
|
// Load DM packet, used by TL
|
|
//
|
|
typedef struct _LOADDMSTRUCT {
|
|
LPSTR lpDmName;
|
|
LPSTR lpDmParams;
|
|
} LOADDMSTRUCT, FAR * LPLOADDMSTRUCT;
|
|
|
|
|
|
void PASCAL LOADDS ODPDKill ( LPVOID );
|
|
|
|
void PASCAL LOADDS EMKill ( LPVOID );
|
|
int PASCAL LOADDS EMHpidCmp ( LPVOID, LPVOID, LONG );
|
|
void PASCAL LOADDS EMPKill ( LPVOID );
|
|
|
|
void PASCAL LOADDS TLKill ( LPVOID );
|
|
|
|
void PASCAL LOADDS NullKill ( LPVOID );
|
|
int PASCAL LOADDS NullComp ( LPVOID, LPVOID, LONG );
|
|
|
|
typedef struct _EMCB {
|
|
XOSD (PASCAL LOADDS *lpfnCallBackDB) ( DBC, HPID, HTID, DWORD, DWORD, VOID FAR * );
|
|
XOSD (PASCAL LOADDS *lpfnCallBackTL) ( TLF, HPID, DWORD, VOID FAR * );
|
|
XOSD (PASCAL LOADDS *lpfnCallBackNT) ( EMF, HPID, HTID, DWORD, VOID FAR * );
|
|
XOSD (PASCAL LOADDS *lpfnCallBackEM) ( EMF, HPID, HTID, DWORD, DWORD, VOID FAR * );
|
|
} EMCB; // Execution Model CallBacks
|
|
typedef EMCB FAR *LPEMCB;
|
|
|
|
typedef struct _REMI {
|
|
HEMI hemi;
|
|
LSZ lsz;
|
|
} REMI; // Register EMI structure
|
|
typedef REMI FAR * LPREMI;
|
|
|
|
// packet used by OSDProgramLoad
|
|
typedef struct _PRL {
|
|
DWORD dwChildFlags;
|
|
DWORD cbRemoteExe;
|
|
DWORD cbWorkingDir;
|
|
DWORD cbArgs;
|
|
CHAR lszRemoteExe[];
|
|
// CHAR lszArgs[];
|
|
// CHAR lszWorkingDir[];
|
|
} PRL; // PRogram Load structure
|
|
typedef PRL FAR * LPPRL;
|
|
|
|
|
|
|
|
#define MHAlloc (*lpdbf->lpfnMHAlloc)
|
|
#define MHRealloc (*lpdbf->lpfnMHRealloc)
|
|
#define MHFree (*lpdbf->lpfnMHFree)
|
|
|
|
#define LLInit (*lpdbf->lpfnLLInit)
|
|
#define LLCreate (*lpdbf->lpfnLLCreate)
|
|
#define LLAdd (*lpdbf->lpfnLLAdd)
|
|
#define LLInsert (*lpdbf->lpfnLLInsert)
|
|
#define LLDelete (*lpdbf->lpfnLLDelete)
|
|
#define LLNext (*lpdbf->lpfnLLNext)
|
|
#define LLDestroy (*lpdbf->lpfnLLDestroy)
|
|
#define LLFind (*lpdbf->lpfnLLFind)
|
|
#define LLSize (*lpdbf->lpfnLLSize)
|
|
#define LLLock (*lpdbf->lpfnLLLock)
|
|
#define LLUnlock (*lpdbf->lpfnLLUnlock)
|
|
#define LLLast (*lpdbf->lpfnLLLast)
|
|
#define LLAddHead (*lpdbf->lpfnLLAddHead)
|
|
#define LLRemove (*lpdbf->lpfnLLRemove)
|
|
|
|
#define LBAssert (*lpdbf->lpfnLBAssert)
|
|
#define DHGetNumber (*lpdbf->lpfnDHGetNumber)
|
|
|
|
#define SHLocateSymbolFile (*lpdbf->lpfnSHLocateSymbolFile)
|
|
#define SHGetSymbol (*lpdbf->lpfnSHGetSymbol)
|
|
#define SHLpGSNGetTable (*lpdbf->lpfnSHLpGSNGetTable)
|
|
#define SHFindSymbol (*lpdbf->lpfnSHFindSymbol)
|
|
|
|
#define SHGetDebugData (*lpdbf->lpfnSHGetDebugData)
|
|
#define SHGetPublicAddr (*lpdbf->lpfnSHGetPublicAddr)
|
|
#define SHAddrToPublicName (*lpdbf->lpfnSHAddrToPublicName)
|
|
|
|
|
|
|
|
|
|
#endif // _ODP_
|