次の方法で共有


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 コンプライアンス規則 する HwStorPortProhibitedDDIs(storport), IrqlMmApcLte(wdm), SpNoWait(storport), StorPortStartIo(storport)

関連項目

AllocateCommonBuffer

KeGetDcacheFillSize

mmAllocateContiguousMemory

mmAllocateContiguousMemorySpecifyCache

MmFreeNonCachedMemory