Share via


デバイス ロールの使用

MMDevice API では、デバイス ロールがサポートされます。 ERole 列挙は、MMDevice API によってサポートされているデバイス ロールを定義します。

Note

MMDevice API はデバイス ロールをサポートしていますが、Windows Vista のユーザー インターフェイスでは、この機能のサポートは実装されていません。

 

アプリケーションは、MMDevice API を使用して、IMMDeviceEnumerator::GetDefaultAudioEndpoint メソッドと IMMNotificationClient::OnDefaultDeviceChanged メソッドを通じてデバイス ロールをサポートできます。 ただし、Windows Vista のユーザー インターフェイスでは、異なるデバイスへの個々のロールの割り当てはサポートされません。 Windows Vista では、ユーザー インターフェイスによって、ユーザーがレンダリング用の既定のオーディオ デバイスとキャプチャ用の既定のオーディオ デバイスを選択可能になります。 ユーザーが既定のレンダリングまたはキャプチャ デバイスを選択すると、システムはそのデバイスに 3 つのデバイス ロール (eConsole、eMultimedia、eCommunications) をすべて割り当てます。 アプリケーションは、オーディオ エンドポイント デバイスに割り当てられているロールを変更できません。 オペレーティング システムでは、ユーザーのみがデバイス ロールを割り当てることができます。

クライアントは、オーディオ エンドポイント デバイスへのロールの割り当てで変更が発生するたびに、MMDevice API から通知を受け取るよう自身を登録できます。 デバイス間でロールが切り替わると、クライアントは、同じデバイスを通じてストリームの再生 (または記録) を続行するか、ストリームを別のデバイスに切り替えるかを選択できます。 既定では、ストリームは引き続き元のデバイスを通じて再生 (または記録) されます。 Windows Vista では、ストリームを別のデバイスに切り替えるには、クライアントが元のデバイス上のストリームを削除し、新しいデバイスで代替ストリームを作成する必要があります。 Windows 7 では、クライアントは新しい通知をリッスンして、再生またはキャプチャ セッションを中断することなくシームレス スイッチを実装できます。 詳細については、ストリーム ルーティングに関する記事をご覧ください。

Windows Vista を使用してアプリケーションをテストする予定の場合、テスト環境をセットアップすることで、ユーザーが個々のデバイス ロールを別のデバイスに割り当てることができるときにアプリケーションが期待どおりに動作することを確認できます。 詳しくは、uaa@microsoft.com までメールでお問い合わせください。

通信デバイス

Windows 7 ユーザー インターフェイスには、通信デバイスを追加する機能があります。 [サウンド] コントロール パネルを使用すると、オーディオ ストリームをレンダリングおよびキャプチャするための既定の通信デバイスをそれぞれ選択できます。 既定では、新しいデバイスがコンピューターに接続されると、オペレーティング システムは自動ロール検出を実行し、デバイスが eCommunication ロールに適しているかどうかを判断します。 通信デバイスをターゲットにすることにより、コア オーディオ API を使用して PC 電話通信ソリューションを実装するアプリケーションを開発できます。 たとえば、VoIP アプリケーションでは、eCommunications ロールを持つ既定のキャプチャおよびレンダリング エンドポイント デバイスに、音声入力ストリームと出力ストリームを割り当てることができます。 他のストリームと同様、通信アプリケーションは IMMDeviceEnumerator::GetDefaultAudioEndpoint を呼び出することにより、通信デバイスのエンドポイントへの参照を取得する必要があります。 この呼び出しでは、アプリケーションは Role パラメーターに eCommunications を指定する必要があります。 通信デバイスで開いたストリームに対する WASAPI ストリーム操作は、他のオーディオ ストリームと似ています。 通信アプリケーションでは、デバイス エンドポイントからの通知を処理してダッキングなどの動作を実装することにより、ユーザー エクスペリエンスを向上させることができます。 詳細については、「通信デバイスの使用」を参照してください。

自動デバイス ロール検出

コンピューターに既定のレンダリング デバイス、スピーカー、そして既定のキャプチャ デバイスとしtマイクがあるシナリオを考えてみましょう。 ユーザーが USB ヘッドセットをコンピューターに接続します。 適切なドライバーがインストールされると、オペレーティング システムは、新しいオーディオ デバイスに割り当てるロールを検出しようとします。

Windows 7 では、デバイス ロール検出機能が大幅に改善されており、オーディオ デバイスに適したロールが決定されます。 すべてのオーディオ デバイスには、デバイス OEM によって設定された構成設定のセットが含まれています。これは、システムがデバイスを使用する方法を判断するのに役立ちます。 これらの設定には、オーディオ ジャックの物理的な場所、デバイスの種類、ジャック サブタイプ、検出機能などの情報が含まれるため、システムはデバイスが接続されているかどうかを判断できます。 これらの値をデバイスから取得することにより、オペレーティング システムはデバイスに割り当てるロールを判断します。 このシナリオでは、システムは USB ヘッドセット デバイスに対してクエリを実行し、ロールの自動検出を実行して、デバイスが通信デバイスに最適であると判断しました。

アプリケーションは、コア オーディオ API を使用してジャック情報を取得することもできます。 詳しくは、「IKsJackDescription」と「IKsJackDescription2」をご覧ください。

デバイス ロール