Fonction NotifyTeredoPortChange (netioapi.h)
La fonction NotifyTeredoPortChange s’inscrit pour être avertie des modifications apportées au numéro de port UDP utilisé par le client Teredo pour le port de service Teredo sur un ordinateur local.
Syntaxe
IPHLPAPI_DLL_LINKAGE _NETIOAPI_SUCCESS_ NETIOAPI_API NotifyTeredoPortChange(
[in] PTEREDO_PORT_CHANGE_CALLBACK Callback,
[in] PVOID CallerContext,
[in] BOOLEAN InitialNotification,
[in, out] HANDLE *NotificationHandle
);
Paramètres
[in] Callback
Pointeur vers la fonction à appeler lorsqu’un changement de port client Teredo se produit. Cette fonction sera appelée lorsqu’une notification de modification de port Teredo est reçue.
[in] CallerContext
Contexte utilisateur passé à la fonction de rappel spécifiée dans le paramètre Callback lors de la réception d’une notification de changement de port Teredo.
[in] InitialNotification
Valeur qui indique si le rappel doit être appelé immédiatement après la fin de l’inscription pour la notification de modification. Cette notification initiale n’indique pas qu’une modification s’est produite au port client Teredo. L’objectif de ce paramètre est de fournir la confirmation que le rappel est inscrit.
[in, out] NotificationHandle
Pointeur utilisé pour retourner un handle qui peut être utilisé ultérieurement pour annuler l’inscription de la notification de modification. En cas de réussite, un handle de notification est retourné dans ce paramètre. Si une erreur se produit, null est retourné.
Valeur retournée
Si la fonction réussit, la valeur de retour est NO_ERROR.
Si la fonction échoue, la valeur de retour est l’un des codes d’erreur suivants.
Code de retour | Description |
---|---|
|
Une erreur interne s’est produite lorsqu’un handle non valide a été rencontré. |
|
Un paramètre non valide a été transmis à la fonction. Cette erreur est retournée si le paramètre Callback est un pointeur NULL . |
|
La mémoire était insuffisante. |
|
Utilisez FormatMessage pour obtenir la chaîne de message pour l’erreur retournée. |
Remarques
La fonction NotifyTeredoPortChange est définie sur Windows Vista et versions ultérieures.
La fonction GetTeredoPort peut être utilisée pour récupérer le numéro de port UDP initial utilisé par le client Teredo pour le port de service Teredo.
Le port Teredo est dynamique et peut changer chaque fois que le client Teredo est redémarré sur l’ordinateur local. Une application peut s’inscrire pour être avertie lorsque le port de service Teredo change en appelant la fonction NotifyTeredoPortChange .
L’appel de la fonction de rappel spécifiée dans le paramètre Callback est sérialisé. La fonction de rappel doit être définie comme une fonction de type VOID. Les paramètres passés à la fonction de rappel sont les suivants :
Paramètre | Description |
---|---|
IN PVOID CallerContext | Paramètre CallerContext passé à la fonction NotifyTeredoPortChange lors de l’inscription aux notifications. |
Dans le port USHORT | Numéro de port UDP actuellement utilisé par le client Teredo. Ce paramètre est égal à zéro lorsque la valeur MIB_NOTIFICATION_TYPE passée dans le paramètre NotificationType à la fonction de rappel est définie sur MibInitialNotification. Cela ne peut se produire que si le paramètre InitialNotification passé à NotifyTeredoPortChange a été défini sur TRUE lors de l’inscription aux notifications. |
IN MIB_NOTIFICATION_TYPE NotificationType | Type de notification. Ce membre peut être l’une des valeurs du type d’énumération MIB_NOTIFICATION_TYPE défini dans le fichier d’en-tête Netioapi.h . |
La fonction de rappel spécifiée dans le paramètre Callback doit être implémentée dans le même processus que l’application appelant la fonction NotifyTeredoPortChange . Si la fonction de rappel se trouve dans une DLL distincte, la DLL doit être chargée avant d’appeler la fonction NotifyTeredoPortChange pour s’inscrire aux notifications de modification.
Une fois que la fonction NotifyTeredoPortChange est appelée pour s’inscrire aux notifications de modification, ces notifications continuent d’être envoyées jusqu’à ce que l’application soit désinscrite pour les notifications de modification ou se termine. Si l’application se termine, le système désinscrira automatiquement toute inscription pour les notifications de modification. Il est toujours recommandé qu’une application désinscrire explicitement les notifications de modification avant qu’elle ne se termine.
Toute inscription pour les notifications de modification ne persiste pas dans l’arrêt ou le redémarrage du système.
Pour annuler l’inscription pour les notifications de modification, appelez la fonction CancelMibChangeNotify2 en passant le paramètre NotificationHandle retourné par NotifyTeredoPortChange.
Une application ne peut pas appeler la fonction CancelMibChangeNotify2 à partir du contexte du thread qui exécute actuellement la fonction de rappel de notification pour le même paramètre NotificationHandle . Sinon, le thread qui exécute ce rappel entraîne un blocage. Par conséquent, la fonction CancelMibChangeNotify2 ne doit pas être appelée directement dans le cadre de la routine de rappel de notification. Dans une situation plus générale, un thread qui exécute la fonction CancelMibChangeNotify2 ne peut pas posséder une ressource sur laquelle le thread qui exécute une opération de rappel de notification attendrait, car cela entraînerait un blocage similaire. La fonction CancelMibChangeNotify2 doit être appelée à partir d’un autre thread, sur lequel le thread qui reçoit le rappel de notification n’a pas de dépendances.
Le client Teredo utilise également le port UDP statique 3544 pour écouter le trafic de multidiffusion envoyé sur l’adresse IPv4 de multidiffusion 224.0.0.253 telle que définie dans RFC 4380. Pour plus d’informations, consultez http://www.ietf.org/rfc/rfc4380.txt.
La fonction NotifyTeredoPortChange est principalement utilisée par les applications de pare-feu afin de configurer les exceptions appropriées pour autoriser le trafic Teredo entrant et sortant.
La fonction NotifyStableUnicastIpAddressTable est principalement utilisée par les applications qui utilisent le client Teredo.
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 | netioapi.h (inclure Iphlpapi.h) |
Bibliothèque | Iphlpapi.lib |
DLL | Iphlpapi.dll |