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