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.