[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
This commit is contained in:
Hervé Poussineau 2022-07-10 13:41:18 +02:00
parent f125cd1c71
commit 3fb2906667
2 changed files with 20 additions and 6 deletions

View file

@ -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)

View file

@ -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 */