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

[La detección de funciones está disponible para su uso en los sistemas operativos especificados en la sección Requisitos. Puede modificarse o no estar disponible en versiones posteriores.

Indica que se ha agregado, quitado o cambiado una instancia de función. El programa cliente implementa este método y lo llama La detección de funciones.

Sintaxis

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

Parámetros

[in] enumQueryUpdateAction

Valor QueryUpdateAction que especifica el tipo de acción Detección de funciones se realiza en la instancia de función especificada.

[in] fdqcQueryContext

Contexto registrado para la notificación de cambios. El tipo FDQUERYCONTEXT se define como DWORDLONG. Este parámetro puede ser NULL.

[in] pIFunctionInstance

Puntero de interfaz IFunctionInstance que representa la instancia de función afectada por la actualización.

Valor devuelto

La implementación del programa cliente del método OnUpdate debe devolver uno de los siguientes valores HRESULT al autor de la llamada.

Código devuelto Descripción
S_OK
El método se completó correctamente.
E_INVALIDARG
El valor de uno de los parámetros de entrada no es válido.

Comentarios

No llame a Release en el objeto de consulta desde este método. Si lo hace, podría provocar un interbloqueo. Si se llama a Release en un objeto de consulta de otro subproceso mientras una devolución de llamada está en proceso, el objeto no se liberará hasta que finalice la devolución de llamada.

Todas las notificaciones que se pasan a la detección de funciones por parte de los proveedores se ponen en cola y se devuelven al cliente una por una. Las devoluciones de llamada se sincronizan para que un cliente solo reciba una notificación cada vez.

Dado que se pueden realizar otras llamadas al método IFunctionDiscoveryNotification en otros subprocesos, los cambios realizados en el estado del subproceso durante la llamada deben restaurarse antes de salir del método.

Ejemplos

El código siguiente muestra una implementación del controlador OnUpdate. La clase CMyNotificationListener se define en el tema 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 Value
Cliente mínimo compatible Windows Vista [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2008 [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado functiondiscoveryapi.h

Consulte también

IFunctionDiscoveryNotification