次の方法で共有


IPortWaveRTStream::AllocateContiguousPagesForMdl メソッド (portcls.h)

AllocateContiguousPagesForMdl メソッドは、連続した非ページの物理メモリ ページのリストを割り当て、それらを記述するメモリ記述子リスト (MDL) へのポインターを返します。

構文

PMDL AllocateContiguousPagesForMdl(
  [in] PHYSICAL_ADDRESS LowAddress,
  [in] PHYSICAL_ADDRESS HighAddress,
  [in] SIZE_T           TotalBytes
);

パラメーター

[in] LowAddress

MDL のストレージを割り当てることができるアドレス範囲の下限を指定します。

[in] HighAddress

MDL のストレージを割り当てることができるアドレス範囲のハイエンドを指定します。

[in] TotalBytes

MDL に割り当てる合計バイト数を指定します。 このメソッドは常に整数のメモリ ページを割り当てます。

戻り値

AllocateContiguousPagesForMdl は、物理メモリ ページの一覧を記述する MDL (PMDL) へのポインターを返します。 メソッドが要求されたバッファーを割り当てることができない場合は、NULLを返します。

備考

ドライバーは、このメソッドを呼び出して、物理的に連続したメモリ ページのブロックを割り当てます。 MDL 内のすべての物理メモリ ページは、LowAddress で指定されたアドレス範囲内にあり、HighAddress パラメーター します。 十分なメモリが使用可能な場合、メモリ割り当ては次のページに切り上げられた要求されたサイズです。それ以外の場合、呼び出しは失敗します。

システムがしばらく実行されると、非ページ メモリのシステム プールが断片化する傾向があり、連続した物理メモリの大きなブロックを割り当てる要求が失敗する確率が高くなります。 オーディオ デバイスの DMA コントローラーで物理メモリ ページが連続している必要がない場合、ドライバーは代わりに IPortWaveRTStream::AllocatePagesForMdl 呼び出す必要があります。 AllocateContiguousPagesForMdlとは異なり、AllocatePagesForMdl メソッドはメモリの断片化の影響を受けません。

AllocateContiguousPagesforMdl メソッドは、ロックされている (非ページ) がマップされていないメモリ ページを割り当てます。 ミニポート ドライバーがこのメモリへのソフトウェア アクセスを必要とする場合、ミニポート ドライバーは、IPortWaveRTStream::MapAllocatedPages への後続の呼び出しを行って、ページをカーネル モードのアドレス空間にマップする必要があります。

必要条件

要件 価値
サポートされる最小クライアント Windows Vista 以降の Windows オペレーティング システムで使用できます。
ターゲット プラットフォーム 万国
ヘッダー portcls.h
IRQL パッシブ レベル

関連項目

IPortWaveRTStream

IPortWaveRTStream::AllocatePagesForMdl

IPortWaveRTStream::MapAllocatedPages