Freigeben über


IFunctionDiscoveryNotification::OnEvent-Methode (functiondiscoveryapi.h)

[Funktionsermittlung ist für die Verwendung in den Betriebssystemen verfügbar, die im Abschnitt Anforderungen angegeben sind. Sie kann in nachfolgenden Versionen geändert oder nicht verfügbar sein.]

Empfängt alle Add-, Remove- oder Updateereignisse während einer Benachrichtigung.

Syntax

HRESULT OnEvent(
  [in] DWORD          dwEventID,
  [in] FDQUERYCONTEXT fdqcQueryContext,
  [in] const WCHAR    *pszProvider
);

Parameter

[in] dwEventID

Art des Ereignisses.

Wert Bedeutung
FD_EVENTID_SEARCHCOMPLETE
1000
Die Suche wurde von einem Anbieter abgeschlossen. In der Regel wird diese Benachrichtigung von Netzwerkprotokollanbietern gesendet, in denen das Protokoll ein definiertes Intervall angibt, in dem Suchergebnisse akzeptiert werden. Sowohl der WSD- als auch der SSDP-Anbieter verwenden diesen Ereignistyp.

Sobald diese Benachrichtigung gesendet wurde, ignoriert eine Abfrage alle eingehenden Antworten auf die anfängliche Such- oder Testanforderung. Die Abfrage überwacht jedoch weiterhin auf Hello- oder Bye-Nachrichten (die verwendet werden, um anzugeben, wann ein Gerät hinzugefügt oder entfernt wird). Die Abfrage wird weiterhin auf diese Ereignisse überwacht, bis Release für das Abfrageobjekt aufgerufen wird.

Diese Benachrichtigung wird nicht gesendet, wenn ein schwerwiegender Fehler auftritt.

Informationen dazu, wie dieses Ereignis von einem bestimmten Anbieter implementiert oder verwendet wird, finden Sie unter dem Link zur Anbieterdokumentation aus dem Thema Integrierte Anbieter .

FD_EVENTID_ASYNCTHREADEXIT
1001
Wird nicht von Funktionsermittlungsclients verwendet.
FD_EVENTID_SEARCHSTART
1002
Wird nicht von Funktionsermittlungsclients verwendet.
FD_EVENTID_IPADDRESSCHANGE
1003
Die IP-Adresse der NIC wurde geändert. Der WSD-Anbieter implementiert diese Benachrichtigung. Ereignisse können gesendet werden, wenn ein Energieereignis auftritt (z. B. wenn der Computer aus dem Ruhezustand aufwacht) oder wenn ein Laptop roamingt.
Hinweis Dieser Wert ist nicht für die Verwendung unter Windows Vista verfügbar. Es ist unter Windows Vista mit SP1, Windows Server 2008 und nachfolgenden Versionen des Betriebssystems verfügbar.
 

[in] fdqcQueryContext

Der für Änderungsbenachrichtigung registrierte Kontext. Der Typ FDQUERYCONTEXT wird als DWORDLONG definiert. Dieser Parameter kann NULL sein.

[in] pszProvider

Der Name des Anbieters.

Rückgabewert

Die Implementierung der OnEvent-Methode im Clientprogramm sollte einen der folgenden HRESULT-Werte an den Aufrufer zurückgeben.

Rückgabecode BESCHREIBUNG
S_OK
Die Methode wurde erfolgreich abgeschlossen.
E_INVALIDARG
Der Wert eines der Eingabeparameter ist ungültig.

Hinweise

Funktionsermittlungsanbieter (SSDP und WSD) verwenden diese Methode, um Benachrichtigungen zu implementieren, dass ein Suchdurchlauf abgeschlossen ist.

Rufen Sie Release nicht für das Abfrageobjekt aus dieser Methode auf. Dies kann zu einem Deadlock führen. Wenn Release für ein Abfrageobjekt aus einem anderen Thread aufgerufen wird, während ein Rückruf ausgeführt wird, wird das Objekt erst freigegeben, wenn der Rückruf abgeschlossen ist.

Alle Benachrichtigungen, die von Anbietern an die Funktionsermittlung übergeben werden, werden in die Warteschlange gestellt und einzeln an den Client zurückgegeben. Rückrufe werden synchronisiert, sodass ein Client jeweils nur eine Benachrichtigung empfängt.

Da andere IFunctionDiscoveryNotification-Methodenaufrufe in anderen Threads ausgeführt werden können, müssen alle Änderungen am Threadzustand während des Aufrufs wiederhergestellt werden, bevor die Methode beendet wird.

Beispiele

Das folgende Beispiel zeigt eine OnEvent-Handlerimplementierung. Die CMyNotificationListener-Klasse ist im Thema IFunctionDiscoveryNotification definiert.

#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;
} 

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows Vista [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows Server 2008 [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile functiondiscoveryapi.h

Weitere Informationen

IFunctionDiscoveryNotification