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