IAudioEndpointVolume::RegisterControlChangeNotify メソッド (endpointvolume.h)
RegisterControlChangeNotify メソッドは、クライアントの通知コールバック インターフェイスを登録します。
構文
HRESULT RegisterControlChangeNotify(
[in] IAudioEndpointVolumeCallback *pNotify
);
パラメーター
[in] pNotify
クライアントが通知コールバックに登録している IAudioEndpointVolumeCallback インターフェイスへのポインター。 RegisterControlChangeNotify メソッドが成功した場合は、クライアントの IAudioEndpointVolumeCallback インターフェイスで AddRef メソッドを呼び出します。
戻り値
メソッドが成功した場合は、S_OK を返します。 エラーが発生した場合、次の表に示す値が、可能なリターン コードに含まれますが、これらに限定されません。
リターン コード | 説明 |
---|---|
|
パラメーター pNotify は NULL です。 |
注釈
このメソッドは、エンドポイントのボリューム レベルまたはミュート状態が変更されたときにシステムによって呼び出される IAudioEndpointVolumeCallback インターフェイスを登録します。 呼び出し元は 、IAudioEndpointVolumeCallback インターフェイスを 実装します。
通知が不要になった場合、クライアントは IAudioEndpointVolume::UnregisterControlChangeNotify メソッドを呼び出して通知を終了できます。
クライアントが IAudioEndpointVolumeCallback インターフェイスへの最後の参照を解放する前に、 UnregisterControlChangeNotify を呼び出してインターフェイスを登録解除する必要があります。 それ以外の場合、アプリケーションは IAudioEndpointVolumeCallback オブジェクトと IAudioEndpointVolume オブジェクトによって保持されているリソースをリークします。 RegisterControlChangeNotify はクライアントの IAudioEndpointVolumeCallback::AddRef メソッドを呼び出し、UnregisterControlChangeNotify は IAudioEndpointVolumeCallback::Release メソッドを呼び出します。 クライアントが UnregisterControlChangeNotify を呼び出す前に IAudioEndpointVolumeCallback インターフェイスへの参照を解放してエラーが起きると、IAudioEndpointVolume オブジェクトは IAudioEndpointVolumeCallback インターフェイスへの参照を解放しません。 たとえば、設計が不十分な IAudioEndpointVolumeCallback 実装では、IAudioEndpointVolumeCallback オブジェクトのデストラクターから UnregisterControlChangeNotifyを 呼び出す可能性があります。 この場合、IAudioEndpointVolume オブジェクトが IAudioEndpointVolumeCallback インターフェイスへの参照を解放するまで、クライアントは UnregisterControlChangeNotify を呼び出しません。IAudioEndpointVolume オブジェクトは、クライアントが UnregisterControlChangeNotify を呼び出すまで IAudioEndpointVolumeCallback インターフェイスへの参照を解放しません。 AddRef メソッドと Release メソッドの詳細については、Windows SDK ドキュメントの IUnknown インターフェイスの説明を参照してください。
さらに、クライアントは IAudioEndpointVolume オブジェクトへの最後の参照を解放する前に、UnregisterControlChangeNotify を呼び出す必要があります。 それ以外の場合、オブジェクトは登録情報を保持するために割り当てたストレージをリークします。 通知インターフェイスを登録した後、 IAudioEndpointVolume オブジェクトが存在する限り、クライアントは引き続き通知を受け取ります。
RegisterControlChangeNotify を呼び出すコード例については、「エンドポイント ボリュームコントロール」を参照してください。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows Vista [デスクトップ アプリのみ | UWP アプリ] |
サポートされている最小のサーバー | Windows Server 2008 [デスクトップ アプリ | UWP アプリ] |
対象プラットフォーム | Windows |
ヘッダー | endpointvolume.h |