From 3fb29066679e048cf3d3e59784af66b6823eaeeb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herv=C3=A9=20Poussineau?= Date: Sun, 10 Jul 2022 13:41:18 +0200 Subject: [PATCH] [KDROSDBG] Return success in init and send functions, timeout in receive function Also handle MANIPULATE messages by returning success. The driver will handle some messages in a few commits. CORE-10749 --- drivers/base/kdrosdbg/CMakeLists.txt | 4 ++++ drivers/base/kdrosdbg/kdrosdbg.c | 22 ++++++++++++++++------ 2 files changed, 20 insertions(+), 6 deletions(-) diff --git a/drivers/base/kdrosdbg/CMakeLists.txt b/drivers/base/kdrosdbg/CMakeLists.txt index 845aabba9a5..03e07bf5f86 100644 --- a/drivers/base/kdrosdbg/CMakeLists.txt +++ b/drivers/base/kdrosdbg/CMakeLists.txt @@ -6,6 +6,10 @@ list(APPEND SOURCE kdrosdbg.rc ${CMAKE_CURRENT_BINARY_DIR}/kdcom.def) +if(KDBG) + add_definitions(-DKDBG) +endif() + add_library(kdcom MODULE ${SOURCE}) set_module_type(kdcom kerneldll ENTRYPOINT 0) add_importlibs(kdcom ntoskrnl hal) diff --git a/drivers/base/kdrosdbg/kdrosdbg.c b/drivers/base/kdrosdbg/kdrosdbg.c index e8cccf93cc1..e1068751484 100644 --- a/drivers/base/kdrosdbg/kdrosdbg.c +++ b/drivers/base/kdrosdbg/kdrosdbg.c @@ -30,7 +30,7 @@ NTAPI KdDebuggerInitialize0( IN PLOADER_PARAMETER_BLOCK LoaderBlock OPTIONAL) { - return STATUS_NOT_IMPLEMENTED; + return STATUS_SUCCESS; } /* @@ -41,7 +41,7 @@ NTAPI KdDebuggerInitialize1( IN PLOADER_PARAMETER_BLOCK LoaderBlock OPTIONAL) { - return STATUS_NOT_IMPLEMENTED; + return STATUS_SUCCESS; } NTSTATUS @@ -93,8 +93,6 @@ KdSendPacket( IN PSTRING MessageData, IN OUT PKD_CONTEXT Context) { - UNIMPLEMENTED; - return; } /* @@ -109,8 +107,20 @@ KdReceivePacket( OUT PULONG DataLength, IN OUT PKD_CONTEXT Context) { - UNIMPLEMENTED; - return 0; +#ifndef KDBG + if (PacketType == PACKET_TYPE_KD_STATE_MANIPULATE) + { + /* Let's say that everything went fine every time. */ + PDBGKD_MANIPULATE_STATE64 ManipulateState = (PDBGKD_MANIPULATE_STATE64)MessageHeader->Buffer; + RtlZeroMemory(MessageHeader->Buffer, MessageHeader->MaximumLength); + ManipulateState->ApiNumber = DbgKdContinueApi; + ManipulateState->u.Continue.ContinueStatus = STATUS_SUCCESS; + MessageHeader->Length = sizeof(*ManipulateState); + return KdPacketReceived; + } +#endif + + return KdPacketTimedOut; } /* EOF */