Compartilhar via


Método IFunctionDiscoveryNotification::OnUpdate (functiondiscoveryapi.h)

[A Descoberta de Funções está disponível para uso nos sistemas operacionais especificados na seção Requisitos. Ele pode estar alterado ou indisponível em versões subsequentes.]

Indica que uma instância de função foi adicionada, removida ou alterada. Esse método é implementado pelo programa cliente e é chamado pela Descoberta de Funções.

Sintaxe

HRESULT OnUpdate(
  [in] QueryUpdateAction enumQueryUpdateAction,
  [in] FDQUERYCONTEXT    fdqcQueryContext,
  [in] IFunctionInstance *pIFunctionInstance
);

Parâmetros

[in] enumQueryUpdateAction

Um valor QueryUpdateAction que especifica o tipo de ação que a Descoberta de Função está executando na instância de função especificada.

[in] fdqcQueryContext

O contexto registrado para notificação de alteração. O tipo FDQUERYCONTEXT é definido como um DWORDLONG. Este parâmetro pode ser NULL.

[in] pIFunctionInstance

Um ponteiro de interface IFunctionInstance que representa a instância de função que está sendo afetada pela atualização.

Retornar valor

A implementação do programa cliente do método OnUpdate deve retornar um dos seguintes valores HRESULT para o chamador.

Código de retorno Descrição
S_OK
O método foi concluído com sucesso.
E_INVALIDARG
O valor de um dos parâmetros de entrada é inválido.

Comentários

Não chame Release no objeto de consulta desse método. Fazer isso pode causar um deadlock. Se Release for chamado em um objeto de consulta de outro thread enquanto um retorno de chamada estiver em processo, o objeto não será liberado até que o retorno de chamada seja concluído.

Todas as notificações passadas para a Descoberta de Funções por provedores são enfileiradas e retornadas ao cliente uma a uma. Os retornos de chamada são sincronizados para que um cliente receba apenas uma notificação por vez.

Como outras chamadas de método IFunctionDiscoveryNotification podem ser feitas em outros threads, todas as alterações feitas no estado do thread durante a chamada devem ser restauradas antes de sair do método.

Exemplos

O código a seguir mostra uma implementação do manipulador OnUpdate. A classe CMyNotificationListener é definida no tópico 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;
}

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows Vista [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows Server 2008 [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho functiondiscoveryapi.h

Confira também

IFunctionDiscoveryNotification