KdpSetCommonState
UINT8 __fastcall KdpSetCommonState(int a1, __int64 a2, __int64 a3){
__int16 v4;
unsigned int ActiveProcessorCount;
unsigned int v7;
char *v8;
__int64 v9;
UINT8 result;
UINT64 Flags;
UINT64 Flagsa;
UINT64 TotalSize;
LODWORD(TotalSize) = 0;
v4 = KeProcessorLevel;
*(_DWORD *)a3 = a1;
*(_WORD *)(a3 + 4) = v4;
*(_WORD *)(a3 + 6) = *((_DWORD *)KeGetPcr() + 105);
ActiveProcessorCount = KeQueryActiveProcessorCountEx(0xFFFFu);
v7 = *(unsigned __int16 *)(a3 + 6);
*(_DWORD *)(a3 + 8) = ActiveProcessorCount;
if( ActiveProcessorCount <= v7 )
*(_DWORD *)(a3 + 8) = v7 + 1;
*(_QWORD *)(a3 + 16) = KeGetCurrentThread();
v8 = *(char **)(a2 + 248);
*(_QWORD *)(a3 + 24) = v8;
*(_OWORD *)(a3 + 192) = 0i64;
*(_OWORD *)(a3 + 208) = 0i64;
LODWORD(Flags) = 4;
*(_OWORD *)(a3 + 224) = 0i64;
KdpCopyMemoryChunks((UINT64)v8, (PVOID)(a3 + 216), 0x10ui64, 0i64, Flags, &TotalSize);
v9 = (unsigned int)TotalSize;
*(_WORD *)(a3 + 212) = TotalSize;
result = KdpDeleteBreakpointRange(v8, &v8[v9 - 1]);
if( result )
{
LODWORD(Flagsa) = 4;
return KdpCopyMemoryChunks((UINT64)v8, (PVOID)(a3 + 216), (unsigned int)v9, 0i64, Flagsa, &TotalSize);
}
return result;
}Referenced by:
KdpReportCommandStringStateChange
KdpReportExceptionStateChange
KdpReportLoadSymbolsStateChange