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.