KiSynchCounterSetCallback
VOID __fastcall KiSynchCounterSetCallback(_PCW_CALLBACK_TYPE Type, _PCW_CALLBACK_INFORMATION *Info, VOID *Context){
__int32 v3;
__int32 v4;
struct _PCW_BUFFER *Buffer;
unsigned int v6;
unsigned int ActiveProcessorCount;
_KPRCB **v8;
_KPRCB *v9;
_PCW_DATA Data;
_UNICODE_STRING DestinationString;
WCHAR pszDest[12];
DestinationString = 0i64;
if( Type )
{
v3 = Type - 1;
if( v3 )
{
v4 = v3 - 1;
if( !v4 || v4 == 1 )
{
Buffer = Info->EnumerateInstances.Buffer;
v6 = 0;
ActiveProcessorCount = KeQueryActiveProcessorCountEx(0xFFFFu);
if( ActiveProcessorCount )
{
v8 = &KiProcessorBlock;
do
{
v9 = *v8;
RtlStringCbPrintfW(pszDest, 0x16ui64, (WCHAR *)L"%u");
RtlInitUnicodeString(&DestinationString, pszDest);
Data.Size = 184;
Data.Data = &v9->SynchCounters;
if( PcwAddInstance(Buffer, &DestinationString, v6, 1ui64, &Data) < 0 )
break;
++v6;
++v8;
}
while( v6 < ActiveProcessorCount );
}
}
}
else
{
EtwDereferenceSpinLockCounters();
}
}
else
{
EtwReferenceSpinLockCounters();
}
}Referenced by:
No references.