KdpReadVirtualMemory
VOID __stdcall KdpReadVirtualMemory(_DBGKD_MANIPULATE_STATE64 *m, _STRING *AdditionalData){
UINT64 v2;
unsigned __int64 TransferCount;
unsigned int MaximumLength;
char *Buffer;
unsigned __int64 TargetBaseAddress;
unsigned int v9;
UINT64 Flags;
__int128 v11;
UINT64 ActualSize;
ActualSize = v2;
TransferCount = m->u.ReadMemory.TransferCount;
v11 = 0i64;
if( TransferCount > (unsigned __int64)(unsigned int)KdTransportMaxPacketSize - 56 )
LODWORD(TransferCount) = KdTransportMaxPacketSize - 56;
MaximumLength = AdditionalData->MaximumLength;
Buffer = AdditionalData->Buffer;
TargetBaseAddress = m->u.ReadMemory.TargetBaseAddress;
if( (unsigned int)TransferCount > MaximumLength )
LODWORD(TransferCount) = MaximumLength;
LODWORD(Flags) = 4;
LODWORD(ActualSize) = TransferCount;
m->ReturnStatus = KdpCopyMemoryChunks(
TargetBaseAddress,
Buffer,
(unsigned int)TransferCount,
0i64,
Flags,
&ActualSize);
v9 = ActualSize;
AdditionalData->Length = ActualSize;
m->u.ReadMemory.ActualBytesRead = v9;
LOWORD(v11) = 56;
*((_QWORD *)&v11 + 1) = m;
KdSendPacket(2i64, &v11, AdditionalData, &KdpContext);
}Referenced by:
KdpSendWaitContinue