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;
INT64 v10;
INT64 v11;
INT64 v12;
INT64 v13;
VOID **PoolWithTag;
_QWORD *v15;
volatile __int32 *v16;
volatile __int32 *v17;
_XSTATE_CONFIGURATION *v18;
INT64 v19;
_RTL_AVL_TABLE *a5;
_RTL_AVL_TABLE *a5a;
_RTL_AVL_TABLE *a5b;
VOID *a6;
VOID *a6c;
VOID *a6a;
VOID *a6b;
__int16 v27;
int v28;
int v29;
v3 = VerifyKernel;
v4 = VerifyAllDrivers;
v5 = MmFlags;
if( (MmVerifierData & 0x400000) == 0 || (MmVerifierData & 0x10) != 0 || (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, 0x60ui64, 0i64, ViRemLockDelayFreeAvlNode, a5, a6) < 0;
v8 = &ViLookasideInitialized;
if( v7 )
v8 = &ViLookasideAllocationFailures;
_InterlockedExchange(v8, 1);
v27 = 16;
((void(__fastcall *)(_NPAGED_LOOKASIDE_LIST *, _QWORD, VOID(__stdcall *)(VOID *), __int64, __int64, int, __int16, int, VOID(__stdcall *)(_NPAGED_LOOKASIDE_LIST *, VOID **, POOL_TYPE, UINT64, UINT64, VOID *, VOID *, INT64, UINT64, INT64, INT64, INT64)))pXdvExInitializeNPagedLookasideList)(
&ViSessionDataLookaside,
0i64,
VfUtilFreePoolDispatchLevel,
512i64,
2600i64,
1936749129,
v27,
VfInitializedWithoutReboot,
ExInitializeNPagedLookasideListInternal);
_InterlockedExchange(&ViSessionDataInitialized, 1);
LODWORD(a6c) = 1953526345;
((void(__fastcall *)(_NPAGED_LOOKASIDE_LIST *, _QWORD, VOID(__stdcall *)(VOID *), __int64))pXdvExInitializeNPagedLookasideList)(
&ViPacketLookaside,
0i64,
VfUtilFreePoolCheckIRQL,
512i64);
v7 = VfAvlInitializeTree(&ViResourceAvl, 0x68ui64, 0i64, ViRemLockDelayFreeAvlNode, (_RTL_AVL_TABLE *)0x100, a6c) < 0;
v9 = &ViResourceInitialized;
if( v7 )
v9 = &ViResourceNotTracked;
_InterlockedExchange(v9, 1);
LOWORD(v28) = 16;
((void(__fastcall *)(_NPAGED_LOOKASIDE_LIST *, _QWORD, VOID(__stdcall *)(VOID *), __int64, __int64, int, int, int, VOID(__stdcall *)(_NPAGED_LOOKASIDE_LIST *, VOID **, POOL_TYPE, UINT64, UINT64, VOID *, VOID *, INT64, UINT64, INT64, INT64, INT64)))pXdvExInitializeNPagedLookasideList)(
&ViIrpCallDriverDataList,
0i64,
VfUtilFreePoolCheckIRQL,
512i64,
192i64,
1131442761,
v28,
VfInitializedWithoutReboot,
ExInitializeNPagedLookasideListInternal);
memset(&ViMajorVerifierRoutines, 0i64, 0xB40u);
LOBYTE(v10) = 27;
VfMajorRegisterHandlers(
v10,
(INT64)VfPnpDumpIrpStack,
(INT64)VfPnpVerifyNewRequest,
(INT64)VfPnpVerifyIrpStackDownward,
(INT64)VfPnpVerifyIrpStackUpward,
(INT64)VfPnpIsSystemRestrictedIrp,
(INT64)VfPnpAdvanceIrpStatus,
0i64,
0i64,
0i64,
0i64,
(INT64)VfPnpTestStartedPdoStack,
0i64);
LOBYTE(v11) = 22;
VfMajorRegisterHandlers(
v11,
(INT64)VfPowerDumpIrpStack,
(INT64)VfPowerVerifyNewRequest,
(INT64)VfPowerVerifyIrpStackDownward,
(INT64)VfPowerVerifyIrpStackUpward,
(INT64)VfPowerIsSystemRestrictedIrp,
0i64,
0i64,
0i64,
0i64,
0i64,
(INT64)VfPowerTestStartedPdoStack,
0i64);
LOBYTE(v12) = 23;
VfMajorRegisterHandlers(
v12,
(INT64)VfWmiDumpIrpStack,
(INT64)VfWmiVerifyNewRequest,
(INT64)VfWmiVerifyIrpStackDownward,
(INT64)VfWmiVerifyIrpStackUpward,
0i64,
0i64,
0i64,
0i64,
0i64,
0i64,
(INT64)VfWmiTestStartedPdoStack,
0i64);
LOBYTE(v13) = -1;
VfMajorRegisterHandlers(
v13,
(INT64)ViGenericDumpIrpStack,
(INT64)ViGenericVerifyNewRequest,
(INT64)ViGenericVerifyIrpStackDownward,
(INT64)ViGenericVerifyIrpStackUpward,
0i64,
0i64,
(INT64)ViGenericIsValidIrpStatus,
(INT64)ViGenericIsNewRequest,
(INT64)ViGenericVerifyNewIrp,
(INT64)ViGenericVerifyNewRequest,
0i64,
(INT64)ViGenericBuildIrpLogEntry);
VfHalVerifierInitialize();
ViIrpLogDatabaseLock = 0i64;
PoolWithTag = ExAllocatePoolWithTag(0x200ui64, 0x18ui64, 1682531926i64);
ViIrpLogDatabase = (__int64)PoolWithTag;
if( PoolWithTag )
{
*(_DWORD *)PoolWithTag = 0;
v15 = PoolWithTag + 1;
v15[1] = v15;
*v15 = v15;
}
ViDdiInitialized = 1;
v7 = VfAvlInitializeTree(&ViRemLockAvl, 0x20ui64, 0x88ui64, ViRemLockDelayFreeAvlNode, a5a, a6a) < 0;
v16 = &ViRemLockInitialized;
if( v7 )
v16 = &ViRemLockAllocationFailures;
_InterlockedExchange(v16, 1);
v7 = VfAvlInitializeTree(&ViDevObjAvl, 0x150ui64, 0x18ui64, ViRemLockDelayFreeAvlNode, a5b, a6b) < 0;
v17 = &ViDevObjInitialized;
if( v7 )
v17 = &ViDevObjAllocationFailures;
_InterlockedExchange(v17, 1);
LOWORD(v29) = 16;
((void(__fastcall *)(_NPAGED_LOOKASIDE_LIST *, _QWORD, VOID(__stdcall *)(VOID *), __int64, __int64, int, int, int, VOID(__stdcall *)(_NPAGED_LOOKASIDE_LIST *, VOID **, POOL_TYPE, UINT64, UINT64, VOID *, VOID *, INT64, UINT64, INT64, INT64, INT64)))pXdvExInitializeNPagedLookasideList)(
&ViIoCallbackStateLookaside,
0i64,
VfUtilFreePoolCheckIRQL,
512i64,
8i64,
1330202198,
v29,
VfInitializedWithoutReboot,
ExInitializeNPagedLookasideListInternal);
_InterlockedExchange(&ViIoCallbacksInitialized, 1);
VfCtxInit(v19, v18);
VfDeadlockInitialize(v4, v3);
VfSettingsApplyMiscellaneousChecks(v5);
IovUtilVerifierEnabled = 1;
if( (MmVerifierData & 0x10) != 0 )
*(&stru_140CF2E80 + 7336) = 1;
ViVerifierEnabled = 1;
}Referenced by:
VfInitSystemNoRebootNeeded