KdpReportCommandStringStateChange
VOID __stdcall KdpReportCommandStringStateChange(_STRING *Name, _STRING *Command, _FILETIME *ContextRecord){
unsigned int Length;
UINT64 v7;
UINT64 v8;
unsigned int v9;
UINT64 v10;
UINT64 Flags;
UINT64 Flagsa;
UINT64 ActualSize;
_STRING OutMessageData;
_STRING OutMessageHeader;
_DBGKD_ANY_WAIT_STATE_CHANGE WaitStateChange;
OutMessageData = 0i64;
OutMessageHeader = 0i64;
memset(&WaitStateChange, 0i64, sizeof(WaitStateChange));
LODWORD(ActualSize) = 0;
do
{
KdpSetCommonState(0x3032ui64, (_CONTEXT *)ContextRecord, &WaitStateChange);
KdpSetContextState(&WaitStateChange, (_CONTEXT *)ContextRecord);
memset(&WaitStateChange.u, 0i64, 0x40u);
Length = Name->Length;
v7 = 127i64;
OutMessageData.Buffer = (char *)&KdpMessageBuffer;
if( (unsigned __int16)Length <= 0x7Fu )
v7 = Length;
LODWORD(Flags) = 4;
KdpCopyMemoryChunks((UINT64)Name->Buffer, &KdpMessageBuffer, v7, 0i64, Flags, &ActualSize);
OutMessageData.Length = ActualSize + 1;
OutMessageData.Buffer[(unsigned __int16)(ActualSize + 1) - 1] = 0;
v8 = Command->Length;
v9 = KdTransportMaxPacketSize - OutMessageData.Length - 240;
LODWORD(Flagsa) = 4;
if( (unsigned int)v8 >= v9 )
v8 = v9;
KdpCopyMemoryChunks(
(UINT64)Command->Buffer,
&OutMessageData.Buffer[OutMessageData.Length],
v8,
0i64,
Flagsa,
&ActualSize);
OutMessageData.Length += ActualSize + 1;
v10 = OutMessageData.Length;
OutMessageData.Buffer[OutMessageData.Length - 1] = 0;
OutMessageHeader.Buffer = (char *)&WaitStateChange;
OutMessageHeader.Length = 240;
}
while( KdpSendWaitContinue(v10, &OutMessageHeader, &OutMessageData, (_CONTEXT *)ContextRecord) == 2 );
}Referenced by:
KdpCommandString