Метод IPart::RegisterControlChangeCallback (devicetopology.h)
Метод RegisterControlChangeCallback регистрирует интерфейс IControlChangeNotify , который клиент реализует для получения уведомлений об изменениях состояния в этой части.
Синтаксис
HRESULT RegisterControlChangeCallback(
[in] REFGUID riid,
[in] IControlChangeNotify *pNotify
);
Параметры
[in] riid
Интерфейс управления для конкретной функции, который должен отслеживаться на наличие изменений в элементах управления. Дополнительные сведения см. в подразделе "Примечания".
[in] pNotify
Указатель на интерфейс IControlChangeNotify клиента. Если метод завершается успешно, он вызывает метод AddRef в интерфейсе IControlChangeNotify клиента.
Возвращаемое значение
Если метод завершается успешно, возвращает значение S_OK. В случае сбоя возможные коды возврата включают, помимо прочего, значения, показанные в следующей таблице.
Код возврата | Описание |
---|---|
|
Riid параметра не является допустимым идентификатором интерфейса управления. |
|
Указатель 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
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 |