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 |