다음을 통해 공유


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 메서드를 호출하여 인터페이스의 등록을 취소해야 합니다. 그렇지 않으면 애플리케이션이 IControlChangeNotifyIPart 개체에서 보유한 리소스를 누수합니다. RegisterControlChangeCallback은 클라이언트의 IControlChangeNotify::AddRef 메서드를 호출하고 UnregisterControlChangeCallbackIControlChangeNotify::Release 메서드를 호출합니다. UnregisterControlChangeCallback을 호출하기 전에 클라이언트가 IControlChangeNotify 인터페이스에 대한 참조를 해제하여 오류가 발생하는 경우 IPart 개체는 IControlChangeNotify 인터페이스에 대한 참조를 해제하지 않습니다. 예를 들어 잘못 디자인된 IControlChangeNotify 구현은 IControlChangeNotify 개체의 소멸자에서 UnregisterControlChangeCallback을 호출할 수 있습니다. 이 경우 IPart 개체가 IControlChangeNotify 인터페이스에 대한 참조를 해제할 때까지 클라이언트는 UnregisterControlChangeCallback을 호출하지 않으며, IPart 개체는 클라이언트가 UnregisterControlChangeCallback을 호출할 때까지 IControlChangeNotify 인터페이스에 대한 참조를 해제하지 않습니다. AddRefRelease 메서드에 대한 자세한 내용은 Windows SDK 설명서의 IUnknown 인터페이스에 대한 설명을 참조하세요.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows Vista [데스크톱 앱만 해당]
지원되는 최소 서버 Windows Server 2008 [데스크톱 앱만 해당]
대상 플랫폼 Windows
헤더 devicetopology.h

추가 정보

IControlChangeNotify 인터페이스

IControlInterface::GetIID

IPart 인터페이스

IPart::UnregisterControlChangeCallback