PnpLogEvent
void __fastcall PnpLogEvent(const VOID **a1, const VOID **a2, int a3, const VOID *a4, size_t Size){
__int64 v9;
__int64 v10;
unsigned __int64 v11;
_WORD *GenericErrorLogEntry;
_WORD *v13;
char *v14;
char *v15;
v9 = 0i64;
v10 = 0i64;
if( a1 )
v10 = *(unsigned __int16 *)a1 + 2i64;
if( a2 )
v9 = *(unsigned __int16 *)a2 + 2i64;
v11 = (Size + 40 + 1i64) & 0xFFFFFFFFFFFFFFFEui64;
if( v10 + v11 + v9 <= 0xF0 )
{
GenericErrorLogEntry = IoAllocateGenericErrorLogEntry((unsigned __int8)v10 + (unsigned __int8)v11
+ (unsigned __int8)v9);
v13 = GenericErrorLogEntry;
if( GenericErrorLogEntry )
{
GenericErrorLogEntry[3] = v11;
v14 = (char *)GenericErrorLogEntry + v11;
*((_DWORD *)GenericErrorLogEntry + 3) = a3;
*((_DWORD *)GenericErrorLogEntry + 5) = a3;
GenericErrorLogEntry[1] = Size;
if( Size )
memmove(GenericErrorLogEntry + 20, a4, Size);
if( a1 )
{
v13[2] = 1;
memmove(v14, a1[1], *(unsigned __int16 *)a1);
v15 = &v14[*(unsigned __int16 *)a1];
*(_WORD *)v15 = 0;
v14 = v15 + 2;
}
if( a2 )
{
++v13[2];
memmove(v14, a2[1], *(unsigned __int16 *)a2);
*(_WORD *)&v14[*(unsigned __int16 *)a2] = 0;
}
IoWriteErrorLogEntry(v13);
}
}
}Referenced by:
IopInitializePlugPlayServices
PiInitializeDDB
PiIsDriverBlocked
PnpFixupID
PnpLogDuplicateDevice
PnpQueryID
PpBootDDBHelper
PpCheckInDriverDatabase