SetIpInterfaceEntry, fonction
La fonction SetIpInterfaceEntry définit les propriétés d’une interface IP sur un ordinateur local.
Syntaxe
NETIOAPI_API SetIpInterfaceEntry(
_Inout_ PMIB_IPINTERFACE_ROW Row
);
Paramètres
- Ligne [in, out]
Pointeur vers une entrée de structure MIB_IPINTERFACE_ROW pour une interface. Lors de l’entrée, votre pilote doit définir le membre Family du MIB_IPINTERFACE_ROW sur AF_INET6 ou AF_INET et votre pilote doit spécifier le membre InterfaceLuid ou le membre InterfaceIndex de MIB_IPINTERFACE_ROW. En cas de retour réussi, le membre InterfaceLuid du MIB_IPINTERFACE_ROW est renseigné si le membre InterfaceIndex de l’entrée MIB_IPINTERFACE_ROW a été spécifié.
Valeur retournée
SetIpInterfaceEntry retourne STATUS_SUCCESS si la fonction réussit.
Si la fonction échoue, SetIpInterfaceEntry 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 un pointeur NULL est passé dans le paramètre Row , si le membre Family de la structure MIB_IPINTERFACE_ROW vers laquelle le paramètre Row pointe n’a pas été spécifié comme AF_INET ou AF_INET6, ou si les membres InterfaceLuid et InterfaceIndex de la structure MIB_IPINTERFACE_ROW n’ont pas été spécifiés. |
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_IPINTERFACE_ROW vers laquelle pointe le paramètre Row . |
Autres | Utilisez la fonction FormatMessage pour obtenir la chaîne de message de l’erreur retournée. |
Notes
Votre pilote doit utiliser la fonction InitializeIpInterfaceEntry pour initialiser les champs d’une entrée de structure MIB_IPINTERFACE_ROW avec les valeurs par défaut. Un pilote peut ensuite modifier les champs de l’entrée MIB_IPINTERFACE_ROW qu’il souhaite modifier, puis appeler la fonction SetIpInterfaceEntry .
Lors de l’entrée, votre pilote doit initialiser les membres suivants de la structure MIB_IPINTERFACE_ROW vers laquelle pointe le paramètre Row .
Famille
Définissez sur AF_INET ou AF_INET6.InterfaceLuid ou InterfaceIndex
Ces membres 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. 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.
Lors de la sortie, le membre InterfaceLuid de la structure MIB_IPINTERFACE_ROW vers laquelle pointe le paramètre Row est renseigné si l’InterfaceIndex a été spécifié.
SetIpInterfaceEntry ignore les membres MaxReassemblySize, MinRouterAdvertisementInterval, MaxRouterAdvertisementInterval, Connected, SupportsWakeUpPatterns, SupportsNeighborDiscovery, SupportsRouterDiscovery, ReachableTime, TransmitOffload et ReceiveOffload de la structure MIB_IPINTERFACE_ROW vers laquelle pointe le paramètre Row . Ces membres sont définis par la pile réseau et ne peuvent pas être modifiés à l’aide de la fonction SetIpInterfaceEntry .
Un accès simultané non privilégié à plusieurs réseaux de différentes exigences de sécurité crée un trou de sécurité et permet à un pilote non privilégié de relayer accidentellement des données entre les deux réseaux. Un exemple classique est l’accès simultané à un réseau privé virtuel (VPN) et à Internet. Les systèmes d’exploitation Windows Server 2003 et Windows XP utilisent un modèle hôte faible, où le service d’accès à distance (RAS) empêche cet accès simultané en augmentant la métrique de routage de tous les itinéraires par défaut sur d’autres interfaces. Par conséquent, tout le trafic est routé via l’interface VPN, ce qui perturbe d’autres connectivités réseau.
Sur Windows Vista et les versions ultérieures des systèmes d’exploitation Windows, par défaut, un modèle hôte fort est utilisé. Si une adresse IP source est spécifiée dans la recherche d’itinéraire à l’aide de la fonction GetBestRoute2 , la recherche d’itinéraire est limitée à l’interface de l’adresse IP source. La modification de la métrique d’itinéraire par RAS n’a aucun effet, car la liste des itinéraires potentiels n’a même pas l’itinéraire pour l’interface VPN, ce qui permet le trafic vers Internet. Votre pilote peut utiliser le membre DisableDefaultRoutes de la structure MIB_IPINTERFACE_ROW pour désactiver l’utilisation de l’itinéraire par défaut sur une interface. Les clients VPN peuvent utiliser ce membre comme mesure de sécurité pour restreindre le tunneling fractionné lorsque le tunneling fractionné n’est pas requis par le client VPN. Un client VPN peut appeler la fonction SetIpInterfaceEntry pour définir le membre DisableDefaultRoutes sur TRUE lorsque cela est nécessaire. Un client VPN peut interroger l’état actuel du membre DisableDefaultRoutes en appelant la fonction GetIpInterfaceEntry .
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 |