PnpInitializeBootStartDriver
__int64 __fastcall PnpInitializeBootStartDriver(
_UNICODE_STRING *DriverName,
INT64 a2,
INT64 a3,
INT64 a4,
_LIST_ENTRY *ModuleListHead,
CHAR a5,
int a7,
int a8,
INT64 a6){
int v13;
__int128 v14;
__int128 v15;
int v16;
__int128 v17;
__int64 v18;
__int128 v19;
unsigned int inited;
int v21;
_QWORD v23[14];
memset(v23, 0i64, 0x68u);
v13 = 0;
a8 = 0;
if( a7 )
{
if( a4 )
{
v14 = *(_OWORD *)(a4 + 72);
v15 = *(_OWORD *)(a4 + 176);
HIDWORD(v23[0]) = *(_DWORD *)(a4 + 224) & 1;
LODWORD(v23[11]) = *(_DWORD *)(a4 + 208);
LODWORD(v23[12]) = *(_DWORD *)(a4 + 216);
v23[9] = *(_QWORD *)(a4 + 192);
v16 = *(_DWORD *)(a4 + 212);
*(_OWORD *)&v23[1] = v14;
HIDWORD(v23[11]) = v16;
v17 = *(_OWORD *)a2;
HIDWORD(v23[12]) = *(_DWORD *)(a4 + 220);
v18 = *(_QWORD *)(a4 + 200);
*(_OWORD *)&v23[3] = v17;
v23[10] = v18;
v19 = *(_OWORD *)(a4 + 160);
*(_OWORD *)&v23[7] = v15;
*(_OWORD *)&v23[5] = v19;
}
else
{
*(_UNICODE_STRING *)&v23[1] = *DriverName;
}
PnpNotifyEarlyLaunchImageLoad((__int64)v23, (__int64)&a8);
v13 = a8;
}
if( PnpDoPolicyCheck(v13, 1) || !a7 )
{
inited = VfDriverInitStarting();
PnpDiagnosticTraceObject(&KMPnPEvt_BootInit_Start, &DriverName->Length);
v21 = IopInitializeBuiltinDriver(DriverName, a2, a3, a4, a5, a6);
PnpDiagnosticTraceObjectWithStatus(&KMPnPEvt_BootInit_Stop, &DriverName->Length, v21);
if( v21 >= 0 )
VfDriverInitSuccess(inited, ModuleListHead);
}
else
{
return(unsigned int)-1073741790;
}
return(unsigned int)v21;
}Referenced by:
IopInitializeBootDrivers
PipInitializeCoreDriversByGroup
PipInitializeEarlyLaunchDrivers
PnpLoadBootFilterDriver