IAudioEndpointVolumeCallback インターフェイス (endpointvolume.h)
IAudioEndpointVolumeCallback インターフェイスは、オーディオ エンドポイント デバイスのボリューム レベルとミュート状態の変更に関する通知を提供します。 WASAPI システム コンポーネントによって実装されるこのセクションの他のインターフェイスとは異なり、EndpointVolume API クライアントは IAudioEndpointVolumeCallback インターフェイスを 実装します。 イベント通知を受信するために、クライアントは IAudioEndpointVolumeCallback インターフェイスへのポインターを IAudioEndpointVolume::RegisterControlChangeNotify メソッドに渡します。
IAudioEndpointVolumeCallback インターフェイスを登録すると、クライアントはインターフェイスの OnNotify メソッドを介してコールバックの形式でイベント通知を受け取ります。 これらのイベント通知は、次のいずれかの方法によって、エンドポイント デバイスのボリューム レベルまたはミュート状態が変更された場合に発生します。
- IAudioEndpointVolume::SetChannelVolumeLevel
- IAudioEndpointVolume::SetChannelVolumeLevelScalar
- IAudioEndpointVolume::SetMasterVolumeLevel
- IAudioEndpointVolume::SetMasterVolumeLevelScalar
- IAudioEndpointVolume::SetMute
- IAudioEndpointVolume::VolumeStepDown
- IAudioEndpointVolume::VolumeStepUp
デバイスにハードウェア ボリュームとミュート コントロールがある場合、前の一覧のメソッドを使用してボリュームとミュートの設定を変更すると、共有モードと排他モードの両方でデバイスのボリュームが影響を受けます。 デバイスにハードウェア ボリュームとミュート コントロールがない場合、これらの方法を使用してソフトウェア ボリュームとミュート コントロールに加えられた変更は、共有モードではデバイスのボリュームに影響しますが、排他モードでは影響しません。 排他モードでは、クライアントとデバイスはオーディオ データを直接交換し、ソフトウェア コントロールをバイパスします。 ただし、これらのメソッドを使用してソフトウェア コントロールに加えられた変更は、デバイスが共有モードで動作しているか排他モードで動作しているかに関係なく、イベント通知を生成します。 デバイスが排他モードで動作している間にソフトウェア ボリュームとミュート コントロールに加えられた変更は、デバイスが共有モードに切り替わるときに有効になります。
デバイスにハードウェア ボリュームとミュート コントロールがあるかどうかを確認するには、 IAudioEndpointVolume::QueryHardwareSupport メソッドを呼び出します。
IAudioEndpointVolumeCallback インターフェイスを実装する場合、クライアントはデッドロックを回避するために次の規則を遵守する必要があります。
- インターフェイス内のメソッドは非ブロッキングである必要があります。 クライアントは、イベント コールバック中に同期オブジェクトを待機しないでください。
- クライアントは、イベント コールバック中に IAudioEndpointVolume::UnregisterControlChangeNotify メソッドを呼び出さないでください。
- クライアントは、イベント コールバック中に EndpointVolume API オブジェクトの最後の参照を解放しないでください。
継承
IAudioEndpointVolumeCallback インターフェイスは、IUnknown インターフェイスから継承されます。 IAudioEndpointVolumeCallback には、次の種類のメンバーもあります。
メソッド
IAudioEndpointVolumeCallback インターフェイスには、これらのメソッドがあります。
IAudioEndpointVolumeCallback::OnNotify OnNotify メソッドは、オーディオ エンドポイント デバイスのボリューム レベルまたはミュート状態が変更されたことをクライアントに通知します。 |
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows Vista [デスクトップ アプリのみ | UWP アプリ] |
サポートされている最小のサーバー | Windows Server 2008 [デスクトップ アプリ | UWP アプリ] |
対象プラットフォーム | Windows |
ヘッダー | endpointvolume.h |