Go to the source code of this file.
|
static BOOLEAN | FirstSendHandler (_In_ ULONG PacketType, _In_ PSTRING MessageHeader, _In_ PSTRING MessageData) |
|
static BOOLEAN | GetContextSendHandler (_In_ ULONG PacketType, _In_ PSTRING MessageHeader, _In_ PSTRING MessageData) |
|
static KDSTATUS | GetContextManipulateHandler (_Out_ DBGKD_MANIPULATE_STATE64 *State, _Out_ PSTRING MessageData, _Out_ PULONG MessageLength, _Inout_ PKD_CONTEXT KdContext) |
|
static BOOLEAN | SetContextSendHandler (_In_ ULONG PacketType, _In_ PSTRING MessageHeader, _In_ PSTRING MessageData) |
|
KDSTATUS | SetContextManipulateHandler (_Out_ DBGKD_MANIPULATE_STATE64 *State, _Out_ PSTRING MessageData, _Out_ PULONG MessageLength, _Inout_ PKD_CONTEXT KdContext) |
|
static void | send_kd_state_change (DBGKD_ANY_WAIT_STATE_CHANGE *StateChange) |
|
static void | send_kd_debug_io (_In_ DBGKD_DEBUG_IO *DebugIO, _In_ PSTRING String) |
|
static void | send_kd_state_manipulate (_In_ DBGKD_MANIPULATE_STATE64 *State, _In_ PSTRING MessageData) |
|
KDSTATUS | ContinueManipulateStateHandler (_Out_ DBGKD_MANIPULATE_STATE64 *State, _Out_ PSTRING MessageData, _Out_ PULONG MessageLength, _Inout_ PKD_CONTEXT KdContext) |
|
static BOOLEAN | GetVersionSendHandler (_In_ ULONG PacketType, _In_ PSTRING MessageHeader, _In_ PSTRING MessageData) |
|
static KDSTATUS | GetVersionManipulateStateHandler (_Out_ DBGKD_MANIPULATE_STATE64 *State, _Out_ PSTRING MessageData, _Out_ PULONG MessageLength, _Inout_ PKD_CONTEXT KdContext) |
|
KDSTATUS NTAPI | KdReceivePacket (_In_ ULONG PacketType, _Out_ PSTRING MessageHeader, _Out_ PSTRING MessageData, _Out_ PULONG DataLength, _Inout_ PKD_CONTEXT KdContext) |
|
VOID NTAPI | KdSendPacket (IN ULONG PacketType, IN PSTRING MessageHeader, IN PSTRING MessageData, IN OUT PKD_CONTEXT KdContext) |
|
◆ ContinueManipulateStateHandler()
Definition at line 213 of file kdpacket.c.
226 MessageData->Length = 0;
DBGKD_ANY_WAIT_STATE_CHANGE CurrentStateChange
static BOOLEAN InException
KDP_SEND_HANDLER KdpSendPacketHandler
KDP_MANIPULATESTATE_HANDLER KdpManipulateStateHandler
Referenced by handle_gdb_c(), and handle_gdb_s().
◆ FirstSendHandler()
Definition at line 293 of file kdpacket.c.
303 KDDBGPRINT(
"First KD packet is not a state change!\n");
DBGKD_ANY_WAIT_STATE_CHANGE CurrentStateChange
#define handle_to_gdb_pid
struct _EPROCESS * PEPROCESS
HANDLE NTAPI PsGetThreadProcessId(IN PETHREAD Thread)
KDP_SEND_HANDLER KdpSendPacketHandler
_In_opt_ PFILE_OBJECT _In_opt_ PETHREAD Thread
#define PACKET_TYPE_KD_STATE_CHANGE64
HANDLE NTAPI PsGetThreadId(IN PETHREAD Thread)
static KDSTATUS GetVersionManipulateStateHandler(_Out_ DBGKD_MANIPULATE_STATE64 *State, _Out_ PSTRING MessageData, _Out_ PULONG MessageLength, _Inout_ PKD_CONTEXT KdContext)
FORCEINLINE UINT_PTR handle_to_gdb_tid(HANDLE Handle)
struct _ETHREAD * PETHREAD
KDP_MANIPULATESTATE_HANDLER KdpManipulateStateHandler
◆ GetContextManipulateHandler()
Definition at line 62 of file kdpacket.c.
73 MessageData->Length = 0;
DBGKD_ANY_WAIT_STATE_CHANGE CurrentStateChange
static BOOLEAN GetContextSendHandler(_In_ ULONG PacketType, _In_ PSTRING MessageHeader, _In_ PSTRING MessageData)
#define DbgKdGetContextApi
KDP_SEND_HANDLER KdpSendPacketHandler
KDP_MANIPULATESTATE_HANDLER KdpManipulateStateHandler
Referenced by GetVersionSendHandler(), and send_kd_state_change().
◆ GetContextSendHandler()
Definition at line 37 of file kdpacket.c.
48 || (MessageData->Length <
sizeof(*
Context)))
50 KDDBGPRINT(
"ERROR: Received wrong packet from KD.\n");
#define DbgKdGetContextApi
KDP_SEND_HANDLER KdpSendPacketHandler
#define PACKET_TYPE_KD_STATE_MANIPULATE
#define RtlCopyMemory(Destination, Source, Length)
Referenced by GetContextManipulateHandler().
◆ GetVersionManipulateStateHandler()
Definition at line 273 of file kdpacket.c.
DBGKD_ANY_WAIT_STATE_CHANGE CurrentStateChange
#define DbgKdGetVersionApi
static BOOLEAN GetVersionSendHandler(_In_ ULONG PacketType, _In_ PSTRING MessageHeader, _In_ PSTRING MessageData)
KDP_SEND_HANDLER KdpSendPacketHandler
KDP_MANIPULATESTATE_HANDLER KdpManipulateStateHandler
Referenced by FirstSendHandler().
◆ GetVersionSendHandler()
Definition at line 241 of file kdpacket.c.
254 KDDBGPRINT(
"Wrong packet received after asking for data.\n");
static KDSTATUS GetContextManipulateHandler(_Out_ DBGKD_MANIPULATE_STATE64 *State, _Out_ PSTRING MessageData, _Out_ PULONG MessageLength, _Inout_ PKD_CONTEXT KdContext)
GCC_ULONG64 PsLoadedModuleList
#define DbgKdGetVersionApi
GCC_ULONG64 PsActiveProcessHead
PFLT_MESSAGE_WAITER_QUEUE CONTAINING_RECORD(Csq, DEVICE_EXTENSION, IrpQueue)) -> WaiterQ.mLock) _IRQL_raises_(DISPATCH_LEVEL) VOID NTAPI FltpAcquireMessageWaiterLock(_In_ PIO_CSQ Csq, _Out_ PKIRQL Irql)
DBGKD_GET_VERSION64 KdVersion
KDDEBUGGER_DATA64 * KdDebuggerDataBlock
#define NT_SUCCESS(StatCode)
KDP_SEND_HANDLER KdpSendPacketHandler
#define PACKET_TYPE_KD_STATE_MANIPULATE
LIST_ENTRY * ProcessListHead
LIST_ENTRY * ModuleListHead
#define RtlCopyMemory(Destination, Source, Length)
KDP_MANIPULATESTATE_HANDLER KdpManipulateStateHandler
Referenced by GetVersionManipulateStateHandler().
◆ KdReceivePacket()
Definition at line 350 of file kdpacket.c.
378 MessageData->Length = 1;
379 MessageData->Buffer[0] = ignore ?
'i' :
'b';
393 KDDBGPRINT(
"We have a manipulate state handler.\n");
#define KdPacketNeedsResend
KDP_STATUS NTAPI KdpPollBreakIn(VOID)
_In_ ULONG _In_opt_ WDFREQUEST _In_opt_ PVOID _In_ size_t _In_ PVOID _In_ size_t _Out_ size_t * DataLength
#define PACKET_TYPE_KD_STATE_MANIPULATE
#define PACKET_TYPE_KD_DEBUG_IO
KDP_MANIPULATESTATE_HANDLER KdpManipulateStateHandler
#define PACKET_TYPE_KD_POLL_BREAKIN
◆ KdSendPacket()
Definition at line 409 of file kdpacket.c.
441 KDDBGPRINT(
"Unknown packet type %u.\n", PacketType);
static void send_kd_debug_io(_In_ DBGKD_DEBUG_IO *DebugIO, _In_ PSTRING String)
KDP_SEND_HANDLER KdpSendPacketHandler
#define PACKET_TYPE_KD_STATE_MANIPULATE
static void send_kd_state_change(DBGKD_ANY_WAIT_STATE_CHANGE *StateChange)
#define PACKET_TYPE_KD_STATE_CHANGE64
#define PACKET_TYPE_KD_DEBUG_IO
static void send_kd_state_manipulate(_In_ DBGKD_MANIPULATE_STATE64 *State, _In_ PSTRING MessageData)
◆ send_kd_debug_io()
Definition at line 173 of file kdpacket.c.
180 switch (DebugIO->ApiNumber)
187 KDDBGPRINT(
"Unknown ApiNumber %u.\n", DebugIO->ApiNumber);
static BOOLEAN InException
#define DbgKdGetStringApi
_Must_inspect_result_ _In_ WDFDEVICE _In_ WDFSTRING String
#define DbgKdPrintStringApi
KDSTATUS gdb_send_debug_io(_In_ PSTRING String, _In_ BOOLEAN WithPrefix)
Referenced by KdSendPacket().
◆ send_kd_state_change()
Definition at line 137 of file kdpacket.c.
149 KDDBGPRINT(
"Exception 0x%08x in thread p%p.%p.\n",
union _DBGKD_ANY_WAIT_STATE_CHANGE::@3496 u
DBGKD_ANY_WAIT_STATE_CHANGE CurrentStateChange
static KDSTATUS GetContextManipulateHandler(_Out_ DBGKD_MANIPULATE_STATE64 *State, _Out_ PSTRING MessageData, _Out_ PULONG MessageLength, _Inout_ PKD_CONTEXT KdContext)
static BOOLEAN InException
#define handle_to_gdb_pid
#define DbgKdExceptionStateChange
KDSTATUS gdb_send_exception()
#define DbgKdLoadSymbolsStateChange
HANDLE NTAPI PsGetThreadProcessId(IN PETHREAD Thread)
_In_opt_ PFILE_OBJECT _In_opt_ PETHREAD Thread
EXCEPTION_RECORD64 ExceptionRecord
HANDLE NTAPI PsGetThreadId(IN PETHREAD Thread)
DBGKM_EXCEPTION64 Exception
FORCEINLINE UINT_PTR handle_to_gdb_tid(HANDLE Handle)
struct _ETHREAD * PETHREAD
KDP_MANIPULATESTATE_HANDLER KdpManipulateStateHandler
Referenced by KdSendPacket().
◆ send_kd_state_manipulate()
Definition at line 194 of file kdpacket.c.
198 switch (
State->ApiNumber)
KDSTATUS gdb_send_registers(void)
#define DbgKdGetContextApi
Referenced by KdSendPacket().
◆ SetContextManipulateHandler()
Definition at line 107 of file kdpacket.c.
122 KDDBGPRINT(
"Wrong message length %u.\n", MessageData->MaximumLength);
DBGKD_ANY_WAIT_STATE_CHANGE CurrentStateChange
static BOOLEAN SetContextSendHandler(_In_ ULONG PacketType, _In_ PSTRING MessageHeader, _In_ PSTRING MessageData)
KDP_SEND_HANDLER KdpSendPacketHandler
#define DbgKdSetContextApi
#define RtlCopyMemory(Destination, Source, Length)
KDP_MANIPULATESTATE_HANDLER KdpManipulateStateHandler
Referenced by handle_gdb_c(), and handle_gdb_s().
◆ SetContextSendHandler()
Definition at line 84 of file kdpacket.c.
98 KDDBGPRINT(
"BAD BAD BAD not manipulating state for sending context.\n");
KDP_SEND_HANDLER KdpSendPacketHandler
#define PACKET_TYPE_KD_STATE_MANIPULATE
#define DbgKdSetContextApi
Referenced by SetContextManipulateHandler().
◆ CurrentContext
◆ CurrentStateChange
Definition at line 28 of file kdpacket.c.
Referenced by ContinueManipulateStateHandler(), find_thread(), FirstSendHandler(), gdb_send_exception(), gdb_send_register(), gdb_send_registers(), GetContextManipulateHandler(), GetVersionManipulateStateHandler(), handle_gdb_c(), handle_gdb_insert_breakpoint(), handle_gdb_query(), handle_gdb_read_mem(), handle_gdb_remove_breakpoint(), handle_gdb_write_mem(), send_kd_state_change(), and SetContextManipulateHandler().
◆ InException
◆ KdDebuggerDataBlock
◆ KdpManipulateStateHandler
Definition at line 26 of file kdpacket.c.
Referenced by ContinueManipulateStateHandler(), FirstSendHandler(), GetContextManipulateHandler(), GetVersionManipulateStateHandler(), GetVersionSendHandler(), handle_gdb_c(), handle_gdb_s(), KdReceivePacket(), ReadMemorySendHandler(), RestoreBreakPointSendHandler(), send_kd_state_change(), SetContextManipulateHandler(), WriteBreakPointSendHandler(), and WriteMemorySendHandler().
◆ KdpSendPacketHandler
Definition at line 25 of file kdpacket.c.
Referenced by ContinueManipulateStateHandler(), FirstSendHandler(), GetContextManipulateHandler(), GetContextSendHandler(), GetVersionManipulateStateHandler(), GetVersionSendHandler(), handle_gdb_insert_breakpoint(), handle_gdb_read_mem(), handle_gdb_remove_breakpoint(), handle_gdb_write_mem(), KdSendPacket(), ReadMemorySendHandler(), RestoreBreakPointSendHandler(), SetContextManipulateHandler(), SetContextSendHandler(), WriteBreakPointSendHandler(), and WriteMemorySendHandler().
◆ KdVersion
◆ ModuleListHead
Definition at line 23 of file kdpacket.c.
Referenced by GetModuleFileNameW(), GetVersionSendHandler(), handle_gdb_query(), LdrQueryProcessModuleInformationEx(), LoadBootDeviceDriver(), PeLdrAllocateDataTableEntry(), PeLdrCheckForLoadedDll(), PeLdrpBindImportName(), PeLdrpLoadAndScanReferencedDll(), PeLdrpScanImportAddressTable(), PeLdrScanImportDescriptorTable(), RtlPcToFileHeader(), and UserpGetClientFileName().
◆ ProcessListHead
◆ TheIdleProcess
◆ TheIdleThread