Condividi tramite


Metodo IFunctionDiscoveryNotification::OnUpdate (functiondiscoveryapi.h)

[L'individuazione delle funzioni è disponibile per l'uso nei sistemi operativi specificati nella sezione Requisiti. Potrebbe essere modificato o non disponibile nelle versioni successive.]

Indica che un'istanza di funzione è stata aggiunta, rimossa o modificata. Questo metodo viene implementato dal programma client e viene chiamato dall'individuazione delle funzioni.

Sintassi

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

Parametri

[in] enumQueryUpdateAction

Valore QueryUpdateAction che specifica il tipo di azione Individuazione funzione eseguita nell'istanza della funzione specificata.

[in] fdqcQueryContext

Contesto registrato per la notifica delle modifiche. Il tipo FDQUERYCONTEXT è definito come DWORDLONG. Questo parametro può essere NULL.

[in] pIFunctionInstance

Puntatore all'interfaccia IFunctionInstance che rappresenta l'istanza della funzione interessata dall'aggiornamento.

Valore restituito

L'implementazione del programma client del metodo OnUpdate deve restituire uno dei valori HRESULT seguenti al chiamante.

Codice restituito Descrizione
S_OK
Metodo completato correttamente.
E_INVALIDARG
Il valore di uno dei parametri di input non è valido.

Commenti

Non chiamare Release sull'oggetto query da questo metodo. In questo modo potrebbe verificarsi un deadlock. Se Release viene chiamato su un oggetto query da un altro thread mentre è in corso un callback, l'oggetto non verrà rilasciato fino al termine del callback.

Tutte le notifiche passate all'individuazione delle funzioni da parte dei provider vengono accodate e restituite al client uno alla sola. I callback vengono sincronizzati in modo che un client riceva una sola notifica alla volta.

Poiché è possibile eseguire altre chiamate al metodo IFunctionDiscoveryNotification in altri thread, tutte le modifiche apportate allo stato del thread durante la chiamata devono essere ripristinate prima di uscire dal metodo.

Esempio

Il codice seguente mostra un'implementazione del gestore OnUpdate. La classe CMyNotificationListener è definita nell'argomento 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;
}

Requisiti

Requisito Valore
Client minimo supportato Windows Vista [solo app desktop]
Server minimo supportato Windows Server 2008 [solo app desktop]
Piattaforma di destinazione Windows
Intestazione functiondiscoveryapi.h

Vedi anche

IFunctionDiscoveryNotification