Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
[Функция обнаружения доступна для использования в операционных системах, указанных в разделе Требования. Он может быть изменен или недоступен в последующих версиях.]
Указывает, что экземпляр функции был добавлен, удален или изменен. Этот метод реализуется клиентской программой и вызывается функцией обнаружения функций.
Синтаксис
HRESULT OnUpdate(
[in] QueryUpdateAction enumQueryUpdateAction,
[in] FDQUERYCONTEXT fdqcQueryContext,
[in] IFunctionInstance *pIFunctionInstance
);
Параметры
[in] enumQueryUpdateAction
Значение QueryUpdateAction , указывающее тип действия, выполняемого обнаружением функций для указанного экземпляра функции.
[in] fdqcQueryContext
Контекст, зарегистрированный для уведомления об изменениях. Тип FDQUERYCONTEXT определяется как DWORDLONG. Этот параметр может принимать значение NULL.
[in] pIFunctionInstance
Указатель интерфейса IFunctionInstance , представляющий экземпляр функции, на который влияет обновление.
Возвращаемое значение
Реализация метода OnUpdate в клиентской программе должна возвращать вызывающей стороне одно из следующих значений HRESULT .
| Код возврата | Описание |
|---|---|
|
Метод завершился успешно. |
|
Недопустимое значение одного из входных параметров. |
Комментарии
Не вызывайте Release для объекта запроса из этого метода. Это может привести к взаимоблокировки. Если метод Release вызывается для объекта запроса из другого потока во время обратного вызова, объект не будет освобожден до завершения обратного вызова.
Все уведомления, передаваемые в обнаружение функций поставщиками, помещаются в очередь и возвращаются клиенту по одному. Обратные вызовы синхронизируются таким образом, что клиент будет получать только одно уведомление за раз.
Так как другие вызовы метода IFunctionDiscoveryNotification могут выполняться в других потоках, все изменения, внесенные в состояние потока во время вызова, должны быть восстановлены перед выходом из метода .
Примеры
В следующем коде показана реализация обработчика OnUpdate. Класс CMyNotificationListener определен в разделе IFunctionDiscoveryNotification .
#include <windows.h>
HRESULT STDMETHODCALLTYPE CMyNotificationListener::OnUpdate(
IN QueryUpdateAction Action,
IN FDQUERYCONTEXT fdqcQueryContext,
IN IFunctionInstance *pInstance)
{
HRESULT hr = S_OK;
switch (Action) {
case QUA_ADD:
SetEvent( m_hAddEvent );
break;
case QUA_REMOVE:
SetEvent( m_hRemoveEvent );
break;
case QUA_CHANGE:
SetEvent( m_hChangeEvent );
break;
}
return S_OK;
}
Требования
| Требование | Значение |
|---|---|
| Минимальная версия клиента | Windows Vista [только классические приложения] |
| Минимальная версия сервера | Windows Server 2008 [только классические приложения] |
| Целевая платформа | Windows |
| Header | functiondiscoveryapi.h |