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 オペレーティング システムで使用できます。 |
ターゲット プラットフォーム の | 万国 |
ヘッダー | portcls.h |
IRQL | パッシブ レベル |
関連項目
IPortWaveRTStream の