PerfDiagpUpdatePerfDiagLoggerEnableFlags
CHAR __stdcall PerfDiagpUpdatePerfDiagLoggerEnableFlags(INT64 a1, INT64 a2){
int v3;
unsigned int v4;
UINT64 OutBufferLen;
UINT64 ReturnLength[16];
__int128 Src[3];
LODWORD(ReturnLength[0]) = 0;
memset(Src, 0, sizeof(Src));
memset(&ReturnLength[2], 0i64, 0x70u);
LODWORD(ReturnLength[3]) = 32;
ReturnLength[4] = a2;
ReturnLength[5] = (UINT64)Src;
LODWORD(ReturnLength[6]) = 3;
LODWORD(Src[0]) = 48;
LOBYTE(v3) = RtlpQueryRegistryValues(
(_KTRAP_FRAME *)2,
(_KEXCEPTION_FRAME *)L"Diagnostics\\Performance\\BootCKCLSettings");
if( v3 >= 0 )
{
if( DWORD1(Src[0]) == 3 )
{
v4 = Src[0];
if( LODWORD(Src[0]) > 0x28 )
{
LOBYTE(v3) = 35;
}
else
{
memmove((char *)&ExBootDevicesRemovedEvent + 3880, (char *)Src + 8, Src[0]);
PerfDiagpInitializeLoggerInfo(1ui64, v4 >> 2);
LODWORD(OutBufferLen) = *(&ExBootDevicesRemovedEvent + 924);
LOBYTE(v3) = NtTraceControl(
4ui64,
(char *)&ExBootDevicesRemovedEvent + 3696,
*(&ExBootDevicesRemovedEvent + 924),
(char *)&ExBootDevicesRemovedEvent + 3696,
OutBufferLen,
ReturnLength);
}
}
else
{
LOBYTE(v3) = 13;
}
}
return v3;
}Referenced by:
PerfDiagpProxyWorker