Метод IPart::RegisterControlChangeCallback (devicetopology.h)

Метод RegisterControlChangeCallback регистрирует интерфейс IControlChangeNotify , который клиент реализует для получения уведомлений об изменениях состояния в этой части.

Синтаксис

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

Параметры

[in] riid

Интерфейс управления для конкретной функции, который должен отслеживаться на наличие изменений в элементах управления. Дополнительные сведения см. в подразделе "Примечания".

[in] pNotify

Указатель на интерфейс IControlChangeNotify клиента. Если метод завершается успешно, он вызывает метод AddRef в интерфейсе IControlChangeNotify клиента.

Возвращаемое значение

Если метод завершается успешно, возвращает значение S_OK. В случае сбоя возможные коды возврата включают, помимо прочего, значения, показанные в следующей таблице.

Код возврата Описание
E_INVALIDARG
Riid параметра не является допустимым идентификатором интерфейса управления.
E_POINTER
Указатель pNotify имеет значение NULL.

Комментарии

Задайте для параметра 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
Чтобы получить идентификатор интерфейса для конкретной функции интерфейса элемента управления, вызовите метод IControlInterface::GetIID части. Чтобы получить идентификатор интерфейса для конкретной функции типа интерфейса элемента управления, используйте оператор __uuidof . Например, идентификатор интерфейса IAudioAutoGainControl определяется следующим образом:

const IID IID_IAudioAutoGainControl  __uuidof(IAudioAutoGainControl)

Дополнительные сведения об операторе __uuidof см. в документации по Windows SDK.

Прежде чем клиент выпускает окончательную ссылку на интерфейс IControlChangeNotify , он должен вызвать метод IPart::UnregisterControlChangeCallback для отмены регистрации интерфейса. В противном случае приложение будет утекать ресурсы, хранящиеся в объектах IControlChangeNotify и IPart . Обратите внимание, что RegisterControlChangeCallback вызывает метод IControlChangeNotify::AddRef клиента, а UnregisterControlChangeCallback вызывает метод IControlChangeNotify::Release . Если клиент вызывает ошибку, освобождая ссылку на интерфейс IControlChangeNotify перед вызовом UnregisterControlChangeCallback, объект IPart никогда не освобождает ссылку на интерфейс IControlChangeNotify . Например, плохо спроектированная реализация IControlChangeNotify может вызвать UnregisterControlChangeCallback из деструктора для объекта IControlChangeNotify . В этом случае клиент не будет вызывать UnregisterControlChangeCallback , пока объект IPart не освободит свою ссылку на интерфейс IControlChangeNotify , а объект IPart не будет выпускать ссылку на интерфейс IControlChangeNotify , пока клиент не вызовет UnregisterControlChangeCallback. Дополнительные сведения о методах AddRef и Release см. в обсуждении интерфейса IUnknown в документации по Windows SDK.

Требования

Требование Значение
Минимальная версия клиента Windows Vista [только классические приложения]
Минимальная версия сервера Windows Server 2008 [только классические приложения]
Целевая платформа Windows
Header devicetopology.h

См. также раздел

Интерфейс IControlChangeNotify

IControlInterface::GetIID

Интерфейс IPart

IPart::UnregisterControlChangeCallback