Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
[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 |
|---|---|
|
O método foi concluído com sucesso. |
|
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 |