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) |