PnpLogEvent

VOID __stdcall PnpLogEvent(
        UNICODE_STRING *InsertionString1,
        UNICODE_STRING *InsertionString2,
        INT64 Status,
        PVOID DumpData,
        UINT64 DumpDataSize){
  int v8; 
  __int64 v9; 
  __int64 v10; 
  unsigned __int64 v11; 
  __int64 v12; 
  _WORD *v13; 
  UINT8 *v14; 
  UINT8 *v15; 
  v8 = Status;
  v9 = 0i64;
  v10 = 0i64;
  if( InsertionString1 )
    v10 = InsertionString1->Length + 2i64;
  if( InsertionString2 )
    v9 = InsertionString2->Length + 2i64;
  v11 = ((unsigned int)(DumpDataSize + 40) + 1i64) & 0xFFFFFFFFFFFFFFFEui64;
  if( v10 + v11 + v9 <= 0xF0 )
  {
    IoAllocateGenericErrorLogEntry(v10 + v11 + v9);
    v13 = (_WORD *)v12;
    if( v12 )
    {
      *(_WORD *)(v12 + 6) = v11;
      v14 = (UINT8 *)(v12 + v11);
      *(_DWORD *)(v12 + 12) = v8;
      *(_DWORD *)(v12 + 20) = v8;
      *(_WORD *)(v12 + 2) = DumpDataSize;
      if( (_DWORD)DumpDataSize )
        memmove((UINT8 *)(v12 + 40), (UINT8 *)DumpData, (unsigned int)DumpDataSize);
      if( InsertionString1 )
      {
        v13[2] = 1;
        memmove(v14, (UINT8 *)InsertionString1->Buffer, InsertionString1->Length);
        v15 = &v14[InsertionString1->Length];
        *(_WORD *)v15 = 0;
        v14 = v15 + 2;
      }
      if( InsertionString2 )
      {
        ++v13[2];
        memmove(v14, (UINT8 *)InsertionString2->Buffer, InsertionString2->Length);
        *(_WORD *)&v14[InsertionString2->Length] = 0;
      }
      IoWriteErrorLogEntry(v13);
    }
  }
}

Referenced by:

IopInitializePlugPlayServices
PiInitializeDDB
PiIsDriverBlocked
PnpFixupID
PnpLogDuplicateDevice
PnpQueryID
PpBootDDBHelper
PpCheckInDriverDatabase