File tree Expand file tree Collapse file tree 1 file changed +60
-0
lines changed
Expand file tree Collapse file tree 1 file changed +60
-0
lines changed Original file line number Diff line number Diff 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 ;
You can’t perform that action at this time.
0 commit comments