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