Skip to content

Commit 2efaa5e

Browse files
hpoussinHBelusca
authored andcommitted
[NTOS:KD64] Implement KdSystemDebugControl: SysDbgReadVirtual/SysDbgWriteVirtual
1 parent 9f97f0b commit 2efaa5e

File tree

1 file changed

+29
-0
lines changed

1 file changed

+29
-0
lines changed

ntoskrnl/kd64/kdapi.c

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2304,6 +2304,35 @@ KdSystemDebugControl(
23042304

23052305
case SysDbgReadVirtual:
23062306
case SysDbgWriteVirtual:
2307+
if (InputBufferLength != sizeof(SYSDBG_VIRTUAL))
2308+
{
2309+
Status = STATUS_INFO_LENGTH_MISMATCH;
2310+
}
2311+
else
2312+
{
2313+
SYSDBG_VIRTUAL Request = *(PSYSDBG_VIRTUAL)InputBuffer;
2314+
PVOID LockedBuffer;
2315+
PMDL LockVariable;
2316+
2317+
Status = ExLockUserBuffer(Request.Buffer,
2318+
Request.Request,
2319+
PreviousMode,
2320+
Command == SysDbgReadVirtual ? IoWriteAccess : IoReadAccess,
2321+
&LockedBuffer,
2322+
&LockVariable);
2323+
if (NT_SUCCESS(Status))
2324+
{
2325+
Status = KdpCopyMemoryChunks((ULONG64)(ULONG_PTR)Request.Address,
2326+
Request.Buffer,
2327+
Request.Request,
2328+
0,
2329+
Command == SysDbgReadVirtual ? 0 : MMDBG_COPY_WRITE,
2330+
&Length);
2331+
ExUnlockUserBuffer(LockVariable);
2332+
}
2333+
}
2334+
break;
2335+
23072336
case SysDbgReadPhysical:
23082337
case SysDbgWritePhysical:
23092338
case SysDbgReadControlSpace:

0 commit comments

Comments
 (0)