KdpReportLoadSymbolsStateChange
UINT8 __fastcall KdpReportLoadSymbolsStateChange(
_STRING *PathName,
_KD_SYMBOLS_INFO *SymbolInfo,
UINT8 UnloadSymbols,
_CONTEXT *ContextRecord){
UINT64 v8;
_STRING *v9;
KCONTINUE_STATUS v10;
UINT64 Flags;
__int128 v13;
_STRING OutMessageHeader;
INT64 result[4];
UINT64 ActualSize[3];
ULONG CheckSum;
ULONG SizeOfImage;
UINT8 v19;
v13 = 0i64;
OutMessageHeader = 0i64;
memset((INT64)result, 0i64);
do
{
KdpSetCommonState(12337, (__int64)ContextRecord, (__int64)result);
KdpSetContextState((INT64)result, (INT64)ContextRecord);
ActualSize[1] = (UINT64)SymbolInfo->BaseOfDll;
ActualSize[2] = LODWORD(SymbolInfo->ProcessId);
CheckSum = SymbolInfo->CheckSum;
SizeOfImage = SymbolInfo->SizeOfImage;
v19 = UnloadSymbols;
if( PathName )
{
LODWORD(Flags) = 4;
KdpCopyMemoryChunks((UINT64)PathName->Buffer, KdpPathBuffer, PathName->Length, 0i64, Flags, ActualSize);
++LODWORD(ActualSize[0]);
v9 = (_STRING *)&v13;
*((_QWORD *)&v13 + 1) = KdpPathBuffer;
LOWORD(v13) = ActualSize[0];
*((_BYTE *)KdpPathBuffer + LOWORD(ActualSize[0]) - 1) = 0;
}
else
{
LODWORD(ActualSize[0]) = 0;
v9 = 0i64;
}
OutMessageHeader.Length = 240;
OutMessageHeader.Buffer = (char *)result;
v10 = KdpSendWaitContinue(v8, &OutMessageHeader, v9, ContextRecord);
}
while( v10 == ContinueProcessorReselected );
return v10;
}Referenced by:
KdpSymbol