Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
[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 |
|---|---|
|
Die Methode wurde erfolgreich abgeschlossen. |
|
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 |