KdpGetBusData
VOID __stdcall KdpGetBusData(_DBGKD_MANIPULATE_STATE64 *m, _STRING *AdditionalData){
UINT64 v2;
unsigned __int64 CurrentSymbolEnd;
unsigned int MaximumLength;
UINT64 ActualBytesRead;
UINT64 TransferCount;
UINT64 TraceFlag;
signed int ContinueStatus;
int v11;
bool v12;
char *Buffer;
UINT64 Request;
__int64 v15[3];
UINT64 Actual;
Actual = v2;
v15[0] = 0i64;
v15[1] = (__int64)m;
CurrentSymbolEnd = m->u.Continue2.AnyControlSet.X86ControlSet.CurrentSymbolEnd;
LOWORD(v15[0]) = 56;
if( CurrentSymbolEnd > (unsigned __int64)(unsigned int)KdTransportMaxPacketSize - 56 )
LODWORD(CurrentSymbolEnd) = KdTransportMaxPacketSize - 56;
MaximumLength = AdditionalData->MaximumLength;
ActualBytesRead = m->u.ReadMemory.ActualBytesRead;
TransferCount = m->u.ReadMemory.TransferCount;
if( (unsigned int)CurrentSymbolEnd <= MaximumLength )
MaximumLength = CurrentSymbolEnd;
ContinueStatus = m->u.Continue.ContinueStatus;
TraceFlag = m->u.Continue2.ControlSet.TraceFlag;
LODWORD(Request) = MaximumLength;
Buffer = AdditionalData->Buffer;
LODWORD(Actual) = MaximumLength;
v11 = KdpSysReadBusData(
(_BUS_DATA_TYPE)ContinueStatus,
TraceFlag,
TransferCount,
ActualBytesRead,
Buffer,
Request,
&Actual);
v12 = (unsigned int)Actual < MaximumLength;
m->ReturnStatus = v11;
if( v12 )
MaximumLength = Actual;
m->u.Continue2.AnyControlSet.X86ControlSet.CurrentSymbolEnd = MaximumLength;
AdditionalData->Length = MaximumLength;
KdSendPacket(2i64, v15, AdditionalData, &KdpContext);
}Referenced by:
KdpSendWaitContinue