[NTOS:KD64] Implement KdSystemDebugControl: SysDbgReadVirtual/SysDbgWriteVirtual

This commit is contained in:
Hervé Poussineau
2025-01-28 22:00:42 +01:00
parent 9f97f0b284
commit 2efaa5ea1e
+29
View File
@@ -2304,6 +2304,35 @@ KdSystemDebugControl(
case SysDbgReadVirtual:
case SysDbgWriteVirtual:
if (InputBufferLength != sizeof(SYSDBG_VIRTUAL))
{
Status = STATUS_INFO_LENGTH_MISMATCH;
}
else
{
SYSDBG_VIRTUAL Request = *(PSYSDBG_VIRTUAL)InputBuffer;
PVOID LockedBuffer;
PMDL LockVariable;
Status = ExLockUserBuffer(Request.Buffer,
Request.Request,
PreviousMode,
Command == SysDbgReadVirtual ? IoWriteAccess : IoReadAccess,
&LockedBuffer,
&LockVariable);
if (NT_SUCCESS(Status))
{
Status = KdpCopyMemoryChunks((ULONG64)(ULONG_PTR)Request.Address,
Request.Buffer,
Request.Request,
0,
Command == SysDbgReadVirtual ? 0 : MMDBG_COPY_WRITE,
&Length);
ExUnlockUserBuffer(LockVariable);
}
}
break;
case SysDbgReadPhysical:
case SysDbgWritePhysical:
case SysDbgReadControlSpace: