Partager via


CreateIpForwardEntry2, fonction (netioapi.h)

La fonction CreateIpForwardEntry2 crée une nouvelle entrée d’itinéraire IP sur l’ordinateur local.

Syntaxe

IPHLPAPI_DLL_LINKAGE _NETIOAPI_SUCCESS_ NETIOAPI_API CreateIpForwardEntry2(
  [in] const MIB_IPFORWARD_ROW2 *Row
);

Paramètres

[in] Row

Pointeur vers une entrée de structure MIB_IPFORWARD_ROW2 pour une entrée de route IP.

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
ERROR_ACCESS_DENIED
L’accès est refusé. Cette erreur est retournée dans plusieurs conditions, notamment : l’utilisateur n’a pas les privilèges d’administration requis sur l’ordinateur local ou l’application ne s’exécute pas dans un interpréteur de commandes amélioré en tant qu’administrateur intégré (administrateur RunAs).
ERROR_INVALID_PARAMETER
Un paramètre non valide a été transmis à la fonction. Cette erreur est retournée si un pointeur NULL est transmis dans le paramètre Row , si le membre DestinationPrefix du MIB_IPFORWARD_ROW2 pointé par le paramètre Row n’a pas été spécifié, si le membre NextHop du MIB_IPFORWARD_ROW2 pointé par le paramètre Row n’a pas été spécifié, ou les deux membres InterfaceLuid ou InterfaceIndex du MIB_IPFORWARD_ROW2 pointés par la ligne le paramètre n’a pas été spécifié. Cette erreur est également retournée si le membre PreferredLifetime spécifié dans le MIB_IPFORWARD_ROW2 est supérieur au membre ValidLifetime ou si la valeur SitePrefixLength dans le MIB_IPFORWARD_ROW2 est supérieure à la longueur de préfixe spécifiée dans destinationPrefix.
ERROR_NOT_FOUND
L’interface spécifiée est introuvable. Cette erreur est retournée si l’interface réseau spécifiée par le membre InterfaceLuid ou InterfaceIndex du MIB_IPNET_ROW2 pointé par le paramètre Row est introuvable.
ERROR_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 également retournée si aucune pile IPv4 n’est sur l’ordinateur local et AF_INET a été spécifié dans la famille d’adresses dans le membre DestinationPrefix du MIB_IPFORWARD_ROW2 pointé par le paramètre Row . Cette erreur est également retournée 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 du MIB_IPFORWARD_ROW2 pointé par 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 du MIB_IPFORWARD_ROW2.
Autres
Utilisez FormatMessage pour obtenir la chaîne de message de l’erreur retournée.

Remarques

La fonction CreateIpForwardEntry2 est définie sur Windows Vista et versions ultérieures.

La fonction CreateIpForwardEntry2 permet d’ajouter une nouvelle entrée d’adresse IP voisine sur un ordinateur local. La fonction InitializeIpForwardEntry doit être utilisée pour initialiser les membres d’une entrée de structure MIB_IPFORWARD_ROW2 avec des valeurs par défaut. Une application peut ensuite modifier les membres de l’entrée MIB_IPFORWARD_ROW2 qu’elle souhaite modifier, puis appeler la fonction CreateIpForwardEntry2 .

Le membre DestinationPrefix dans la structure MIB_IPFORWARD_ROW2 pointée par le paramètre Row doit être initialisé vers un préfixe d’adresse IPv4 ou IPv6 valide. Le membre NextHop dans la structure MIB_IPFORWARD_ROW2 pointée par le paramètre Row doit être initialisé vers une adresse et une famille IPv4 ou IPv6 valides. En outre, au moins un des membres suivants dans la structure MIB_IPFORWARD_ROW2 pointant vers le paramètre Row doit être initialisé vers l’interface : InterfaceLuid ou InterfaceIndex.

Les champs sont utilisés dans l’ordre indiqué ci-dessus. Par conséquent, si InterfaceLuid est spécifié, ce membre est utilisé pour déterminer l’interface sur laquelle ajouter l’entrée d’itinéraire IP. Si aucune valeur n’a été définie pour le membre InterfaceLuid (les valeurs de ce membre ont été définies 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 pointée par le paramètre Row ne représente qu’une partie de la métrique de routage 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. Une application 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 pointées par la ligne 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 du MIB_IPFORWARD_ROW2 pointés par 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 .

La fonction CreateIpForwardEntry2 ne peut être appelée que par un utilisateur connecté en tant que membre du groupe Administrateurs. Si CreateIpForwardEntry2 est appelé par un utilisateur qui n’est pas membre du groupe Administrateurs, l’appel de fonction échoue et ERROR_ACCESS_DENIED est retourné. Cette fonction peut également échouer en raison du contrôle de compte d’utilisateur (UAC) sur Windows Vista et versions ultérieures. Si une application qui contient cette fonction est exécutée par un utilisateur connecté en tant que membre du groupe Administrateurs autre que l’administrateur intégré, cet appel échoue, sauf si l’application a été marquée dans le fichier manifeste avec un requestedExecutionLevel défini sur requireAdministrator. Si l’application ne dispose pas de ce fichier manifeste, un utilisateur connecté en tant que membre du groupe Administrateurs autre que l’administrateur intégré doit ensuite exécuter l’application dans un interpréteur de commandes amélioré en tant qu’administrateur intégré (administrateur d’exécution) pour que cette fonction réussisse.

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 (include Iphlpapi.h)
Bibliothèque Iphlpapi.lib
DLL Iphlpapi.dll

Voir aussi

DeleteIpForwardEntry2

GetBestRoute2

GetIpForwardEntry2

GetIpForwardTable2

GetIpInterfaceEntry

InitializeIpForwardEntry

MIB_IPFORWARD_ROW2

MIB_IPFORWARD_TABLE2

MIB_IPINTERFACE_ROW

NotifyRouteChange2

SetIpForwardEntry2