Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
[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 |
|---|---|
|
Metodo completato correttamente. |
|
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 |