Partager via


Méthode IFunctionDiscoveryNotification ::OnUpdate (functiondiscoveryapi.h)

[La découverte de fonctions peut être utilisée dans les systèmes d’exploitation spécifiés dans la section Configuration requise. Il peut être modifié ou indisponible dans les versions suivantes.]

Indique qu’une fonction instance a été ajoutée, supprimée ou modifiée. Cette méthode est implémentée par le programme client et est appelée par La découverte de fonction.

Syntaxe

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

Paramètres

[in] enumQueryUpdateAction

Valeur QueryUpdateAction qui spécifie le type d’action Function Discovery s’exécute sur la fonction spécifiée instance.

[in] fdqcQueryContext

Contexte inscrit pour la notification de modification. Le type FDQUERYCONTEXT est défini en tant que DWORDLONG. Ce paramètre peut être NULL.

[in] pIFunctionInstance

Pointeur d’interface IFunctionInstance qui représente la fonction instance affectée par la mise à jour.

Valeur retournée

L’implémentation par le programme client de la méthode OnUpdate doit retourner l’une des valeurs HRESULT suivantes à l’appelant.

Code de retour Description
S_OK
La commande s'est correctement terminée.
E_INVALIDARG
La valeur de l’un des paramètres d’entrée n’est pas valide.

Remarques

N’appelez pas Release sur l’objet de requête à partir de cette méthode. Cela pourrait entraîner un blocage. Si Release est appelé sur un objet de requête à partir d’un autre thread alors qu’un rappel est en cours de traitement, l’objet n’est pas libéré tant que le rappel n’est pas terminé.

Toutes les notifications transmises à la découverte de fonction par les fournisseurs sont mises en file d’attente et retournées au client une par une. Les rappels sont synchronisés afin qu’un client ne reçoive qu’une seule notification à la fois.

Étant donné que d’autres appels de méthode IFunctionDiscoveryNotification peuvent être effectués dans d’autres threads, toutes les modifications apportées à l’état du thread pendant l’appel doivent être restaurées avant de quitter la méthode.

Exemples

Le code suivant montre une implémentation de gestionnaire OnUpdate. La classe CMyNotificationListener est définie dans la rubrique 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;
}

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows Vista [applications de bureau uniquement]
Serveur minimal pris en charge Windows Server 2008 [applications de bureau uniquement]
Plateforme cible Windows
En-tête functiondiscoveryapi.h

Voir aussi

IFunctionDiscoveryNotification