KdpReadPhysicalMemoryLong
VOID __stdcall KdpReadPhysicalMemoryLong(_DBGKD_MANIPULATE_STATE64 *m, _STRING *AdditionalData){
_KD_CONTEXT *v2;
unsigned int TransferCount;
unsigned __int64 TargetBaseAddress;
unsigned int ActualBytesRead;
unsigned int v8;
__int64 v9;
_KD_CONTEXT KdContext;
TransferCount = m->u.ReadMemory.TransferCount;
TargetBaseAddress = m->u.ReadMemory.TargetBaseAddress;
ActualBytesRead = m->u.ReadMemory.ActualBytesRead;
for( KdContext = KdpContext; TransferCount; TransferCount -= v9 )
{
m->u.ReadMemory.TargetBaseAddress = TargetBaseAddress;
m->u.ReadMemory.TransferCount = TransferCount;
m->u.ReadMemory.ActualBytesRead = ActualBytesRead;
AdditionalData->Length = 0;
m->ReturnStatus = 0;
KdContext.Flags = 13;
KdpReadPhysicalMemory(m, AdditionalData, v2, &KdContext);
v8 = 4 * m->u.ReadMemory.ActualBytesRead;
if( (m->u.ReadMemory.ActualBytesRead & 0xC0000000) != 0x40000000 )
v8 = m->u.ReadMemory.ActualBytesRead;
if( m->ReturnStatus < 0 || !v8 )
break;
v9 = TransferCount;
if( v8 <= TransferCount )
v9 = v8;
TargetBaseAddress += v9;
}
}Referenced by:
KdpSendWaitContinue