Partager via


CreateIpForwardEntry2, fonction

La fonction CreateIpForwardEntry2 crée une entrée de route IP sur un ordinateur local.

Syntaxe

NETIOAPI_API CreateIpForwardEntry2(
  _In_ const MIB_IPFORWARD_ROW2 *Row
);

Paramètres

Valeur retournée

CreateIpForwardEntry2 retourne STATUS_SUCCESS si la fonction réussit.

Si la fonction échoue, CreateIpForwardEntry2 retourne l’un des codes d’erreur suivants :

Code de retour Description
STATUS_INVALID_PARAMETER

Un paramètre non valide a été transmis à la fonction. Cette erreur est retournée si l’une des situations suivantes se produit :

  • Un pointeur NULL est passé dans le paramètre Row .

  • Le membre DestinationPrefix de la structure MIB_IPFORWARD_ROW2 vers laquelle pointe le paramètre Row n’a pas été spécifié.

  • Le membre NextHop de la structure MIB_IPFORWARD_ROW2 n’a pas été spécifié.

  • Les membres InterfaceLuid et InterfaceIndex de la structure MIB_IPFORWARD_ROW2 n’ont pas été spécifiés.

  • Le membre PreferredLifetime de la structure MIB_IPFORWARD_ROW2 est supérieur au membre ValidLifetime .

  • Le membre SitePrefixLength de la structure MIB_IPFORWARD_ROW2 est supérieur à la longueur de préfixe spécifiée par le membre DestinationPrefix .

Cette erreur est retournée si un pointeur NULL est transmis dans le paramètre Row , si le membre DestinationPrefix de la structure MIB_IPFORWARD_ROW2 pointée par le paramètre Row n’a pas été spécifié, si le membre NextHop de la structure MIB_IPFORWARD_ROW2 n’a pas été spécifié, ou si les membres InterfaceLuid et InterfaceIndex de la structure MIB_IPFORWARD_ROW2 n’ont pas été spécifiés. Cette erreur est également retournée si le membre PreferredLifetime spécifié dans la structure MIB_IPFORWARD_ROW2 est supérieur au membre ValidLifetime , ou si la valeur SitePrefixLength dans la structure MIB_IPFORWARD_ROW2 est supérieure à la longueur de préfixe spécifiée dans le membre DestinationPrefix .

STATUS_NOT_FOUND

L’interface spécifiée est introuvable. Cette erreur est retournée si la fonction ne trouve pas l’interface réseau spécifiée par le membre InterfaceLuid ou InterfaceIndex de la structure MIB_IPNET_ROW2 vers laquelle pointe le paramètre Row .

STATUS_NOT_SUPPORTED

La demande n'est pas prise en charge. Cette erreur est retournée si l’interface spécifiée ne prend pas en charge les itinéraires. Cette erreur est retournée si aucune pile IPv4 ne se trouve sur l’ordinateur local et si AF_INET a été spécifié dans la famille d’adresses dans le membre DestinationPrefix de la structure MIB_IPFORWARD_ROW2 vers laquelle pointe le paramètre Row , ou si aucune pile IPv6 ne se trouve sur l’ordinateur local et AF_INET6 a été spécifié pour la famille d’adresses dans le membre DestinationPrefix .

ERROR_OBJECT_ALREADY_EXISTS

L'objet existe déjà. Cette erreur est retournée si le membre DestinationPrefix de la structure MIB_IPFORWARD_ROW2 vers laquelle pointe le paramètre Row est un doublon d’une entrée de route IP existante sur l’interface spécifiée par le membre InterfaceLuid ou InterfaceIndex de la structure MIB_IPFORWARD_ROW2.

Autres

Utilisez la fonction FormatMessage pour obtenir la chaîne de message de l’erreur retournée.

Notes

La fonction CreateIpForwardEntry2 permet d’ajouter une nouvelle entrée d’adresse IP voisine sur un ordinateur local. Utilisez la fonction InitializeIpForwardEntry pour initialiser les membres d’une entrée de structure MIB_IPFORWARD_ROW2 avec les valeurs par défaut. Un pilote peut ensuite modifier les membres de l’entrée MIB_IPFORWARD_ROW2 qu’il souhaite modifier, puis appeler CreateIpForwardEntry2.

Votre pilote doit initialiser les membres suivants de la structure MIB_IPFORWARD_ROW2 vers laquelle pointe le paramètre Row :

  • Définissez DestinationPrefix sur un préfixe d’adresse IPv4 ou IPv6 valide.

  • Définissez NextHop sur une adresse et une famille IPv4 ou IPv6 valides.

  • Définissez InterfaceLuid ou InterfaceIndex sur la valeur LUID ou index de l’interface.

Les membres InterfaceLuid et InterfaceIndex sont utilisés dans l’ordre indiqué précédemment. Par conséquent, si InterfaceLuid est spécifié, ce membre est utilisé pour déterminer l’interface sur laquelle ajouter l’entrée de route IP. Si aucune valeur n’a été définie pour le membre InterfaceLuid (la valeur de ce membre a été définie sur zéro), le membre InterfaceIndex est ensuite utilisé pour déterminer l’interface.

Le décalage de la métrique d’itinéraire spécifié dans le membre Métrique de la structure MIB_IPFORWARD_ROW2 sur laquelle pointe le paramètre Row ne représente qu’une partie de la métrique d’itinéraire complète. La métrique complète est une combinaison de ce décalage de métrique d’itinéraire ajouté à la métrique d’interface spécifiée dans le membre Métrique de la structure MIB_IPINTERFACE_ROW de l’interface associée. Un pilote peut récupérer la métrique d’interface en appelant la fonction GetIpInterfaceEntry .

Les membres Age et Origin de la structure MIB_IPFORWARD_ROW2 vers laquelle pointe le paramètre Row sont ignorés lorsque la fonction CreateIpForwardEntry2 est appelée. Ces membres sont définis par la pile réseau et ne peuvent pas être définis à l’aide de la fonction CreateIpForwardEntry2 .

La fonction CreateIpForwardEntry2 échoue si les membres DestinationPrefix et NextHop de la structure MIB_IPFORWARD_ROW2 vers laquelle pointe le paramètre Row sont un doublon d’une entrée de route IP existante sur l’interface spécifiée dans les membres InterfaceLuid ou InterfaceIndex .

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

DeleteIpForwardEntry2

GetBestRoute2

GetIpForwardEntry2

GetIpForwardTable2

GetIpInterfaceEntry

InitializeIpForwardEntry

MIB_IPFORWARD_ROW2

MIB_IPFORWARD_TABLE2

MIB_IPINTERFACE_ROW

NotifyRouteChange2

SetIpForwardEntry2