KSPROPERTY_JACK_DESCRIPTION3
KSPROPERTY_JACK_DESCRIPTION3 プロパティは、フィルター ハンドルを使用してアクセスされるピンごとのプロパティとして実装されます。
バージョン 22H2 以降の Windows オペレーティング システムでは、関連付けられている KSJACK_DESCRIPTION3 構造を使用して、ジャックの現在の構成を指定および変更できます。
用法の要点テーブル
Yammer の入手 | 設定 | 移行先 | プロパティ記述子の種類 | プロパティ値の種類 |
---|---|---|---|---|
はい |
いいえ |
ファクトリをピン留めする (フィルター ハンドル経由) |
KSMULTIPLE_ITEM の後に KSJACK_DESCRIPTION3 構造体の配列が続きます |
プロパティ値 (インスタンス データ) は KSMULTIPLE_ITEM で、その後に KSJACK_DESCRIPTION3 構造体の配列が続きます。
戻り値
KSPROPERTY_JACK_DESCRIPTION3 プロパティ要求は、N KSJACK_DESCRIPTION3 構造体の配列が後に続く KSMULTIPLE_ITEM を返します。ここでの N は、指定ブリッジに関連付けられているジャック数です。 次の一覧は、プロパティ要求が返す項目を示しています。
KSMULTIPLE_ITEM.Size = sizeof(KSMULTIPLE_ITEM) + N * sizeof(KSJACK_DESCRIPTION3)
KSMULTIPLE_ITEM.Count = N
KSJACK_DESCRIPTION3[0]
...
KSJACK_DESCRIPTION3[N-1]
解説
KSJACK_DESCRIPTION3 および KSPROPERTY_JACK_DESCRIPTION3 を使用したオーディオ デバイス変更の周知
Windows オーディオ システムは、オーディオ エンドポイントの作成中にオーディオ デバイスの機能をキャッシュします。 これらのキャッシュされた値は、HW オーディオ エンジンの存在、形式のサポート、コンテナー ID、バッファー サイズの特性などの機能を対象とします。これらのキャッシュされた値は、Windows インストールの有効期間中保持されます。 これらは、オーディオ ドライバーが更新されたとき、または OS のアップグレード中にのみ更新されます。
KSJACK_DESCRIPTION3 を使用すると、Windows オーディオ システムは、オーディオ ドライバーのメカニズムを提供します。このメカニズムは、破棄予定のキャッシュ値と更新予定のキャッシュ値のすべてを要求します。 要求は、リソース制約などのオーディオ デバイス機能の変更によってトリガーできます。
ドライバーが実行時に KSJACK_DESCRIPTION3 の内容を変更するたびに、ドライバーは既存の KSEVENT_PINCAPS_JACKINFOCHANGE イベントをトリガーします。
Windows オーディオ システムは、オーディオ エンドポイントでキャッシュされ、最後に報告された ConfigId 値を保持します。 ConfigId 値は、KSEVENT_PINCAPS_JACKINFOCHANGE イベントへの応答で取得され、システム再起動のオーディオ エンドポイントの通帳処理中は、Audio Endpoint Builder サービスの再起動、オーディオ ドライバーの更新または、エンドポイントのインターフェイス状態変更が実行されます。
取得した ConfigId 値が以前に格納された値と異なる場合、Windows オーディオ システムはカード以前にキャッシュされたすべてのエンドポイント機能を破棄して更新します。
推奨される使用方法は、ConfigId (ビットマスクまたは列挙型) 値によって制御されるドライバー内で複数のオーディオ エンドポイント構成を定義することです。 たとえば、ConfigId が 1 の場合、オーディオ エンジン ノードが存在することを示しているのに対し、ConfigId 2 はオーディオ エンジン ノードを報告しません。 ドライバーで使用されている ConfigId は、KSPROPERTY_JACK_DESCRIPTION3 を介して Windows オーディオ システムと共有され、Windows オーディオ システムによってキャッシュされた機能とエンドポイントを同期するように動作します。
ConfigId の値は Windows に対して不透明です。 オーディオ ドライバーは、前述されているように、ビットマスクまたは列挙型の代わりに実行時に選択されたタイムスタンプまたはインクリメント値を使用できます。 この方法は、エンドポイントの機能が変更されていない場合でも、起動時またはインターフェイスの変更時に不要なエンドポイントの更新が発生し、最後に格納された ConfigId 値を新しく報告された値に同期する可能性があるため、推奨されません。 この方法では、ドライバーと Windows の同期が切れる可能性が高くなり、オーディオ再生エラーが発生する可能性もあります。
ConfigId の変更時にエンドポイントのキャッシュされた値を更新するために使用されるメカニズムは、オペレーティング システムのアップグレードとドライバーの更新に使用されるメカニズムと同じです。 別の ID を持つ新しいエンドポイントが作成されます。このエンドポイントには、エンドポイントの新しい ConfigId 設定に一致する更新されたキャッシュ値が含まれ、ユーザー設定が古いエンドポイントから新しいエンドポイントにコピーされ、最後に古いエンドポイントが削除されます。 OS アップグレードのオーディオ エンドポイント移行プロセスの詳細については、「オペレーティング システムのアップグレード」を参照してください。
要件
サポートされている最小のクライアント |
バージョン 22H2 以降の Windows オペレーティング システムで使用できます。 |
ヘッダー |
Ksmedia.h |