共用方式為


MmAllocateNonCachedMemory 函式 (ntddk.h)

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

語法

PVOID MmAllocateNonCachedMemory(
  [in] SIZE_T NumberOfBytes
);

參數

[in] NumberOfBytes

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

傳回值

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

言論

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

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

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