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