VfKeCheckForChanges
VOID __stdcall VfKeCheckForChanges(UINT64 NewFlags){
__int16 v1;
size_t v2;
VOID *PoolWithTagPriority;
void *v4;
size_t v5;
VOID *v6;
void *v7;
v1 = NewFlags;
if( (MmVerifierData & 0xFBF) != 0 )
{
if( !ViTrackIrqlQueue && ((NewFlags & 2) != 0 || VfVerifyMode >= 3) )
{
v2 = 56 * ViTrackIrqlQueueLength;
PoolWithTagPriority = ExAllocatePoolWithTagPriority(
NonPagedPoolNx,
56i64 * (unsigned int)ViTrackIrqlQueueLength,
0x6C717249ui64,
HighPoolPriority);
v4 = PoolWithTagPriority;
if( PoolWithTagPriority )
{
memset(PoolWithTagPriority, 0i64, v2);
if( _InterlockedCompareExchange64((volatile signed __int64 *)&ViTrackIrqlQueue, (signed __int64)v4, 0i64) )
ExFreePoolWithTag(v4, 0);
}
}
if( !VfKeCriticalRegionTraces && (v1 & 0x800) != 0 )
{
v5 = VfKeCriticalRegionTracesLength << 6;
v6 = ExAllocatePoolWithTagPriority(
NonPagedPoolNx,
(unsigned __int64)(unsigned int)VfKeCriticalRegionTracesLength << 6,
0x52436656ui64,
(_EX_POOL_PRIORITY)(VfKeCriticalRegionTraces + 32));
v7 = v6;
if( v6 )
{
memset(v6, 0i64, v5);
if( _InterlockedCompareExchange64(&VfKeCriticalRegionTraces, (signed __int64)v7, 0i64) )
ExFreePoolWithTag(v7, 0);
}
}
}
}Referenced by:
VfInitVerifierComponents
VfSettingsCheckForChanges