次の方法で共有


IMiniportWaveRTStream::AllocateAudioBuffer メソッド (portcls.h)

AllocateAudioBuffer メソッドは、オーディオ データの循環バッファーを割り当てます。

構文

NTSTATUS AllocateAudioBuffer(
  ULONG               RequestedSize,
  PMDL                *AudioBufferMdl,
  ULONG               *ActualSize,
  ULONG               *OffsetFromFirstPage,
  MEMORY_CACHING_TYPE *CacheType
);

パラメーター

RequestedSize

オーディオ バッファーの要求されたサイズをバイト単位で指定します。

AudioBufferMdl

オーディオ バッファーを記述するメモリ記述子リスト (MDL) の出力ポインター。 このパラメーターは、メソッドが MDL へのポインターを書き込む呼び出し元によって割り当てられたポインター変数を指します。 Windows カーネルの MDL の一般的な情報については、「MDLの使用」を参照してください。

ActualSize

割り当てられたバッファーの実際のサイズ (バイト単位) の出力ポインター。 このパラメーターは、メソッドがサイズ値を書き込む ULONG 変数を指します。

OffsetFromFirstPage

MDL の最初のページの先頭からのバッファーのオフセットの出力ポインター (バイト単位)。 このパラメーターは、メソッドがオフセット値を書き込む呼び出し元によって割り当てられた ULONG 変数を指します。

CacheType

クライアントがオーディオ バッファーに対して要求するキャッシュの種類を指定します。 このパラメーターは、MEMORY_CACHING_TYPE列挙値です。 詳細については、以下の「解説」セクションを参照してください。

戻り値

このメソッドは NTSTATUS を返します。 AllocateAudioBuffer は、呼び出しが成功した場合にSTATUS_SUCCESSを返します。 それ以外の場合、メソッドは適切なエラー状態コードを返します。 次の表に、考えられるエラー状態コードの一部を示します。

リターン コード 形容
STATUS_UNSUCCESSFUL ドライバーは、バッファー属性の指定された組み合わせをサポートしていません。
STATUS_INSUFFICIENT_RESOURCES バッファーの割り当てに使用できるメモリが不足しています。
STATUS_DEVICE_NOT_READY デバイスの準備ができていません。

備考

注: Intel High Definition Audio Codecs のミニポートでは、キャッシュの一貫性を確保するために、MmWriteCombined の CacheType を指定する必要があります。 これは、Intel High Definition Audio Controller がスヌープ以外の操作用に構成されている可能性があるためです。

クライアントから KSPROPERTY_RTAUDIO_BUFFER 要求を受け取った後、ポート ドライバーは AllocateAudioBuffer メソッドを呼び出して、後でポート ドライバーがクライアントの仮想アドレス空間にマップできる循環バッファーを割り当てます。

AllocateAudioBuffer の呼び出し中に、ミニポート ドライバーは IPortWaveRTStream::AllocatePagesForMdl または IPortWaveRTStream::AllocateContiguousPagesForMdl を呼び出すことによって循環バッファーを割り当てます。 ミニポート ドライバーは、このバッファーから再生または録音するオーディオ ハードウェアもプログラムしますが、ポート ドライバーが IMiniportWaveRTStream::SetState with State=KSSTATE_RUN を呼び出すまで DMA 転送を開始しません。 AllocateAudioBuffer メソッドの出力パラメーターには、オーディオ バッファーの MDL、ドライバーによって割り当てられたバッファーの実際のサイズ、および MDL の最初のページの先頭からのバッファーの開始のオフセットが含まれます。

RequestedSize は、クライアントがオーディオ バッファーに対して要求しているサイズを示す入力パラメーターです。 ActualSize は、オーディオ バッファーの実際のサイズを示す出力パラメーターです。

オーディオ デバイスでは、オーディオ バッファーの開始と終了をサンプル境界で行うか、ハードウェアに依存する他の種類のアラインメント制約を満たす必要がある場合があります。 十分なメモリが使用可能な場合、バッファーの実際のサイズは、最も近いサンプルまたはその他のハードウェア制約境界に丸められた要求されたサイズ (上または下) です。 実際のサイズは、少なくとも要求されたサイズである必要があります。それ以外の場合、オーディオ セッション API (WASAPI) オーディオ エンジンはバッファーを使用せず、ストリームの作成は失敗します。

必要条件

要件 価値
ヘッダー portcls.h
IRQL PASSIVE_LEVEL

関連項目

IMiniPortWaveRTStream