次の方法で共有


動的オーディオ サブデバイス

一部のオーディオ アダプターは、実行時に内部トポロジを動的に変更できます。 PortCls システム ドライバー (Portcls.sys) でシステム提供の機能を使用すると、アダプター ドライバーは、動的に構成可能なオーディオ ハードウェアのソフトウェア サポートを提供できます。

たとえば、 Intel High Definition Audio Specification では、オーディオ コーデックという用語を使用して、HD Audio Link インターフェイスを介して HD オーディオ (HD オーディオ) コントローラーに接続する統合オーディオ アダプターを参照します。 一般的なオーディオ コーデックでは、ジャックプレゼンス検出がサポートされています。プラグがジャックに挿入またはジャックから取り外されると、ハードウェアは割り込みを生成して、ハードウェア構成の変更をドライバーに通知します。 たとえば、ドライバーは、ヘッドフォンのオーディオ サブデバイスを表す KS フィルター を作成することによって、ヘッドフォン ジャックへのプラグの挿入に応答します。 ドライバーは、ハードウェア リソースをフィルターに割り当て (たとえば、ヘッドフォンは、ボリューム コントロールとデジタルアナログ コンバーター、DAC が必要になる場合があります) オーディオ デバイスとしてフィルターを登録します。 ユーザーがヘッドフォンを取り外すと、ドライバーはリソースを解放し、フィルターを削除してレジストリから削除することで応答します。

この動作により、オーディオ アプリケーションが登録されているオーディオ デバイスを確認するときに、現在接続されているデバイスのみが検出されます。 デバイスが取り外されている場合、レジストリには表示されません。

Windows Vista、Windows Server 2003 Service Pack 1 (SP1)、および Windows XP Service Pack 2 (SP2) では、PortCls は IUnregisterSubdevice インターフェイスと IUnregisterPhysicalConnection インターフェイスをサポートしています。 オーディオ アダプター ドライバーは、これら 2 つのインターフェイスを使用して、使用されなくなったオーディオ サブデバイスを削除します。 Windows Server 2003 や Windows XP を含む以前のバージョンの Windows では、これらのインターフェイスはサポートされていません。 これらの以前のバージョンの Windows では、サブデバイスは作成できますが、削除することはできません。サブデバイスが作成されると、そのサブデバイスはアダプター ドライバー オブジェクトの有効期間中存在します。

IUnregisterSubdevice インターフェイスには、アダプター ドライバーが PcRegisterSubdevice ルーチンの以前の呼び出しを通じて登録されたサブデバイスの "登録解除" に使用できる 1 つのメソッドが含まれています。

IUnregisterSubdevice::UnregisterSubdevice

IUnregisterPhysicalConnection インターフェイスには、アダプター ドライバーがサブデバイス間の物理接続の登録を解除するために使用できる 3 つのメソッドが含まれています。

IUnregisterPhysicalConnection::UnregisterPhysicalConnection

IUnregisterPhysicalConnection::UnregisterPhysicalConnectionFromExternal

IUnregisterPhysicalConnection::UnregisterPhysicalConnectionToExternal

これらのメソッドは、PcRegisterPhysicalConnection、PcRegisterPhysicalConnectionFromExternal、および PcRegisterPhysicalConnectionToExternal ルーチンの以前の呼び出しによってドライバーが登録した接続を削除します。 PortCls は、PcRegisterPhysicalConnectionXxx 呼び出しからの情報を格納して、ポート ドライバーが後で情報を使用して KSPROPERTY_PIN_PHYSICALCONNECTION プロパティ要求に応答できるようにします。 アダプターのトポロジからサブデバイスを削除する場合、ドライバーは、トポロジのその部分へのサブデバイスの物理接続の登録を解除する必要があります。 サブデバイスの物理接続の登録を解除しないと、メモリ リークが発生する可能性があります。 PortCls は、Windows 2000 以降の PcRegisterXxx ルーチンをサポートしています。

このセクションの次のトピックでは、動的トポロジを使用してアダプターのドライバーサポートを実装する方法について説明します。

動的トポロジの管理

動的サブデバイスのドライバーサポート

動的オーディオ サブデバイスのジャックの説明