PCHANGE_BANDWIDTH_ALLOCATION コールバック関数 (hdaudio.h)
ChangeBandwidthAllocation
ルーチンは、HD Audio Link での DMA エンジンの帯域幅割り当てを変更します。
ChangeBandwidthAllocation
ルーチンの関数ポインター型は、次のように定義されます。
PCHANGE_BANDWIDTH_ALLOCATION PchangeBandwidthAllocation;
NTSTATUS PchangeBandwidthAllocation(
[in] PVOID _context,
[in] HANDLE Handle,
[in] PHDAUDIO_STREAM_FORMAT StreamFormat,
[out] PHDAUDIO_CONVERTER_FORMAT ConverterFormat
)
{...}
[in] _context
HDAUDIO_BUS_INTERFACE、HDAUDIO_BUS_INTERFACE_V2、または HDAUDIO_BUS_INTERFACE_BDL 構造体の Context メンバーのコンテキスト値を指定します。
[in] Handle
DMA エンジンの識別を処理します。 このハンドル値は、AllocateCaptureDmaEngine または AllocateRenderDmaEngine 以前の呼び出しから取得されました。
[in] StreamFormat
要求されたストリーム形式を指定します。 このパラメーターは、ストリームのデータ形式を指定する HDAUDIO_STREAM_FORMAT 型の呼び出し元によって割り当てられた構造体を指します。
[out] ConverterFormat
コンバーター形式を取得します。 このパラメーターは、ルーチンがエンコードされた形式を書き込む HDAUDIO_CONVERTER_FORMAT 型の呼び出し元によって割り当てられた構造体を指します。 詳細については、次の「解説」セクションを参照してください。
呼び出しが成功した場合、ChangeBandwidthAllocation
はSTATUS_SUCCESSを返します。 それ以外の場合、ルーチンは適切なエラー コードを返します。 次の表は、考えられるリターン エラー コードの一部を示しています。
リターン コード | 形容 |
---|---|
|
呼び出し元が高すぎる IRQL で実行されていることを示します。 |
|
パラメーター値 ハンドルが無効であることを示します。 |
|
パラメーター値の 1 つが正しくないことを示します (ポインターが正しくないか、ストリーム形式が無効です)。 |
|
DMA エンジンが、要求されたストリーム形式をサポートするために十分な内部 FIFO ストレージを割り当てることができないことを示します。 |
|
要求を満たすために十分な帯域幅が使用できないことを示します。 |
|
ストリームがリセット状態ではないか、バッファーが DMA エンジンに割り当てられていることを示します。 |
呼び出し元は、AllocateCaptureDmaEngine または AllocateRenderDmaEngine 呼び出すことによって、DMA エンジンの初期帯域幅の割り当てを取得します。 その後、呼び出し元は、ChangeBandwidthAllocation
を呼び出すことによって帯域幅の割り当てを変更できます。
converterFormat パラメーターを使用して、ルーチンは、呼び出し元が入力コンバーターまたは出力コンバーターのプログラミングに使用できるストリーム記述子値を出力します。 このルーチンは、streamFormat パラメーターの情報を 16 ビット整数にエンコードします。 詳細については、HDAUDIO_CONVERTER_FORMATを参照してください。
このルーチンは失敗し、次のいずれかの状況でSTATUS_INVALID_DEVICE_REQUESTエラー コードを返します。
- 以前に割り当てられた DMA バッファーが解放されていません (FreeDmaBuffer 呼び出すか、FreeContiguousDmaBuffer をします)。
- ストリームがリセット以外の状態です。
ChangeBandwidthAllocation
呼び出しが失敗した場合、既存の帯域幅予約は引き続き有効です。 帯域幅の割り当ては、呼び出しが成功した場合にのみ変更されます。
Windows Vista 以降では、ウェーブ ミニポート ドライバーは、SetFormat メソッドの実行中にこのルーチンを呼び出します (HD オーディオ DDI でXxxDmaEngine ルーチンの 1 つを呼び出した後)。 詳細については、「IMiniportWavePciStream::SetFormat」を参照してください。
要件 | 価値 |
---|---|
ターゲット プラットフォーム の | デスクトップ |
ヘッダー | hdaudio.h (Hdaudio.h を含む) |
IRQL | PASSIVE_LEVEL |
AllocateCaptureDmaEngine の
AllocateRenderDmaEngine の
FreeContiguousDmaBuffer の