次の方法で共有


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

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

構文

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

パラメーター

RequestedSize

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

AudioBufferMdl

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

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

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

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

要件

要件
Header portcls.h
IRQL PASSIVE_LEVEL

こちらもご覧ください

IMiniPortWaveRTStream