Skip to content

Commit 2fe3de6

Browse files
hpoussinHBelusca
authored andcommitted
[NTOS:KD64] Implement KdSystemDebugControl: SysDbgReadBusData/SysDbgWriteBusData
1 parent 19046a2 commit 2fe3de6

File tree

1 file changed

+60
-0
lines changed

1 file changed

+60
-0
lines changed

ntoskrnl/kd64/kdapi.c

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2509,7 +2509,67 @@ KdSystemDebugControl(
25092509
break;
25102510

25112511
case SysDbgReadBusData:
2512+
if (InputBufferLength != sizeof(SYSDBG_BUS_DATA))
2513+
{
2514+
Status = STATUS_INFO_LENGTH_MISMATCH;
2515+
}
2516+
else
2517+
{
2518+
SYSDBG_BUS_DATA Request = *(PSYSDBG_BUS_DATA)InputBuffer;
2519+
PVOID LockedBuffer;
2520+
PMDL LockVariable;
2521+
2522+
Status = ExLockUserBuffer(Request.Buffer,
2523+
Request.Request,
2524+
PreviousMode,
2525+
IoWriteAccess,
2526+
&LockedBuffer,
2527+
&LockVariable);
2528+
if (NT_SUCCESS(Status))
2529+
{
2530+
Status = KdpSysReadBusData(Request.BusDataType,
2531+
Request.BusNumber,
2532+
Request.SlotNumber,
2533+
Request.Address,
2534+
LockedBuffer,
2535+
Request.Request,
2536+
&Length);
2537+
ExUnlockUserBuffer(LockVariable);
2538+
}
2539+
}
2540+
break;
2541+
25122542
case SysDbgWriteBusData:
2543+
if (InputBufferLength != sizeof(SYSDBG_BUS_DATA))
2544+
{
2545+
Status = STATUS_INFO_LENGTH_MISMATCH;
2546+
}
2547+
else
2548+
{
2549+
SYSDBG_BUS_DATA Request = *(PSYSDBG_BUS_DATA)InputBuffer;
2550+
PVOID LockedBuffer;
2551+
PMDL LockVariable;
2552+
2553+
Status = ExLockUserBuffer(Request.Buffer,
2554+
Request.Request,
2555+
PreviousMode,
2556+
IoReadAccess,
2557+
&LockedBuffer,
2558+
&LockVariable);
2559+
if (NT_SUCCESS(Status))
2560+
{
2561+
Status = KdpSysWriteBusData(Request.BusDataType,
2562+
Request.BusNumber,
2563+
Request.SlotNumber,
2564+
Request.Address,
2565+
LockedBuffer,
2566+
Request.Request,
2567+
&Length);
2568+
ExUnlockUserBuffer(LockVariable);
2569+
}
2570+
}
2571+
break;
2572+
25132573
case SysDbgCheckLowMemory:
25142574
UNIMPLEMENTED;
25152575
Status = STATUS_NOT_IMPLEMENTED;

0 commit comments

Comments
 (0)