Partager via


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

Voir aussi

CancelMibChangeNotify2

CreateUnicastIpAddressEntry

DeleteUnicastIpAddressEntry

GetTeredoPort

GetUnicastIpAddressEntry

GetUnicastIpAddressTable

InitializeUnicastIpAddressEntry

MIB_NOTIFICATION_TYPE

MIB_UNICASTIPADDRESS_ROW

MIB_UNICASTIPADDRESS_TABLE

NotifyTeredoPortChange

NotifyUnicastIpAddressChange

SetUnicastIpAddressEntry