Freigeben über


IFunctionDiscoveryNotification::OnUpdate-Methode (functiondiscoveryapi.h)

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

Gibt an, dass eine Funktion instance hinzugefügt, entfernt oder geändert wurde. Diese Methode wird vom Clientprogramm implementiert und von der Funktionsermittlung aufgerufen.

Syntax

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

Parameter

[in] enumQueryUpdateAction

Ein QueryUpdateAction-Wert, der den Typ der Aktion angibt, die die Funktionsermittlung für die angegebene Funktion instance.

[in] fdqcQueryContext

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

[in] pIFunctionInstance

Ein IFunctionInstance-Schnittstellenzeiger, der die Funktion darstellt, instance vom Update betroffen ist.

Rückgabewert

Die Implementierung der OnUpdate-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

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 eingereiht und einzeln an den Client zurückgegeben. Rückrufe werden synchronisiert, sodass ein Client nur jeweils eine Benachrichtigung erhält.

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

Beispiele

Der folgende Code zeigt eine OnUpdate-Handlerimplementierung. Die CMyNotificationListener-Klasse ist im Thema IFunctionDiscoveryNotification definiert.

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

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