KdpReadControlSpace
VOID __stdcall KdpReadControlSpace(_DBGKD_MANIPULATE_STATE64 *m, _STRING *AdditionalData){
UINT64 v2;
unsigned __int64 TransferCount;
unsigned int MaximumLength;
UINT64 Processor;
unsigned __int64 TargetBaseAddress;
char *Buffer;
int v10;
bool v11;
__int64 v12[3];
UINT64 Actual;
Actual = v2;
TransferCount = m->u.ReadMemory.TransferCount;
v12[0] = 56i64;
v12[1] = (__int64)m;
if( TransferCount > (unsigned __int64)(unsigned int)KdTransportMaxPacketSize - 56 )
LODWORD(TransferCount) = KdTransportMaxPacketSize - 56;
MaximumLength = AdditionalData->MaximumLength;
Processor = m->Processor;
if( (unsigned int)TransferCount <= MaximumLength )
MaximumLength = TransferCount;
TargetBaseAddress = m->u.ReadMemory.TargetBaseAddress;
Buffer = AdditionalData->Buffer;
LODWORD(Actual) = MaximumLength;
v10 = KdpSysReadControlSpace(Processor, TargetBaseAddress, Buffer, MaximumLength, &Actual);
v11 = (unsigned int)Actual < MaximumLength;
m->ReturnStatus = v10;
if( v11 )
MaximumLength = Actual;
AdditionalData->Length = MaximumLength;
m->u.ReadMemory.ActualBytesRead = MaximumLength;
KdSendPacket(2i64, v12, AdditionalData, &KdpContext);
}Referenced by:
KdpSendWaitContinue