Compartir a través de


Función GetBestRoute2

La función GetBestRoute2 recupera la entrada de ruta IP en un equipo local para obtener la mejor ruta a la dirección IP de destino especificada.

Sintaxis

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
);

Parámetros

  • InterfaceLuid [in, opcional]
    Identificador único local (LUID) para especificar la interfaz de red asociada a una entrada de ruta IP.

  • InterfaceIndex [in]
    Valor de índice local para especificar la interfaz de red asociada a una entrada de ruta IP. Este valor de índice puede cambiar cuando se deshabilita un adaptador de red y, a continuación, se habilita o en otras circunstancias, por lo que este valor no es persistente.

  • SourceAddress [in, opcional]
    La dirección IP de origen. El controlador puede omitir este parámetro y pasar un puntero NULL .

  • DestinationAddress [in]
    La dirección IP de destino.

  • AddressSortOptions [in]
    Conjunto de opciones que afectan a cómo se ordenan las direcciones IP. Este parámetro no se utiliza actualmente.

  • BestRoute [out]
    Puntero a la estructura MIB_IPFORWARD_ROW2 para la mejor ruta desde la dirección IP de origen a la dirección IP de destino.

  • BestSourceAddress [out]
    Puntero a la mejor dirección IP de origen.

Valor devuelto

GetBestRoute2 devuelve STATUS_SUCCESS si la función se realiza correctamente.

Si se produce un error en la función, GetBestRoute2 devuelve uno de los siguientes códigos de error:

Código devuelto Descripción
STATUS_INVALID_PARAMETER

Se pasó un parámetro no válido a la función. Este error se devuelve si se pasa un puntero NULL en los parámetros DestinationAddress, BestSourceAddress o BestRoute . Este error también se devuelve si no se especificaron los parámetros InterfaceLuid e InterfaceIndex . Este error también se devuelve si el parámetro DestinationAddress no especifica una dirección IPv4 o IPv6 y una familia.

STATUS_NOT_FOUND

No se encontró la interfaz especificada. Este error se devuelve si no se encontró la interfaz de red que especifica el parámetro InterfaceLuid o InterfaceIndex .

STATUS_NOT_SUPPORTED

No se admite la solicitud. Este error se devuelve si no se encuentra ninguna pila IPv4 en el equipo local y se especificó una dirección iPv4 y una familia en el parámetro DestinationAddress , o si no se encuentra ninguna pila IPv6 en el equipo local y se especificó una dirección IPv4 y una familia en el parámetro DestinationAddress .

Otros

Use la función FormatMessage para obtener la cadena de mensaje del error devuelto.

Observaciones

La función GetBestRoute2 se usa para recuperar una entrada de estructura de MIB_IPFORWARD_ROW2 para la mejor ruta de una dirección IP de origen a una dirección IP de destino.

En la entrada, el controlador debe inicializar los parámetros siguientes.

  • DestinationAddress
    Establézcalo en una dirección y familia IPv4 o IPv6 válida.

  • InterfaceLuid o InterfaceIndex
    Estos parámetros se usan en el orden enumerado anteriormente. Por lo tanto, si se especifica InterfaceLuid , este parámetro se usa para determinar la interfaz. Si no se estableció ningún valor para el miembro InterfaceLuid (el valor de este parámetro se estableció en cero), el parámetro InterfaceIndex se usa a continuación para determinar la interfaz.

Además, en la entrada, el controlador puede inicializar el parámetro SourceAddress en la dirección y familia IPv4 o IPv6 preferidas.

En la salida, cuando la llamada se realiza correctamente, GetBestRoute2 recupera una estructura de MIB_IPFORWARD_ROW2 para la mejor ruta desde la dirección IP de origen la dirección IP de destino.

Requisitos

Plataforma de destino

Universal

Versión

Disponible en Windows Vista y versiones posteriores de los sistemas operativos Windows.

Encabezado

Netioapi.h (incluya Netioapi.h)

Biblioteca

Netio.lib

IRQL

< DISPATCH_LEVEL

Consulte también

CreateIpForwardEntry2

DeleteIpForwardEntry2

GetIpForwardEntry2

GetIpForwardTable2

InitializeIpForwardEntry

MIB_IPFORWARD_ROW2

MIB_IPFORWARD_TABLE2

NotifyRouteChange2

SetIpForwardEntry2