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.