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.