GetBestRoute2, fonction
La fonction GetBestRoute2 récupère l’entrée d’itinéraire IP sur un ordinateur local pour le meilleur itinéraire vers l’adresse IP de destination spécifiée.
Syntaxe
NETIOAPI_API GetBestRoute2(
_In_opt_ NET_LUID *InterfaceLuid,
_In_ NET_IFINDEX InterfaceIndex,
_In_opt_ const SOCKADDR_INET *SourceAddress,
_In_ const SOCKADDR_INET *DestinationAddress,
_In_ ULONG AddressSortOptions,
_Out_ PMIB_IPFORWARD_ROW2 BestRoute,
_Out_ SOCKADDR_INET *BestSourceAddress
);
Paramètres
InterfaceLuid [in, facultatif]
Identificateur local unique (LUID) pour spécifier l’interface réseau associée à une entrée de route IP.InterfaceIndex [in]
Valeur d’index local pour spécifier l’interface réseau associée à une entrée de route IP. Cette valeur d’index peut changer lorsqu’une carte réseau est désactivée puis activée, ou dans d’autres circonstances, de sorte que cette valeur n’est pas persistante.SourceAddress [in, facultatif]
Adresse IP de la source. Votre pilote peut omettre ce paramètre et passer un pointeur NULL .DestinationAddress [in]
Adresse IP de la destination.AddressSortOptions [in]
Ensemble d’options qui affectent la façon dont les adresses IP sont triées. Ce paramètre n'est pas utilisé actuellement.BestRoute [out]
Pointeur vers la structure MIB_IPFORWARD_ROW2 pour le meilleur itinéraire de l’adresse IP source vers l’adresse IP de destination.BestSourceAddress [out]
Pointeur vers la meilleure adresse IP source.
Valeur retournée
GetBestRoute2 retourne STATUS_SUCCESS si la fonction réussit.
Si la fonction échoue, GetBestRoute2 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 les paramètres DestinationAddress, BestSourceAddress ou BestRoute . Cette erreur est également retournée si les paramètres InterfaceLuid et InterfaceIndex n’étaient pas spécifiés. Cette erreur est également retournée si le paramètre DestinationAddress ne spécifie pas d’adresse et de famille IPv4 ou IPv6 |
STATUS_NOT_FOUND | L’interface spécifiée est introuvable. Cette erreur est retournée si l’interface réseau spécifiée par le paramètre InterfaceLuid ou InterfaceIndex est introuvable. |
STATUS_NOT_SUPPORTED | La demande n'est pas prise en charge. Cette erreur est retournée si aucune pile IPv4 ne se trouve sur l’ordinateur local et qu’une adresse et une famille IPv4 ont été spécifiées dans le paramètre DestinationAddress , ou si aucune pile IPv6 ne se trouve sur l’ordinateur local et qu’une adresse et une famille IPv4 ont été spécifiées dans le paramètre DestinationAddress . |
Autres | Utilisez la fonction FormatMessage pour obtenir la chaîne de message pour l’erreur retournée. |
Notes
La fonction GetBestRoute2 permet de récupérer une entrée de structure MIB_IPFORWARD_ROW2 pour la meilleure route d’une adresse IP source vers une adresse IP de destination.
En entrée, votre pilote doit initialiser les paramètres suivants.
DestinationAddress
Définissez sur une adresse et une famille IPv4 ou IPv6 valides.InterfaceLuid ou InterfaceIndex
Ces paramètres sont utilisés dans l’ordre indiqué précédemment. Par conséquent, si InterfaceLuid est spécifié, ce paramètre est utilisé pour déterminer l’interface. Si aucune valeur n’a été définie pour le membre InterfaceLuid (la valeur de ce paramètre a été définie sur zéro), le paramètre InterfaceIndex est ensuite utilisé pour déterminer l’interface.
En outre, lors de l’entrée, votre pilote peut initialiser le paramètre SourceAddress sur l’adresse IPv4 ou IPv6 et la famille préférées.
En sortie, lorsque l’appel réussit, GetBestRoute2 récupère une structure MIB_IPFORWARD_ROW2 pour le meilleur itinéraire à partir de l’adresse IP source de l’adresse IP de destination.
Spécifications
Plateforme cible |
Universal |
Version |
Disponible dans Windows Vista et les versions ultérieures des systèmes d’exploitation Windows. |
En-tête |
Netioapi.h (inclure Netioapi.h) |
Bibliothèque |
Netio.lib |
IRQL |
< DISPATCH_LEVEL |