Partager via


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

Voir aussi

CreateIpForwardEntry2

DeleteIpForwardEntry2

GetIpForwardEntry2

GetIpForwardTable2

InitializeIpForwardEntry

MIB_IPFORWARD_ROW2

MIB_IPFORWARD_TABLE2

NotifyRouteChange2

SetIpForwardEntry2