MmAllocateNonCachedMemory 函数 (ntddk.h)

mmAllocateNonCachedMemory 例程分配非缓存和缓存对齐内存的虚拟地址范围。

语法

PVOID MmAllocateNonCachedMemory(
  [in] SIZE_T NumberOfBytes
);

参数

[in] NumberOfBytes

指定要分配的范围的大小(以字节为单位)。

返回值

如果无法分配请求的内存,则返回值 NULL。 否则,它是已分配范围的基虚拟地址。

言论

可以从 DriverEntry 例程调用 mmAllocateNonCachedMemory,为各种特定于设备的缓冲区分配非缓存的虚拟内存块。 无论请求的分配大小如何,该函数始终返回非分页系统地址空间内存的虚拟内存页大小的完整倍数。

非缓存分配在处理器数据缓存行大小的整数倍数上对齐,以防止缓存和一致性问题。

MmAllocateNonCachedMemory 返回的物理内存页通常不是连续页。

mmAllocateNonCachedMemory 分配的内存未初始化。 如果内核模式驱动程序要使用户模式软件可见(以避免泄露潜在特权内容),内核模式驱动程序必须首先为此内存零。

要求

要求 价值
目标平台 普遍
标头 ntddk.h (包括 Ntddk.h)
NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <=APC_LEVEL
DDI 符合性规则 HwStorPortProhibitedDIS(storport)IrqlMmApcLte(wdm)SpNoWait(storport)StorPortStartIo(storport)

另请参阅

AllocateCommonBuffer

KeGetDcacheFillSize

mmAllocateContiguousMemory

mmAllocateContiguousMemorySpecifyCache

mmFreenonCachedMemory