MmAllocatePartitionNodePagesForMdlEx
MDL *__stdcall MmAllocatePartitionNodePagesForMdlEx(
LARGE_INTEGER LowAddress,
LARGE_INTEGER HighAddress,
LARGE_INTEGER SkipBytes,
UINT64 TotalBytes,
MEMORY_CACHING_TYPE CacheType,
UINT64 IdealNode,
UINT64 Flags,
PVOID PartitionObject){
MEMORY_CACHING_TYPE CacheAttribute;
int v13;
_MI_PARTITION *v14;
UINT64 v16;
if( (unsigned int)IdealNode >= (unsigned __int16)KeNumberNodes )
return 0i64;
CacheAttribute = CacheType;
if( CacheType == MmNotMapped || CacheType > MmWriteCombined )
CacheAttribute = MmHardwareCoherentCached;
v13 = Flags;
if( (Flags & 0xFFFFF800) != 0 )
return 0i64;
if( (Flags & 0x60) == 32 )
{
v13 = Flags | 0x10;
if( SkipBytes.QuadPart )
{
if( ((SkipBytes.QuadPart - 1) & SkipBytes.QuadPart) != 0
|| SkipBytes.QuadPart < 4096
|| TotalBytes % SkipBytes.LowPart )
{
return 0i64;
}
}
else
{
v13 = Flags | 0x14;
}
}
if( (v13 & 0x100) == 0 || (v13 & 4) == 0 && !KeGetCurrentIrql() )
{
LODWORD(v14) = MiPartitionObjectToPartition(PartitionObject);
if( v14 )
{
LODWORD(v16) = v13;
return MiAllocatePagesForMdl(
v14,
LowAddress,
HighAddress,
SkipBytes,
TotalBytes,
(_MI_PFN_CACHE_ATTRIBUTE)CacheAttribute,
IdealNode,
v16);
}
}
return 0i64;
}Referenced by:
EtwpAllocatePartitionMemory
HalAllocateCommonBufferVector
HalpAllocateCommonBufferThin
HvlpDepositPages
IopLiveDumpAllocateFromVMMemoryPartition
KiComputeNumaCosts
MmAllocateNodePagesForMdlEx
MmAllocatePagesForMdlEx
MmAllocateSecureKernelPages