[NTOS:KD64] Implement KdSystemDebugControl: SysDbgReadBusData/SysDbgWriteBusData

This commit is contained in:
Hervé Poussineau
2025-01-28 22:00:47 +01:00
parent 19046a253b
commit 2fe3de6c69
+60
View File
@@ -2509,7 +2509,67 @@ KdSystemDebugControl(
break;
case SysDbgReadBusData:
if (InputBufferLength != sizeof(SYSDBG_BUS_DATA))
{
Status = STATUS_INFO_LENGTH_MISMATCH;
}
else
{
SYSDBG_BUS_DATA Request = *(PSYSDBG_BUS_DATA)InputBuffer;
PVOID LockedBuffer;
PMDL LockVariable;
Status = ExLockUserBuffer(Request.Buffer,
Request.Request,
PreviousMode,
IoWriteAccess,
&LockedBuffer,
&LockVariable);
if (NT_SUCCESS(Status))
{
Status = KdpSysReadBusData(Request.BusDataType,
Request.BusNumber,
Request.SlotNumber,
Request.Address,
LockedBuffer,
Request.Request,
&Length);
ExUnlockUserBuffer(LockVariable);
}
}
break;
case SysDbgWriteBusData:
if (InputBufferLength != sizeof(SYSDBG_BUS_DATA))
{
Status = STATUS_INFO_LENGTH_MISMATCH;
}
else
{
SYSDBG_BUS_DATA Request = *(PSYSDBG_BUS_DATA)InputBuffer;
PVOID LockedBuffer;
PMDL LockVariable;
Status = ExLockUserBuffer(Request.Buffer,
Request.Request,
PreviousMode,
IoReadAccess,
&LockedBuffer,
&LockVariable);
if (NT_SUCCESS(Status))
{
Status = KdpSysWriteBusData(Request.BusDataType,
Request.BusNumber,
Request.SlotNumber,
Request.Address,
LockedBuffer,
Request.Request,
&Length);
ExUnlockUserBuffer(LockVariable);
}
}
break;
case SysDbgCheckLowMemory:
UNIMPLEMENTED;
Status = STATUS_NOT_IMPLEMENTED;