IMMNotificationClient::OnDefaultDeviceChanged メソッド (mmdeviceapi.h)
OnDefaultDeviceChanged メソッドは、特定のデバイス ロールの既定のオーディオ エンドポイント デバイスが変更されたことをクライアントに通知します。
構文
HRESULT OnDefaultDeviceChanged(
[in] EDataFlow flow,
[in] ERole role,
[in] LPCWSTR pwstrDefaultDeviceId
);
パラメーター
[in] flow
エンドポイント デバイスのデータ フローの方向。 このパラメーターは、次のいずれかの EDataFlow 列挙値に設定されます。
eRender
eCapture
レンダリング デバイスのデータ フローの方向は eRender です。 キャプチャ デバイスのデータ フローの方向は eCapture です。
[in] role
オーディオ エンドポイント デバイスのデバイス ロール 。 このパラメーターは、次のいずれかの ERole 列挙値に設定されます。
eConsole
eMultimedia
eCommunications
[in] pwstrDefaultDeviceId
オーディオ エンドポイント デバイスを識別する エンドポイント ID 文字列 へのポインター。 このパラメーターは、エンドポイント ID を含む null で終わるワイド文字列を指します。 この文字列は、呼び出しの間は有効なままです。 ユーザーが特定のロールの既定のデバイスを削除または無効にしていて、そのロールを想定できる他のデバイスがない場合、 pwstrDefaultDevice は NULL になります。
戻り値
メソッドが成功した場合は、S_OK を返します。 失敗した場合はエラー コードを返します。
解説
3 つの入力パラメーターは、新しい既定のオーディオ エンドポイント デバイスのデータ フロー方向、デバイス ロール、エンドポイント ID 文字列を指定します。
Windows Vista では、MMDevice API はデバイスの役割をサポートしていますが、システム提供のユーザー インターフェイス プログラムではサポートされていません。 Windows Vista のユーザー インターフェイスを使用すると、レンダリング用の既定のオーディオ デバイスとキャプチャ用の既定のオーディオ デバイスを選択できます。 ユーザーが既定のレンダリングまたはキャプチャ デバイスを変更すると、システムは 3 つのデバイス ロール (eConsole、eMultimedia、および eCommunications) をすべて新しいデバイスに割り当てます。 したがって、ユーザーが既定のレンダリングまたはキャプチャ デバイスを変更すると、システムはクライアントの OnDefaultDeviceChanged メソッドを 3 回 (3 つのデバイス ロールごとに 1 回) 呼び出します。
将来のバージョンの Windows では、ユーザー インターフェイスを使用して、ユーザーが個々のロールを異なるデバイスに割り当て可能になる場合があります。 その場合、ユーザーが 1 つまたは 2 つのデバイス ロールの割り当てを新しいレンダリングまたはキャプチャ デバイスに変更した場合、システムはクライアントの OnDefaultDeviceChanged メソッドを 1 回または 2 回だけ呼び出します (つまり、変更されたロールごとに 1 回の呼び出し)。 OnDefaultDeviceChanged メソッドがロールの変更にどのように応答するかに応じて、Windows Vista で実行するように開発されたオーディオ アプリケーションの動作は、将来のバージョンの Windows で実行すると変更される可能性があります。 詳細については、「 Windows Vista のデバイス ロール」を参照してください。
OnDefaultDeviceChanged メソッドを実装するコード例については、「デバイス イベント」を参照してください。
要件
サポートされている最小のクライアント | Windows Vista [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows Server 2008 [デスクトップ アプリのみ] |
対象プラットフォーム | Windows |
ヘッダー | mmdeviceapi.h |