次の方法で共有


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 で終わるワイド文字列を指します。 この文字列は、呼び出しの間は有効なままです。 ユーザーが特定のロールの既定のデバイスを削除または無効にしていて、そのロールを想定できる他のデバイスがない場合、 pwstrDefaultDeviceNULL になります

戻り値

メソッドが成功した場合は、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

関連項目

IMMNotificationClient インターフェイス