28 #define KDDBGPRINT(...) 31 #define KDDBGPRINT KdpDbgPrint 39 #define gdb_pid_to_handle gdb_tid_to_handle 45 #define handle_to_gdb_pid handle_to_gdb_tid 54 Manipulate->ApiNumber = ApiNumber;
55 Manipulate->Processor = StateChange->Processor;
56 Manipulate->ProcessorLevel = StateChange->ProcessorLevel;
127 # define KdpGetContextPc(Context) \ 129 # define KdpSetContextPc(Context, ProgramCounter) \ 130 ((Context)->Eip = (ProgramCounter)) 131 # define KD_BREAKPOINT_TYPE UCHAR 132 # define KD_BREAKPOINT_SIZE sizeof(UCHAR) 133 # define KD_BREAKPOINT_VALUE 0xCC 135 # define KdpSetSingleStep(Context) \ 136 ((Context)->EFlags |= EFLAGS_TF) 137 #elif defined(_M_AMD64) 138 # define KdpGetContextPc(Context) \ 140 # define KdpSetContextPc(Context, ProgramCounter) \ 141 ((Context)->Rip = (ProgramCounter)) 142 # define KD_BREAKPOINT_TYPE UCHAR 143 # define KD_BREAKPOINT_SIZE sizeof(UCHAR) 144 # define KD_BREAKPOINT_VALUE 0xCC 146 # define KdpSetSingleStep(Context) \ 147 ((Context)->EFlags |= EFLAGS_TF) 149 # error "Please define relevant macros for your architecture" FORCEINLINE HANDLE gdb_tid_to_handle(UINT_PTR Tid)
_In_ ULONG _In_ ULONG _In_ ULONG Length
KDSTATUS(* KDP_MANIPULATESTATE_HANDLER)(_Out_ DBGKD_MANIPULATE_STATE64 *State, _Out_ PSTRING MessageData, _Out_ PULONG MessageLength, _Inout_ PKD_CONTEXT KdContext)
void start_gdb_packet(void)
KDSTATUS gdb_receive_and_interpret_packet(_Out_ DBGKD_MANIPULATE_STATE64 *State, _Out_ PSTRING MessageData, _Out_ PULONG MessageLength, _Inout_ PKD_CONTEXT KdContext)
_In_ ULONG _In_ ULONG State
KDSTATUS ContinueManipulateStateHandler(_Out_ DBGKD_MANIPULATE_STATE64 *State, _Out_ PSTRING MessageData, _Out_ PULONG MessageLength, _Inout_ PKD_CONTEXT KdContext)
KDP_MANIPULATESTATE_HANDLER KdpManipulateStateHandler
DBGKD_ANY_WAIT_STATE_CHANGE CurrentStateChange
KDSTATUS gdb_send_debug_io(_In_ PSTRING String, _In_ BOOLEAN WithPrefix)
_Must_inspect_result_ _In_ WDFDEVICE _In_ WDFSTRING String
NTSTATUS(* NTAPI)(IN PFILE_FULL_EA_INFORMATION EaBuffer, IN ULONG EaLength, OUT PULONG ErrorOffset)
KDP_SEND_HANDLER KdpSendPacketHandler
KDSTATUS NTAPI KdpReceiveByte(_Out_ PUCHAR OutByte)
FORCEINLINE VOID InitManipulateFromStateChange(_In_ ULONG ApiNumber, _In_ const DBGKD_ANY_WAIT_STATE_CHANGE *StateChange, _Out_ DBGKD_MANIPULATE_STATE64 *Manipulate)
PETHREAD find_thread(_In_ UINT_PTR Pid, _In_ UINT_PTR Tid)
void send_gdb_ntstatus(_In_ NTSTATUS Status)
ULONG send_gdb_partial_binary(_In_ const VOID *Buffer, _In_ size_t Length)
KDSTATUS NTAPI gdb_receive_packet(_Inout_ PKD_CONTEXT KdContext)
KDDEBUGGER_DATA64 * KdDebuggerDataBlock
unsigned __int3264 UINT_PTR
KDSTATUS finish_gdb_packet(void)
PEPROCESS find_process(_In_ UINT_PTR Pid)
void send_gdb_partial_packet(_In_ const CHAR *Buffer)
KDSTATUS gdb_send_registers(void)
KDSTATUS gdb_send_exception(void)
KDSTATUS SetContextManipulateHandler(_Out_ DBGKD_MANIPULATE_STATE64 *State, _Out_ PSTRING MessageData, _Out_ PULONG MessageLength, _Inout_ PKD_CONTEXT KdContext)
LIST_ENTRY * ProcessListHead
KDSTATUS NTAPI KdpPollByte(OUT PUCHAR OutByte)
DBGKD_GET_VERSION64 KdVersion
VOID NTAPI KdpSendByte(_In_ UCHAR Byte)
KDSTATUS gdb_send_register(void)
BOOLEAN(* KDP_SEND_HANDLER)(_In_ ULONG PacketType, _In_ PSTRING MessageHeader, _In_ PSTRING MessageData)
KDSTATUS send_gdb_memory(_In_ const VOID *Buffer, size_t Length)
KDSTATUS send_gdb_packet(_In_ const CHAR *Buffer)
FORCEINLINE UINT_PTR handle_to_gdb_tid(HANDLE Handle)
void send_gdb_partial_memory(_In_ const VOID *Buffer, _In_ size_t Length)
KDSTATUS NTAPI KdpPollBreakIn(VOID)
LIST_ENTRY * ModuleListHead