KdpReportCommandStringStateChange
VOID __stdcall KdpReportCommandStringStateChange(STRING *Name, STRING *Command, CONTEXT *ContextRecord){
unsigned int Length;
UINT64 v7;
UINT64 v8;
unsigned int v9;
UINT64 v10;
UINT64 Flags;
UINT64 Flagsa;
UINT64 ActualSize;
_STRING OutMessageData;
_STRING OutMessageHeader;
INT64 result[4];
INT64 v17[26];
OutMessageData = 0i64;
OutMessageHeader = 0i64;
memset((INT64)result, 0i64);
LODWORD(ActualSize) = 0;
do
{
KdpSetCommonState(12338, (__int64)ContextRecord, (__int64)result);
KdpSetContextState((INT64)result, (INT64)ContextRecord);
memset((INT64)v17, 0i64);
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 *)result;
OutMessageHeader.Length = 240;
}
while( KdpSendWaitContinue(v10, &OutMessageHeader, &OutMessageData, ContextRecord) == ContinueProcessorReselected );
}Referenced by:
KdpCommandString