VerifierMmMapIoSpace

VOID *__stdcall VerifierMmMapIoSpace(
        LARGE_INTEGER PhysicalAddress,
        UINT64 NumberOfBytes,
        MEMORY_CACHING_TYPE CacheType){
  unsigned __int8 CurrentIrql; 
  UINT64 v8; 
  VOID *v9; 
  VOID *v10; 
  UINT64 v11; 
  PVOID retaddr; 
  CurrentIrql = KeGetCurrentIrql();
  if( CurrentIrql > 2u && (MmVerifierData & 1) != 0 )
    VerifierBugCheckIfAppropriate(0xC4ui64, 0x73ui64, CurrentIrql, PhysicalAddress.LowPart, NumberOfBytes, v11);
  if( (MmVerifierData & 1) != 0 )
    MmCheckMapIoSpace(PhysicalAddress, NumberOfBytes);
  if( (unsigned int)VfFaultsInjectResourceFailure(0i64) == 1 )
    return 0i64;
  if( (MmVerifierData & 0x2000000) != 0 )
  {
    v8 = 4i64;
    if( CacheType != MmCached )
    {
      v8 = 516i64;
      if( CacheType == MmWriteCombined )
        v8 = 1028i64;
    }
    MmMapIoSpaceEx(PhysicalAddress, NumberOfBytes, v8);
  }
  else
  {
    v9 = (VOID *)((__int64(__fastcall *)(_QWORD, _QWORD, _QWORD))pXdvMmMapIoSpace)(
                   (LARGE_INTEGER)PhysicalAddress.QuadPart,
                   NumberOfBytes,
                   (unsigned int)CacheType);
  }
  v10 = v9;
  VfAllocPoolNotification(v9, NumberOfBytes);
  if( v10 )
  {
    if( (MmVerifierData & 0x1000) != 0 )
      ViTargetAddToCounter(retaddr, 0xD0ui64, 0xD8ui64, NumberOfBytes);
  }
  return v10;
}

Referenced by:

No references.