Fonction NotifyStableUnicastIpAddressTable
La fonction NotifyStableUnicastIpAddressTable récupère la table d’adresses IP de monodiffusion stable sur un ordinateur local.
Syntaxe
NETIOAPI_API NotifyStableUnicastIpAddressTable(
_In_ ADDRESS_FAMILY Family,
_Out_ PMIB_UNICASTIPADDRESS_TABLE *Table,
_In_ PSTABLE_UNICAST_IPADDRESS_TABLE_CALLBACK CallerCallback,
_In_ PVOID CallerContext,
_Inout_ HANDLE *NotificationHandle
);
Paramètres
Famille [in]
Famille d’adresses à récupérer.Les valeurs possibles pour la famille d’adresses sont répertoriées dans le fichier d’en-tête Winsock2.h. Notez que les valeurs de la famille d’adresses AF_ et des constantes de famille de protocole PF_ sont identiques (par exemple, AF_INET et PF_INET). Vous pouvez donc utiliser l’une ou l’autre constante.
Sur Windows Vista et les versions ultérieures des systèmes d’exploitation Windows, les valeurs possibles pour le paramètre Family sont définies dans le fichier d’en-tête Ws2def.h. Notez que le fichier d’en-tête Ws2def.h est automatiquement inclus dans Netioapi.h et que vous ne devez jamais utiliser Ws2def.h directement.
Les valeurs suivantes sont actuellement prises en charge pour la famille d’adresses :
AF_INET
Famille d’adresses IPv4. Lorsque cette valeur est spécifiée, la fonction récupère la table d’adresses IP de monodiffusion stable qui contient uniquement des entrées IPv4.AF_INET6
Famille d’adresses IPv6. Lorsque cette valeur est spécifiée, la fonction récupère la table d’adresses IP de monodiffusion stable qui contient uniquement des entrées IPv6.AF_UNSPEC
La famille d’adresses n’est pas spécifiée. Lorsque cette valeur est spécifiée, la fonction récupère la table d’adresses IP de monodiffusion stable qui contient les entrées IPv4 et IPv6.
Table [out]
Pointeur vers une structure MIB_UNICASTIPADDRESS_TABLE . Lorsque NotifyStableUnicastIpAddressTable réussit, ce paramètre retourne la table d’adresses IP de monodiffusion stable sur l’ordinateur local.Lorsque NotifyStableUnicastIpAddressTable retourne ERROR_IO_PENDING, ce qui indique que la demande d’E/S est en attente, la table d’adresses IP de monodiffusion stable est retournée à la fonction dans le paramètre CallerCallback .
CallerCallback [in]
Pointeur vers la fonction à appeler avec la table d’adresses IP de monodiffusion stable. Cette fonction est appelée si NotifyStableUnicastIpAddressTable retourne ERROR_IO_PENDING, ce qui indique que la demande d’E/S est en attente.CallerContext [in]
Contexte utilisateur passé à la fonction de rappel spécifiée dans le paramètre CallerCallback lorsque la table d’adresses IP de monodiffusion stable est disponible.NotificationHandle [in, out]
Pointeur utilisé pour retourner un handle que votre pilote peut utiliser pour annuler la demande de récupération de la table d’adresses IP de monodiffusion stable. Ce paramètre est retourné si la valeur de retour de NotifyStableUnicastIpAddressTable est ERROR_IO_PENDING, ce qui indique que la demande d’E/S est en attente.
Valeur retournée
NotifyStableUnicastIpAddressTable retourne STATUS_SUCCESS et la table IP de monodiffusion stable est retournée dans le paramètre Table si la fonction réussit immédiatement.
Si la demande d’E/S est en attente, la fonction retourne ERROR_IO_PENDING et la fonction vers laquelle pointe le paramètre CallerCallback est appelée lorsque la demande d’E/S est terminée avec la table d’adresses IP de monodiffusion stable.
Si la fonction échoue, NotifyStableUnicastIpAddressTable retourne l’un des codes d’erreur suivants :
Code de retour | Description |
---|---|
ERROR_INVALID_HANDLE | Une erreur interne s’est produite lorsqu’un handle non valide a été rencontré. |
STATUS_INVALID_PARAMETER | Un paramètre non valide a été transmis à la fonction. Cette erreur est retournée si le paramètre Table était un pointeur NULL , si le paramètre NotificationHandle était un pointeur NULL ou si le paramètre Family n’était pas AF_INET, AF_INET6 ou AF_UNSPEC. |
STATUS_NOT_ENOUGH_MEMORY | La mémoire était insuffisante. |
Autres | Utilisez la fonction FormatMessage pour obtenir la chaîne de message de l’erreur retournée. |
Notes
Toutes les adresses IP de monodiffusion, à l’exception des adresses de numérotation à la demande, sont considérées comme stables uniquement si elles sont dans l’état préféré. Pour une entrée d’adresse IP de monodiffusion normale, cet état correspond à un membre DadState du MIB_UNICASTIPADDRESS_ROW pour l’adresse IP définie sur IpDadStatePreferred. Chaque adresse de numérotation à la demande définit sa propre métrique de stabilité. Actuellement, la seule adresse de numérotation à la demande que la fonction NotifyStableUnicastIpAddressTable considère est l’adresse IP de monodiffusion que le client Teredo utilise sur l’ordinateur local.
Votre pilote doit définir le paramètre Family sur AF_INET, AF_INET6 ou AF_UNSPEC.
Lorsque NotifyStableUnicastIpAddressTable réussit et retourne STATUS_SUCCESS, le paramètre Table renvoie la table d’adresses IP de monodiffusion stable sur l’ordinateur local.
Lorsque NotifyStableUnicastIpAddressTable retourne ERROR_IO_PENDING, ce qui indique que la demande d’E/S est en attente, la table d’adresses IP de monodiffusion stable est retournée à la fonction dans le paramètre CallerCallback .
Si l’adresse IP de monodiffusion que Teredo utilise est disponible sur l’ordinateur local, mais pas dans l’état stable (qualifié), NotifyStableUnicastIpAddressTable retourne ERROR_IO_PENDING et la table d’adresses IP de monodiffusion stable est finalement retournée en appelant la fonction dans le paramètre CallerCallback . Si l’adresse Teredo n’est pas disponible ou est dans l’état stable et que les autres adresses IP de monodiffusion sont dans un état stable, la fonction dans le paramètre CallerCallback n’est jamais appelée.
La fonction de rappel spécifiée dans le paramètre CallerCallback doit être définie en tant que 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 qui est passé à la fonction NotifyStableUnicastIpAddressTable lors de l’inscription du pilote pour les notifications. |
IN PMIB_UNICASTIPADDRESS_TABLE AddressTable |
Pointeur vers une structure MIB_UNICASTIPADDRESS_TABLE qui contient la table d’adresses IP de monodiffusion stable sur l’ordinateur local. |
La fonction NotifyStableUnicastIpAddressTable est principalement utilisée par les pilotes qui utilisent le client Teredo.
Pour annuler la notification une fois le rappel terminé, appelez la fonction CancelMibChangeNotify2 , en passant le paramètre NotificationHandle retourné par NotifyStableUnicastIpAddressTable .
Spécifications
Plateforme cible |
Universal |
Version |
Disponible dans Windows Vista et versions ultérieures des systèmes d’exploitation Windows. |
En-tête |
Netioapi.h (inclure Netioapi.h) |
Bibliothèque |
Netio.lib |
IRQL |
< DISPATCH_LEVEL |