MmAllocateNonCachedMemory 函数 (ntddk.h)

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

语法

PVOID MmAllocateNonCachedMemory(
  [in] SIZE_T NumberOfBytes
);

参数

[in] NumberOfBytes

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

返回值

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

注解

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

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

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

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

要求

要求
目标平台 通用
标头 ntddk.h (包括 Ntddk.h)
Library NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <=APC_LEVEL
DDI 符合性规则 HwStorPortProhibitedDDI (storport) IrqlMmApcLte (wdm) SpNoWait (storport) StorPortStartIo (storport)

另请参阅

AllocateCommonBuffer

KeGetDcacheFillSize

MmAllocateContiguousMemory

MmAllocateContiguousMemorySpecifyCache

MmFreeNonCachedMemory