IAudioVolumeDuckNotification インターフェイス (audiopolicy.h)
IAudioVolumeDuckNotification インターフェイスは、ストリームの減衰の変更に関する通知を送信するためにシステムによって使用されます。Stream減衰 (ダッキング) は、Windows 7 で導入された機能で、新しい通信ストリームが開かれたときに非通信ストリームのボリュームが調整されます。 この機能の詳細については、「既定の ダッキング エクスペリエンス」を参照してください。
継承
IAudioVolumeDuckNotification インターフェイスは、IUnknown インターフェイスから継承します。 IAudioVolumeDuckNotification には、次の種類のメンバーもあります。
メソッド
IAudioVolumeDuckNotification インターフェイスには、これらのメソッドがあります。
IAudioVolumeDuckNotification::OnVolumeDuckNotification OnVolumeDuckNotification メソッドは、保留中のシステム ダッキング イベントに関する通知を送信します。 |
IAudioVolumeDuckNotification::OnVolumeUnduckNotification OnVolumeUnduckNotification メソッドは、保留中のシステムアンダッキング イベントに関する通知を送信します。 |
注釈
アプリケーションがシステムによって提供されるシステム減衰エクスペリエンスをオプトアウトする必要がある場合は、 IAudioSessionControl2::SetDuckingPreference を呼び出し、その設定を指定する必要があります。
WASAPI システム コンポーネントによって実装される他の WASAPI インターフェイスとは異なり、 IAudioVolumeDuckNotification インターフェイスは、カスタム ストリーム減衰動作を提供するためにアプリケーションによって実装されます。 イベント通知を受け取るために、アプリケーションは IAudioVolumeDuckNotification の実装へのポインターを IAudioSessionManager2::RegisterDuckNotification メソッドに渡します。
アプリケーションが IAudioVolumeDuckNotification インターフェイスを登録した後、セッション マネージャーは、アッキング通知を送信する必要があるときに IAudioVolumeDuckNotification 実装を呼び出します。 アプリケーションは、 インターフェイスの メソッドを介してコールバックの形式でイベント通知を受け取ります。
アプリケーションが通知を受信する必要がなくなった場合は、 IAudioSessionManager2::UnregisterDuckNotification メソッドを呼び出します。 UnregisterDuckNotification メソッドは、アプリケーションが以前に登録した IAudioVolumeDuckNotification インターフェイスの登録を削除します。
アプリケーションでは、イベント コールバック中に通知コールバックを登録または登録解除することはできません。
詳細については、「 ダッキング通知の実装に関する考慮事項」を参照してください。
例
次のコード例は、 IAudioVolumeDuckNotification インターフェイスの実装例を示しています。
class CDuckNotification : public IAudioVolumeDuckNotification
{
LONG _Cref;
HWND m_hwndMain;
CDuckNotification (HWND hWnd) :
_Cref(1),
m_hwndMain (hWnd)
{}
HRESULT OnVolumeDuckNotification (LPCWSTR SessionID, UINT32 CommunicationSessionCount)
{
PostMessage(m_hwndMain, WM_VOLUME_DUCK, 0, 0);
return S_OK;
}
HRESULT OnVolumeUnduckNotification (LPCWSTR SessionID)
{
PostMessage(m_hwndMain, WM_VOLUME_UNDUCK, 0, 0);
return S_OK;
}
protected:
~CDuckNotification() {}
public:
HRESULT QueryInterface (REFIID Iid, void** ReturnValue)
{
if (ReturnValue == NULL)
{
return E_POINTER;
}
*ReturnValue = NULL;
if (iid == IID_IUnknown)
{
*ReturnValue = static_cast<IUnknown *>(static_cast<IAudioVolumeDuckNotification *>(this));
AddRef();
}
else if (iid == __uuidof(IAudioVolumeDuckNotification))
{
*ReturnValue = static_cast<IAudioVolumeDuckNotification *>(this);
AddRef();
}
else
{
return E_NOINTERFACE;
}
return S_OK;
}
ULONG AddRef()
{
return InterlockedIncrement(&_Cref);
}
ULONG Release()
{
LONG ref = InterlockedDecrement(&_Cref);
if (ref == 0)
{
delete this;
}
return 0;
}
};
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 7 [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows Server 2008 R2 [デスクトップ アプリのみ] |
対象プラットフォーム | Windows |
ヘッダー | audiopolicy.h |