IPortWaveRTStream::AllocatePagesForMdl メソッド (portcls.h)
メソッドは AllocatePagesForMdl
、非ページ物理メモリ ページのリストを割り当て、それらを記述するメモリ記述子リスト (MDL) へのポインターを返します。
構文
PMDL AllocatePagesForMdl(
[in] PHYSICAL_ADDRESS HighAddress,
[in] SIZE_T TotalBytes
);
パラメーター
[in] HighAddress
MDL のストレージを割り当てることができるアドレス範囲のハイエンドを指定します。 アドレス範囲の下端は暗黙的に 0 です。
[in] TotalBytes
MDL に割り当てる合計バイト数を指定します。 このメソッドは常に整数のメモリ ページを割り当てます。
戻り値
AllocatePagesforMdl
は、物理メモリ ページの一覧を記述する MDL へのポインターを返します。 メソッドが要求されたバッファーを割り当てることができない場合は、 NULL を返します。
注釈
Windows オーディオ スタックではバッファーのメモリ アクセスアラインメント要件を表すメカニズムがサポートされていないため、オーディオ ドライバーは、プラットフォーム固有の配置要件を課さないマップされたメモリ バッファーのキャッシュの種類を選択する必要があります。 言い換えると、オーディオ ドライバーによってマップされたメモリ バッファーに使用されるキャッシュの種類は、特定のプラットフォームのメモリ配置要件に関する想定を行う必要はありません。
ドライバーは、このメソッドを呼び出して、ユーザー モードまたはカーネル モードにマップできるメモリを割り当てます。 MDL 内の物理メモリ ページは、必ずしも物理メモリ内で連続しているわけではありませんが、すべて指定されたアドレス範囲内に収まっています。
メソッドは常に整数のページ数を割り当てます。 十分なメモリが使用可能な場合、メモリ割り当ては次のページに切り上げられた要求されたサイズです。 それ以外の場合、メモリ割り当ては要求されたサイズより小さくすることができます。 呼び出し元は、実際に割り当てられているバイト数を確認する必要があります。
オーディオ デバイスの DMA コントローラーでバッファー内の物理メモリ ページが連続している必要がある場合、ドライバーは代わりに IPortWaveRTStream::AllocateContiguousPagesForMdl を呼び出す必要があります。
MmAllocatePagesForMdl 関数と同様に、 AllocatePagesforMdl
メソッドはロックされている (非ページ) がマップされていないメモリ ページを割り当てます。 ミニポート ドライバーがこのメモリへのソフトウェア アクセスを設定する場合、ミニポート ドライバーは、カーネル モードのアドレス空間にページをマップする IPortWaveRTStream::MapAllocatedPages への後続の呼び出しを行う必要があります。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows Vista 以降の Windows オペレーティング システムで使用できます。 |
対象プラットフォーム | ユニバーサル |
Header | portcls.h |
IRQL | パッシブ レベル |