VerifierMmAllocateContiguousMemorySpecifyCache
VOID *__stdcall VerifierMmAllocateContiguousMemorySpecifyCache(
UINT64 NumberOfBytes,
_LARGE_INTEGER LowestAcceptableAddress,
_LARGE_INTEGER HighestAcceptableAddress,
_LARGE_INTEGER BoundaryAddressMultiple,
_MEMORY_CACHING_TYPE CacheType){
int v10;
VOID *v11;
UINT64 v12;
VOID *retaddr;
if( VfFaultsInjectResourceFailure(0i64) )
return 0i64;
if( CacheType == MmCached )
{
v10 = (MmVerifierData & 0x2000000) != 0 ? 4 : 64;
}
else
{
v10 = 516;
if( CacheType == MmWriteCombined )
v10 = 1028;
}
if( (MmVerifierData & 0x4000000) != 0 && HighestAcceptableAddress.QuadPart < 0x100000000ui64 )
VerifierBugCheckIfAppropriate(0xC4ui64, 0x141u, HighestAcceptableAddress.anonymous_0.LowPart, NumberOfBytes, 0, v12);
v11 = (VOID *)((__int64(__fastcall *)(_QWORD, _QWORD, _QWORD, _QWORD, _DWORD, _DWORD))pXdvMmAllocateContiguousNodeMemory)(
NumberOfBytes,
(_LARGE_INTEGER)LowestAcceptableAddress.QuadPart,
(_LARGE_INTEGER)HighestAcceptableAddress.QuadPart,
(_LARGE_INTEGER)BoundaryAddressMultiple.QuadPart,
v10,
0x80000000);
VfAllocPoolNotification(v11, NumberOfBytes);
if( v11 )
{
VfFillAllocatedMemory(v11, NumberOfBytes);
if( (MmVerifierData & 8) != 0 )
ViTargetTrackContiguousMemory(retaddr, v11, NumberOfBytes);
}
return v11;
}Referenced by:
No references.