[NTOS:KD64] Implement KdSystemDebugControl: SysDbgReadControlSpace/SysDbgWriteControlSpace

This commit is contained in:
Hervé Poussineau 2024-09-22 21:39:33 +02:00 committed by Hermès Bélusca-Maïto
parent 42e038f227
commit 0589c178ba
No known key found for this signature in database
GPG key ID: 3B2539C65E7B93D0

View file

@ -2365,7 +2365,63 @@ KdSystemDebugControl(
break;
case SysDbgReadControlSpace:
if (InputBufferLength != sizeof(SYSDBG_CONTROL_SPACE))
{
Status = STATUS_INFO_LENGTH_MISMATCH;
}
else
{
SYSDBG_CONTROL_SPACE Request = *(PSYSDBG_CONTROL_SPACE)InputBuffer;
PVOID LockedBuffer;
PMDL LockVariable;
Status = ExLockUserBuffer(Request.Buffer,
Request.Request,
PreviousMode,
IoWriteAccess,
&LockedBuffer,
&LockVariable);
if (NT_SUCCESS(Status))
{
Status = KdpSysReadControlSpace(Request.Processor,
Request.Address,
LockedBuffer,
Request.Request,
&Length);
ExUnlockUserBuffer(LockVariable);
}
}
break;
case SysDbgWriteControlSpace:
if (InputBufferLength != sizeof(SYSDBG_CONTROL_SPACE))
{
Status = STATUS_INFO_LENGTH_MISMATCH;
}
else
{
SYSDBG_CONTROL_SPACE Request = *(PSYSDBG_CONTROL_SPACE)InputBuffer;
PVOID LockedBuffer;
PMDL LockVariable;
Status = ExLockUserBuffer(Request.Buffer,
Request.Request,
PreviousMode,
IoReadAccess,
&LockedBuffer,
&LockVariable);
if (NT_SUCCESS(Status))
{
Status = KdpSysWriteControlSpace(Request.Processor,
Request.Address,
LockedBuffer,
Request.Request,
&Length);
ExUnlockUserBuffer(LockVariable);
}
}
break;
case SysDbgReadIoSpace:
case SysDbgWriteIoSpace:
case SysDbgReadMsr: