次の方法で共有


IPart::RegisterControlChangeCallback メソッド (devicetopology.h)

RegisterControlChangeCallback メソッドは IControlChangeNotify インターフェイスを登録します。このインターフェイスは、クライアントがこの部分の状態変更の通知を受け取るために実装します。

構文

HRESULT RegisterControlChangeCallback(
  [in] REFGUID              riid,
  [in] IControlChangeNotify *pNotify
);

パラメーター

[in] riid

コントロールの変更を監視する関数固有のコントロール インターフェイス。 詳細については、「解説」を参照してください。

[in] pNotify

クライアントの IControlChangeNotify インターフェイスへのポインター。 メソッドが成功すると、クライアントの IControlChangeNotify インターフェイスで AddRef メソッドが呼び出されます。

戻り値

メソッドが成功した場合は、S_OK を返します。 失敗した場合、次の表に示す値が含まれますが、これに限定されません。

リターン コード 説明
E_INVALIDARG
パラメーター riid は、有効なコントロール インターフェイス識別子ではありません。
E_POINTER
ポインター pNotifyNULL です

注釈

パラメーター riid を次のいずれかの GUID 値に設定します。

  • IID_IAudioAutoGainControl
  • IID_IAudioBass
  • IID_IAudioChannelConfig
  • IID_IAudioInputSelector
  • IID_IAudioLoudness
  • IID_IAudioMidrange
  • IID_IAudioMute
  • IID_IAudioOutputSelector
  • IID_IAudioPeakMeter
  • IID_IAudioTreble
  • IID_IAudioVolumeLevel
  • IID_IDeviceSpecificProperty
  • IID_IKsFormatSupport
  • IID_IKsJackDescription
パーツの関数固有のコントロール インターフェイスのインターフェイス ID を取得するには、パーツの IControlInterface::GetIID メソッドを 呼び出します。 関数固有の制御インターフェイス型のインターフェイス ID を取得するには、 __uuidof 演算子を使用します。 たとえば、 IAudioAutoGainControl のインターフェイス ID は次のように定義されます。

const IID IID_IAudioAutoGainControl  __uuidof(IAudioAutoGainControl)

__uuidof 演算子の詳細については、Windows SDK のドキュメントを参照してください。

クライアントが IControlChangeNotify インターフェイスへの最後の参照を解放する前に、 IPart::UnregisterControlChangeCallback メソッドを呼び出してインターフェイスの登録を解除する必要があります。 それ以外の場合、アプリケーションは IControlChangeNotify オブジェクトと IPart オブジェクトによって保持されているリソースをリークします。 RegisterControlChangeCallback はクライアントの IControlChangeNotify::AddRef メソッドを呼び出し、UnregisterControlChangeCallbackIControlChangeNotify::Release メソッドを呼び出します。 クライアントが UnregisterControlChangeCallback を呼び出す前に IControlChangeNotify インターフェイスへの参照を解放してエラーが出た場合、IPart オブジェクトは IControlChangeNotify インターフェイスへの参照を解放しません。 たとえば、適切に設計されていない IControlChangeNotify 実装では、IControlChangeNotify オブジェクトのデストラクターから UnregisterControlChangeCallback を呼び出す場合があります。 この場合、IPart オブジェクトが IControlChangeNotify インターフェイスへの参照を解放するまで、クライアントは UnregisterControlChangeCallback を呼び出しません。IPart オブジェクトは、クライアントが UnregisterControlChangeCallback を呼び出すまで IControlChangeNotify インターフェイスへの参照を解放しません。 AddRef メソッドと Release メソッドの詳細については、Windows SDK ドキュメントの IUnknown インターフェイスの説明を参照してください。

要件

要件
サポートされている最小のクライアント Windows Vista [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows Server 2008 [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー devicetopology.h

こちらもご覧ください

IControlChangeNotify インターフェイス

IControlInterface::GetIID

IPart インターフェイス

IPart::UnregisterControlChangeCallback