VfInitVerifierComponents
VOID __stdcall VfInitVerifierComponents(UINT64 MmFlags, UINT64 VerifyAllDrivers, UINT64 VerifyKernel){
unsigned int v3;
unsigned int v4;
unsigned int v5;
__int64 v6;
bool v7;
volatile __int32 *v8;
volatile __int32 *v9;
PVOID *v10;
PVOID *v11;
PVOID *v12;
PVOID *v13;
_DWORD *PoolWithTag;
_QWORD *v15;
volatile __int32 *v16;
volatile __int32 *v17;
UINT64 v18;
INT64 v19;
int v20;
int v21;
__int64 v22;
UINT64(__stdcall *v23)(_IO_STACK_LOCATION *, INT64);
v3 = VerifyKernel;
v4 = VerifyAllDrivers;
v5 = MmFlags;
if( (MmVerifierData & 0x400000) == 0 || (MmVerifierData & 0x10) != 0 || (*(_BYTE *)VfFlightOptions & 9) != 0 )
ExSetPoolFlags(0x10ui64);
if( (MmVerifierData & 0x400000) == 0 || (MmVerifierData & 0x10) != 0 )
VfIrpDatabaseInit();
if( (MmVerifierData & 0x400000) == 0 || (MmVerifierData & 0x10) != 0 )
VfWdInit();
VfKeCheckForChanges(v5);
if( (MmVerifierData & 0x400000) == 0 || (MmVerifierData & 0x10) != 0 )
ViSettingsIoCheckForChanges(v5);
if( (v5 & 8) != 0 )
MmTrackLockedPages = 1;
VfPendingCheckForChanges(v5);
VfPoolInitPhase0();
v6 = (unsigned int)ViFaultTracesLength;
ViRequiredTimeSinceBootInMsecs = 60000i64 * (unsigned int)VfFaultInjectionBootMinutes;
ViFaultInjectionLock = 0i64;
if( (unsigned int)ViFaultTracesLength > 0x101000 )
{
v6 = 1052672i64;
ViFaultTracesLength = 1052672;
}
ViFaultTraces = (__int64)ExAllocatePoolWithTagPriority(NonPagedPoolNx, 72 * v6, 0x74746C46ui64, HighPoolPriority);
ViFaultsInitializeTagsList();
ViFaultsInitializeAppsList();
ViFaultsInitialized = 1;
v7 = VfAvlInitializeTree(&ViLookasideAvl, 96i64, 0, ViRemLockDelayFreeAvlNode) < 0;
v8 = &ViLookasideInitialized;
if( v7 )
v8 = &ViLookasideAllocationFailures;
_InterlockedExchange(v8, 1);
pXdvExInitializeNPagedLookasideList(
(int)ViSessionDataLookaside,
0,
(int)VfUtilFreePoolDispatchLevel,
512,
2600i64,
1936749129,
16,
VfInitializedWithoutReboot,
(__int64)ExInitializeNPagedLookasideListInternal);
_InterlockedExchange(&ViSessionDataInitialized, 1);
LOWORD(v20) = 16;
pXdvExInitializeNPagedLookasideList(
(int)ViPacketLookaside,
0,
(int)VfUtilFreePoolCheckIRQL,
512,
256i64,
1953526345,
v20,
VfInitializedWithoutReboot,
(__int64)ExInitializeNPagedLookasideListInternal);
v7 = VfAvlInitializeTree(&ViResourceAvl, 104i64, 0, ViRemLockDelayFreeAvlNode) < 0;
v9 = &ViResourceInitialized;
if( v7 )
v9 = &ViResourceNotTracked;
_InterlockedExchange(v9, 1);
LOWORD(v21) = 16;
pXdvExInitializeNPagedLookasideList(
(int)ViIrpCallDriverDataList,
0,
(int)VfUtilFreePoolCheckIRQL,
512,
192i64,
1131442761,
v21,
VfInitializedWithoutReboot,
(__int64)ExInitializeNPagedLookasideListInternal);
memset((INT64)ViMajorVerifierRoutines, 0i64);
LOBYTE(v10) = 27;
VfMajorRegisterHandlers(v10, (UINT64)VfPnpDumpIrpStack);
LOBYTE(v11) = 22;
VfMajorRegisterHandlers(v11, (UINT64)VfPowerDumpIrpStack);
LOBYTE(v12) = 23;
VfMajorRegisterHandlers(v12, (UINT64)VfWmiDumpIrpStack);
LOBYTE(v13) = -1;
v23 = ViGenericIsValidIrpStatus;
v22 = 0i64;
VfMajorRegisterHandlers(v13, (UINT64)ViGenericDumpIrpStack);
VfHalVerifierInitialize();
ViIrpLogDatabaseLock = 0i64;
PoolWithTag = ExAllocatePoolWithTag(NonPagedPoolNx, 0x18ui64, 0x64496656ui64);
ViIrpLogDatabase = (__int64)PoolWithTag;
if( PoolWithTag )
{
*PoolWithTag = 0;
v15 = PoolWithTag + 2;
v15[1] = v15;
*v15 = v15;
}
ViDdiInitialized = 1;
v7 = VfAvlInitializeTree(&ViRemLockAvl, 32i64, 136, ViRemLockDelayFreeAvlNode) < 0;
v16 = &ViRemLockInitialized;
if( v7 )
v16 = &ViRemLockAllocationFailures;
_InterlockedExchange(v16, 1);
v7 = VfAvlInitializeTree(&ViDevObjAvl, 336i64, 24, ViRemLockDelayFreeAvlNode) < 0;
v17 = &ViDevObjInitialized;
if( v7 )
v17 = &ViDevObjAllocationFailures;
_InterlockedExchange(v17, 1);
LODWORD(v23) = VfInitializedWithoutReboot;
LOWORD(v22) = 16;
((void(__fastcall *)(__int64 *, _QWORD, VOID(__stdcall *)(PVOID), __int64, __int64, __int64, __int64, UINT64(__stdcall *)(_IO_STACK_LOCATION *, INT64), __int64(__fastcall *)(__int64, PVOID(__stdcall *)(POOL_TYPE, SIZE_T, ULONG), void(__stdcall *)(PVOID, ULONG), int, int, int, __int16, int), VOID(__fastcall *)(INT64, UINT64, INT64, INT64, const VOID *), __int64(__fastcall *)(), _QWORD, __int64(__fastcall *)(__int64, __int64, __int64, __int64)))pXdvExInitializeNPagedLookasideList)(
ViIoCallbackStateLookaside,
0i64,
VfUtilFreePoolCheckIRQL,
512i64,
8i64,
1330202198i64,
v22,
v23,
ExInitializeNPagedLookasideListInternal,
ViGenericVerifyNewIrp,
ViGenericVerifyNewRequest,
0i64,
ViGenericBuildIrpLogEntry);
_InterlockedExchange(&ViIoCallbacksInitialized, 1);
VfCtxInit(v19, v18);
VfDeadlockInitialize(v4, v3);
VfSettingsApplyMiscellaneousChecks(v5);
IovUtilVerifierEnabled = 1;
if( (MmVerifierData & 0x10) != 0 )
PpvUtilVerifierEnabled = 1;
ViVerifierEnabled = 1;
}Referenced by:
VfInitBootDriversLoaded
VfInitSystemNoRebootNeeded