共用方式為


MmAllocateNonCachedMemory 函式 (ntddk.h)

MmAllocateNonCachedMemory 例程會配置非快取和快取對齊記憶體的虛擬位址範圍。

語法

PVOID MmAllocateNonCachedMemory(
  [in] SIZE_T NumberOfBytes
);

參數

[in] NumberOfBytes

指定要配置之範圍的位元組大小。

傳回值

如果無法配置要求的記憶體,則傳回值為 NULL。 否則,它是所配置範圍的基底虛擬位址。

備註

MmAllocateNonCachedMemory 可以從 DriverEntry 例程呼叫,為各種裝置特定的緩衝區配置非快取的虛擬記憶體區塊。 不論要求的配置大小為何,函式一律會傳回非分頁系統地址空間記憶體的完整虛擬記憶體頁面大小倍數。

非快取配置會對齊處理器數據快取行大小的整數倍數,以防止快取和一致性問題。

MmAllocateNonCachedMemory 傳回的實體記憶體頁面通常不是連續的頁面。

MmAllocateNonCachedMemory 配置的記憶體未初始化。 如果核心模式驅動程式要讓使用者模式軟體看見 (,以避免) 外泄潛在特殊許可權的內容,則核心模式驅動程式必須先將這個記憶體零。

規格需求

需求
目標平台 Universal
標頭 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