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.]
Riceve eventuali eventi di aggiunta, rimozione o aggiornamento durante una notifica.
Sintassi
HRESULT OnEvent(
[in] DWORD dwEventID,
[in] FDQUERYCONTEXT fdqcQueryContext,
[in] const WCHAR *pszProvider
);
Parametri
[in] dwEventID
Tipo di evento.
| Valore | Significato |
|---|---|
|
La ricerca è stata completata da un provider. In genere, questa notifica viene inviata dai provider di protocolli di rete in cui il protocollo specifica un intervallo definito in cui verranno accettati i risultati della ricerca. Entrambi i provider WSD e SSDP usano questo tipo di evento.
Dopo l'invio di questa notifica, una query ignora tutte le risposte in ingresso alla richiesta iniziale di ricerca o probe. Tuttavia, la query monitorerà comunque i messaggi Hello o Bye (usati per indicare quando un dispositivo viene aggiunto o rimosso). La query continuerà a monitorare gli eventi fino a quando Non viene chiamato Release sull'oggetto query. Questa notifica non verrà inviata se si verifica un errore irreversibile. Per informazioni su come questo evento viene implementato o usato da un provider specifico, seguire il collegamento alla documentazione del provider dall'argomento Provider predefiniti . |
|
Non usato dai client di individuazione delle funzioni. |
|
Non usato dai client di individuazione delle funzioni. |
|
L'indirizzo IP della scheda di interfaccia di rete è stato modificato. Il provider WSD implementa questa notifica. Gli eventi possono essere inviati quando si verifica un evento di alimentazione (ad esempio, quando il computer si riattiva dalla sospensione) o quando si esegue il roaming con un portatile.
Nota Questo valore non è disponibile per l'uso in Windows Vista. È disponibile in Windows Vista con SP1, Windows Server 2008 e versioni successive del sistema operativo.
|
[in] fdqcQueryContext
Contesto registrato per la notifica delle modifiche. Il tipo FDQUERYCONTEXT è definito come DWORDLONG. Questo parametro può essere NULL.
[in] pszProvider
Nome del provider.
Valore restituito
L'implementazione del programma client del metodo OnEvent 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
I provider di individuazione delle funzioni (SSDP e WSD) usano questo metodo per implementare le notifiche che un passaggio di ricerca è completo.
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
Nell'esempio seguente viene illustrata un'implementazione del gestore OnEvent. La classe CMyNotificationListener è definita nell'argomento IFunctionDiscoveryNotification .
#include <windows.h>
HRESULT CMyNotificationListener::OnEvent(
IN DWORD dwEventID,
IN FDQUERYCONTEXT fdqcQueryContext,
IN const WCHAR * pszProvider
)
{
HRESULT hr = S_OK;
HANDLE hSearchComplete = INVALID_HANDLE_VALUE;
hSearchComplete = OpenEventW( EVENT_ALL_ACCESS,
FALSE,
L"SearchComplete" );
if( NULL == hSearchComplete )
{
return hr;
}
if( FD_EVENTID_SEARCHCOMPLETE == dwEventID )
{
SetEvent( hSearchComplete );
}
CloseHandle( hSearchComplete );
return hr;
}
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 |