⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 kdp.h

📁 wince下的源代码集合打包
💻 H
📖 第 1 页 / 共 2 页
字号:
    IN PVOID BaseOfDll;    IN ULONG ProcessId;    IN ULONG CheckSum;    IN ULONG SizeOfImage;} KD_SYMBOLS_INFO, *PKD_SYMBOLS_INFO;extern BOOLEAN KdDebuggerNotPresent;typedef enum {    ContinueError = FALSE,    ContinueSuccess = TRUE,    ContinueProcessorReselected,    ContinueNextProcessor} KCONTINUE_STATUS;typedef ULONG KSPIN_LOCK;  //// Miscellaneous//#if DBG#define KD_ASSERT(exp) assert(exp)#else#define KD_ASSERT(exp)#endif//// ReadControlSpace Api commands//#define HANDLE_PROCESS_INFO_REQUEST    0 #define HANDLE_GET_NEXT_OFFSET_REQUEST 1#define HANDLE_STACKWALK_REQUEST       2#define HANDLE_THREADSTACK_REQUEST     3#define HANDLE_THREADSTACK_TERMINATE   4#define HANDLE_RELOAD_MODULES_REQUEST  5#define HANDLE_RELOAD_MODULES_INFO	   6#define HANDLE_PROCESS_ZONE_REQUEST    7#define HANDLE_KERNEL_DATA_AREA		   8 #define HANDLE_VERIFY_MODULE_LOAD	   9 #define HANDLE_PROCESS_THREAD_INFO_REQ 10#define HANDLE_GETCURPROCTHREAD 11//// WriteControlSpace Api commands//#define HANDLE_PROCESS_SWITCH_REQUEST  0#define HANDLE_THREAD_SWITCH_REQUEST   1#define HANDLE_STACKWALK_REQUEST       2#define HANDLE_BKPT_GLOBAL_REQUEST     3#define HANDLE_BKPT_THREAD_REQUEST     4VOID NKDebuggerPrintfW(LPWSTR lpszFmt, ...);/*************************************************************************/extern int ppshfile;extern int dwCurSetting;#define KDZONE_MOVE   0x1#define KDZONE_BREAK  0x2#define KDZONE_API    0x4#define KDZONE_TRAP	  0x8#define KDZONE_DBG	  0x10#define KDZONE_CTRL   0x20#define KDZONE_STACKW 0x40#define KDZONE_HAL	0x80#define _O_RDONLY	0x0000	/* open for reading only */#define _O_WRONLY	0x0001	/* open for writing only */#define _O_RDWR 	0x0002	/* open for reading and writing */#define _O_APPEND	0x0008	/* writes done at eof */#define _O_CREAT	0x0100	/* create and open file */#define _O_TRUNC	0x0200	/* open and truncate */#define _O_EXCL 	0x0400	/* open only if file doesn't already exist */WORD WINAPI ProcessZone(LPBYTE Buffer);VOID NKOtherPrintfW(LPWSTR lpszFmt, ...);#define DBGOTHER#if defined(DBGOTHER)#define DEBUGGERMSG(cond,printf_exp) \		if (cond & dwCurSetting) NKOtherPrintfW printf_exp#elif defined(DEBUG_DEBUGGER)#pragma message("Hello from the debug debugger\r\n")#define DEBUG 1#define DEBUGGERMSG(cond,printf_exp)   \   ((cond)?(NKDebuggerPrintfW printf_exp),1:0)#define DEBUG_OUT(x)                  DebugPrint(x)#define DEBUG_OUT1(x, a1)             DebugPrint(x, a1)#define DEBUG_OUT2(x, a1, a2)         DebugPrint(x, a1, a2)#define DEBUG_OUT3(x, a1, a2, a3)     DebugPrint(x, a1, a2, a3)#define DEBUG_OUT4(x, a1, a2, a3, a4) DebugPrint(x, a1, a2, a3, a4)#else#define DEBUGGERMSG(cond,printf_exp)#define DEBUG_OUT(x)#define DEBUG_OUT1(x, a1)#define DEBUG_OUT2(x, a1, a2)#define DEBUG_OUT3(x, a1, a2, a3)#define DEBUG_OUT4(x, a1, a2, a3, a4)#endif/*************************************************************************///// Define constants.//#define BREAKPOINT_TABLE_SIZE 32//// Addresses above GLOBAL_BREAKPOINT_LIMIT are either in system space// or part of dynlink, so we treat them as global.//#define GLOBAL_BREAKPOINT_LIMIT 1610612736L // 1.5gigabytes//// Define breakpoint table entry structure.//#define KD_BREAKPOINT_IN_USE        0x00000001#define KD_BREAKPOINT_NEEDS_WRITE   0x00000002#define KD_BREAKPOINT_SUSPENDED     0x00000004#if defined(THUMBSUPPORT) || defined(MIPS16SUPPORT)#define KD_BREAKPOINT_16BIT         0x00000008#endif//// status Constants for Packet waiting//#define KDP_PACKET_RECEIVED 0#define KDP_PACKET_TIMEOUT 1#define KDP_PACKET_RESEND 2typedef struct _BREAKPOINT_ENTRY {    ULONG Flags;    ULONG DirectoryTableBase;    PVOID Address;    PVOID KAddress;    PTHREAD  pThrd;    KDP_BREAKPOINT_TYPE Content;} BREAKPOINT_ENTRY, *PBREAKPOINT_ENTRY;extern BOOLEAN bGlobalBreakPoint;//// Generic test for success on any status value (non-negative numbers// indicate success).//#define NT_SUCCESS(Status) ((long)(Status) >= 0)#define ARGUMENT_PRESENT(ArgumentPointer)    (\    (CHAR *)(ArgumentPointer) != (CHAR *)(NULL) )#if defined(SHx)void LoadDebugSymbols(void);//// User Break Controller memory-mapped addresses//#if SH4#define UBCBarA  0xFF200000        // 32 bit Break Address A#define UBCBamrA 0xFF200004        // 8 bit  Break Address Mask A#define UBCBbrA  0xFF200008        // 16 bit Break Bus Cycle A#define UBCBasrA 0xFF000014        // 8 bit  Break ASID A#define UBCBarB  0xFF20000C       // 32 bit Break Address B#define UBCBamrB 0xFF200010       // 8 bit  Break Address Mask B#define UBCBbrB  0xFF200014       // 16 bit Break Bus Cycle A#define UBCBasrB 0xFF000018       // 8 bit  Break ASID B#define UBCBdrB  0xFF200018       // 32 bit Break Data B#define UBCBdmrB 0xFF20001C       // 32 bit Break Data Mask B#define UBCBrcr  0xFF200020       // 16 bit Break Control Register#else#define UBCBarA    0xffffffb0#define UBCBamrA   0xffffffb4#define UBCBbrA    0xffffffb8#define UBCBasrA   0xffffffe4#define UBCBarB    0xffffffa0#define UBCBamrB   0xffffffa4#define UBCBbrB    0xffffffa8#define UBCBasrB   0xffffffe8#define UBCBdrB    0xffffff90#define UBCBdmrB   0xffffff94#define UBCBrcr    0xffffff98#endif#endif#define READ_REGISTER_UCHAR(addr) (*(volatile unsigned char *)(addr))#define READ_REGISTER_USHORT(addr) (*(volatile unsigned short *)(addr))#define READ_REGISTER_ULONG(addr) (*(volatile unsigned long *)(addr))#define WRITE_REGISTER_UCHAR(addr,val) (*(volatile unsigned char *)(addr) = (val))#define WRITE_REGISTER_USHORT(addr,val) (*(volatile unsigned short *)(addr) = (val))#define WRITE_REGISTER_ULONG(addr,val) (*(volatile unsigned long *)(addr) = (val))//// Define Kd function prototypes.//#if defined(MIPS_HAS_FPU) || defined(SH4) || defined(x86)VOID FPUFlushContext (VOID);#endifVOIDKdpReboot (    VOID    );BOOLEANKdpPrintString (    IN LPCWSTR Output    );ULONGKdpAddBreakpoint (    IN PVOID Address    );BOOLEANKdpDeleteBreakpoint (    IN ULONG Handle    );ULONGKdpMoveMemory (    IN PCHAR Destination,    IN PCHAR Source,    IN ULONG Length    );VOIDKdpQuickMoveMemory (    IN PCHAR Destination,    IN PCHAR Source,    IN ULONG Length    );USHORTKdpReceivePacket (    IN ULONG ExpectedPacketType,    OUT PSTRING MessageHeader,    OUT PSTRING MessageData,    OUT PULONG DataLength    );VOIDKdpSetLoadState(    IN PDBGKD_WAIT_STATE_CHANGE WaitStateChange,    IN CONTEXT *ContextRecord    );VOIDKdpSetStateChange(    IN PDBGKD_WAIT_STATE_CHANGE WaitStateChange,    IN PEXCEPTION_RECORD ExceptionRecord,    IN CONTEXT * ContextRecord,    IN BOOLEAN SecondChance    );VOIDKdpGetStateChange(    IN PDBGKD_MANIPULATE_STATE ManipulateState,    IN CONTEXT * ContextRecord    );VOIDKdpSendPacket (    IN ULONG PacketType,    IN PSTRING MessageHeader,    IN PSTRING MessageData OPTIONAL    );ULONGKdpTrap (    IN PEXCEPTION_RECORD ExceptionRecord,    IN CONTEXT * ContextRecord,    IN BOOLEAN SecondChance    );VOIDKdpDisplayString (    IN PCHAR Output    );VOIDKdpWriteComPacket (    USHORT,    USHORT,    PVOID,    PVOID,    PVOID    );BOOLEANKdpReadComPacket (    VOID    );BOOLEANKdpReportExceptionStateChange (    IN PEXCEPTION_RECORD ExceptionRecord,    IN OUT CONTEXT * ContextRecord,    IN BOOLEAN SecondChance    );BOOLEANKdpReportLoadSymbolsStateChange (    IN PSTRING PathName,    IN PKD_SYMBOLS_INFO SymbolInfo,    IN BOOLEAN UnloadSymbols,    IN OUT CONTEXT * ContextRecord    );KCONTINUE_STATUSKdpSendWaitContinue(    IN ULONG PacketType,    IN PSTRING MessageHeader,    IN PSTRING MessageData OPTIONAL,    IN OUT CONTEXT * ContextRecord    );VOIDKdpReadVirtualMemory(    IN PDBGKD_MANIPULATE_STATE m,    IN PSTRING AdditionalData,    IN CONTEXT * Context    );VOIDKdpWriteVirtualMemory(    IN PDBGKD_MANIPULATE_STATE m,    IN PSTRING AdditionalData,    IN CONTEXT * Context    );VOIDKdpReadPhysicalMemory(    IN PDBGKD_MANIPULATE_STATE m,    IN PSTRING AdditionalData,    IN CONTEXT * Context    );VOIDKdpWritePhysicalMemory(    IN PDBGKD_MANIPULATE_STATE m,    IN PSTRING AdditionalData,    IN CONTEXT * Context    );VOIDKdpGetContext(    IN PDBGKD_MANIPULATE_STATE m,    IN PSTRING AdditionalData,    IN CONTEXT * Context    );VOIDKdpSetContext(    IN PDBGKD_MANIPULATE_STATE m,    IN PSTRING AdditionalData,    IN CONTEXT * Context    );VOIDKdpWriteBreakpoint(    IN PDBGKD_MANIPULATE_STATE m,    IN PSTRING AdditionalData,    IN CONTEXT * Context    );VOIDKdpRestoreBreakpoint(    IN PDBGKD_MANIPULATE_STATE m,    IN PSTRING AdditionalData,    IN CONTEXT * Context    );VOIDKdpReadControlSpace(    IN PDBGKD_MANIPULATE_STATE m,    IN PSTRING AdditionalData,    IN CONTEXT * Context    );VOIDKdpWriteControlSpace(    IN PDBGKD_MANIPULATE_STATE m,    IN PSTRING AdditionalData,    IN CONTEXT * Context    );VOIDKdpReadIoSpace(    IN PDBGKD_MANIPULATE_STATE m,    IN PSTRING AdditionalData,    IN CONTEXT * Context    );VOIDKdpWriteIoSpace(    IN PDBGKD_MANIPULATE_STATE m,    IN PSTRING AdditionalData,    IN CONTEXT * Context    );VOIDKdpGetVersion(    IN PDBGKD_MANIPULATE_STATE m    );NTSTATUSKdpWriteBreakPointEx(    IN PDBGKD_MANIPULATE_STATE m,    IN PSTRING AdditionalData,    IN CONTEXT * Context    ); VOIDKdpRestoreBreakPointEx(    IN PDBGKD_MANIPULATE_STATE m,    IN PSTRING AdditionalData,    IN CONTEXT * Context    );NTSTATUSKdpManipulateBreakPoint(    IN PDBGKD_MANIPULATE_STATE m,    IN PSTRING AdditionalData,    IN CONTEXT * Context);	//// Define external references.//extern BOOL KdpUseTCPSockets;extern BOOL KdpUseUDPSockets;extern BOOL KdpUseEdbg;#define KDP_MESSAGE_BUFFER_SIZE (16384)extern BREAKPOINT_ENTRY KdpBreakpointTable[BREAKPOINT_TABLE_SIZE];extern KSPIN_LOCK KdpDebuggerLock;extern KDP_BREAKPOINT_TYPE KdpBreakpointInstruction;extern UCHAR KdpMessageBuffer[KDP_MESSAGE_BUFFER_SIZE];extern ULONG KdpOweBreakpoint;extern ULONG KdpNextPacketIdToSend;extern ULONG KdpPacketIdExpected;typedef struct {    ULONG Addr;                 // pc address of breakpoint    ULONG Flags;                // Flags bits    ULONG Calls;                // # of times traced routine called    ULONG CallsLastCheck;       // # of calls at last periodic (1s) check    ULONG MaxCallsPerPeriod;    ULONG MinInstructions;      // largest number of instructions for 1 call    ULONG MaxInstructions;      // smallest # of instructions for 1 call    ULONG TotalInstructions;    // total instructions for all calls    ULONG Handle;               // handle in (regular) bpt table    PVOID Thread;               // Thread that's skipping this BP    ULONG ReturnAddress;        // return address (if not COUNTONLY)} DBGKD_INTERNAL_BREAKPOINT, *PDBGKD_INTERNAL_BREAKPOINT;#define DBGKD_MAX_INTERNAL_BREAKPOINTS 20extern DBGKD_INTERNAL_BREAKPOINT KdpInternalBPs[DBGKD_MAX_INTERNAL_BREAKPOINTS];void CpuContextToContext(CONTEXT *pCtx, CPUCONTEXT *pCpuCtx);//// Prototypes...//USHORTKdPortGetByte (    OUT PUCHAR Input    );VOIDKdPortPutByte (    IN UCHAR Output    );VOIDKeStallExecutionProcessor (    ULONG Seconds    );BOOLEANSH3KdInit(    VOID    );VOIDDumpKdContext(    IN CONTEXT *ContextRecord    );//// Private procedure prototypes//VOIDKdpInitCom(    VOID    );USHORTKdpReceivePacketLeader (    IN ULONG PacketType,    OUT PULONG PacketLeader    );VOIDKdClearCommError (    VOID    );// Ethernet debug routinesBOOL FillEdbgBuffer();BOOL WriteEdbgBuffer();// Function called to switch over to ethernet transportBOOL SwitchKdbgToEther(BOOL ToEther);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -