次の方法で共有


MmAllocateNonCachedMemory 関数 (ntddk.h)

MmAllocateNonCachedMemory ルーチンは、キャッシュされていないメモリとキャッシュアラインメモリの仮想アドレス範囲を割り当てます。

構文

PVOID MmAllocateNonCachedMemory(
  [in] SIZE_T NumberOfBytes
);

パラメーター

[in] NumberOfBytes

割り当てる範囲のサイズをバイト単位で指定します。

戻り値

要求されたメモリを割り当てることができない場合、戻り値は NULL です。 それ以外の場合は、割り当てられた範囲のベース仮想アドレスです。

注釈

MmAllocateNonCachedMemoryDriverEntry ルーチンから呼び出して、さまざまなデバイス固有のバッファーに対してキャッシュされていない仮想メモリ ブロックを割り当てることができます。 関数は、要求された割り当てサイズに関係なく、非ページ システム アドレス空間メモリの仮想メモリ ページ サイズの完全な倍数を常に返します。

キャッシュされていない割り当ては、キャッシュと一貫性の問題を防ぐために、プロセッサのデータ キャッシュ行サイズの整数倍数に配置されます。

MmAllocateNonCachedMemory から返される物理メモリ ページは、通常、連続したページではありません。

MmAllocateNonCachedMemory によって割り当てられるメモリが初期化されていません。 カーネル モード ドライバーは、このメモリをユーザー モード ソフトウェアに表示する場合は、まずこのメモリをゼロにする必要があります (特権のある可能性のあるコンテンツがリークされないようにするため)。

要件

要件
対象プラットフォーム ユニバーサル
Header ntddk.h (Ntddk.h を含む)
Library NtosKrnl.lib
[DLL] NtosKrnl.exe
IRQL <=APC_LEVEL
DDI コンプライアンス規則 HwStorPortProhibitedDDIs(storport), IrqlMmApcLte(wdm), SpNoWait(storport), StorPortStartIo(storport)

こちらもご覧ください

AllocateCommonBuffer

KeGetDcacheFillSize

MmAllocateContiguousMemory

MmAllocateContiguousMemorySpecifyCache

MmFreeNonCachedMemory