PnpPrepareDriverLoading
__int64 __fastcall PnpPrepareDriverLoading(
_UNICODE_STRING *KeyName,
PVOID KeyHandle,
PVOID ImageBase,
UINT64 IsFilter,
__int64 a5){
int v6;
__int64 v9;
unsigned int v10;
_KEY_VALUE_FULL_INFORMATION *v12;
UINT64 IsFiltera;
_KEY_VALUE_FULL_INFORMATION *Information;
_GUID EntryGuid;
Information = 0i64;
v6 = IsFilter;
*(_DWORD *)a5 = 0;
LODWORD(v9) = RtlImageNtHeader((UINT64)ImageBase);
if( !v9 )
return 3221225473i64;
EntryGuid = 0i64;
LODWORD(IsFiltera) = v6;
v10 = PpCheckInDriverDatabase(KeyName, KeyHandle, ImageBase, *(unsigned int *)(v9 + 80), IsFiltera, &EntryGuid);
if( v10 + 1073740949 <= 1 )
PnpSetBlockedDriverEvent(&EntryGuid);
if( IopGetRegistryValue(KeyHandle, (PWCHAR)&stru_1407D01E0._Xmm9, 0i64, &Information) >= 0 )
{
v12 = Information;
if( Information->Type == 4 && Information->DataLength == 4 )
*(_DWORD *)a5 = *(ULONG *)((char *)&Information->TitleIndex + Information->DataOffset);
ExFreePoolWithTag(v12, 0);
}
return v10;
}Referenced by:
IopInitializeBuiltinDriver
IopLoadDriver