IFunctionDiscoveryNotification ::OnEvent, méthode (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.]
Reçoit tous les événements d’ajout, de suppression ou de mise à jour pendant une notification.
Syntaxe
HRESULT OnEvent(
[in] DWORD dwEventID,
[in] FDQUERYCONTEXT fdqcQueryContext,
[in] const WCHAR *pszProvider
);
Paramètres
[in] dwEventID
Type de l'événement.
Valeur | Signification |
---|---|
|
La recherche a été effectuée par un fournisseur. En règle générale, cette notification est envoyée par les fournisseurs de protocole réseau où le protocole spécifie un intervalle défini dans lequel les résultats de la recherche seront acceptés. Les fournisseurs WSD et SSDP utilisent ce type d’événement.
Une fois cette notification envoyée, une requête ignore toutes les réponses entrantes à la requête de recherche ou de sonde initiale. Toutefois, la requête surveille toujours les messages Hello ou Bye (utilisés pour indiquer quand un appareil est ajouté ou supprimé). La requête continue de surveiller ces événements jusqu’à ce que Release soit appelé sur l’objet de requête. Cette notification ne sera pas envoyée si une erreur catastrophique se produit. Pour plus d’informations sur la façon dont cet événement est implémenté ou utilisé par un fournisseur spécifique, suivez le lien vers la documentation du fournisseur de la rubrique Fournisseurs intégrés . |
|
Non utilisé par les clients de découverte de fonction. |
|
Non utilisé par les clients de découverte de fonction. |
|
L’adresse IP de la carte réseau a changé. Le fournisseur WSD implémente cette notification. Des événements peuvent être envoyés lorsqu’un événement d’alimentation se produit (par exemple, lorsque la machine sort de veille) ou lors de l’itinérance avec un ordinateur portable.
Note Cette valeur n’est pas disponible pour une utilisation sur Windows Vista. Il est disponible sur Windows Vista avec SP1, Windows Server 2008 et les versions ultérieures du système d’exploitation.
|
[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] pszProvider
Nom du fournisseur.
Valeur retournée
L’implémentation par le programme client de la méthode OnEvent doit retourner l’une des valeurs HRESULT suivantes à l’appelant.
Code de retour | Description |
---|---|
|
La commande s'est correctement terminée. |
|
La valeur de l’un des paramètres d’entrée n’est pas valide. |
Remarques
Les fournisseurs de découverte de fonctions (SSDP et WSD) utilisent cette méthode pour implémenter des notifications indiquant qu’une passe de recherche est terminée.
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
L’exemple suivant montre une implémentation de gestionnaire OnEvent. La classe CMyNotificationListener est définie dans la rubrique 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;
}
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 |