Função GetBestRoute2
A função GetBestRoute2 recupera a entrada de rota IP em um computador local para obter a melhor rota para o endereço IP de destino especificado.
Sintaxe
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]
O LUID (identificador local exclusivo) para especificar o adaptador de rede associado a uma entrada de rota IP.InterfaceIndex [in]
O valor do índice local para especificar o adaptador de rede associado a uma entrada de rota IP. Esse valor de índice pode mudar quando um adaptador de rede é desabilitado e habilitado, ou em outras circunstâncias, para que esse valor não seja persistente.SourceAddress [in, optional]
O endereço IP de origem. O driver pode omitir esse parâmetro e passar um ponteiro de NULL.DestinationAddress [in]
O endereço IP de destino.AddressSortOptions [in]
Um conjunto de opções que afetam a forma como os endereços IP são classificados. Atualmente, esse parâmetro não é usado.bestroute [out]
Um ponteiro para a estrutura de MIB_IPFORWARD_ROW2 para a melhor rota do endereço IP de origem para o endereço IP de destino.BestSourceAddress [out]
Um ponteiro para o melhor endereço IP de origem.
Valor de retorno
GetBestRoute2 retornará STATUS_SUCCESS se a função for bem-sucedida.
Se a função falhar, GetBestRoute2 retornará um dos seguintes códigos de erro:
Código de retorno | Descrição |
---|---|
STATUS_INVALID_PARAMETER | Um parâmetro inválido foi passado para a função. Esse erro será retornado se um ponteiro NULL for passado nos parâmetros DestinationAddress, BestSourceAddressou BestRoute. Esse erro também será retornado se parâmetros InterfaceLuid e InterfaceIndex não foram especificados. Esse erro também será retornado se o parâmetro DestinationAddress não especificar um endereço IPv4 ou IPv6 e uma família |
STATUS_NOT_FOUND | Não foi possível encontrar a interface especificada. Esse erro será retornado se o adaptador de rede que o InterfaceLuid ou interfaceIndex parâmetro especificar não tiver sido encontrado. |
STATUS_NOT_SUPPORTED | Não há suporte para a solicitação. Esse erro será retornado se nenhuma pilha IPv4 estiver localizada no computador local e um endereço IPv4 e uma família tiverem sido especificados no parâmetro DestinationAddress ou se nenhuma pilha IPv6 estiver localizada no computador local e um endereço IPv4 e uma família tiverem sido especificados no parâmetro DestinationAddress. |
Outros | Use a função FormatMessage para obter a cadeia de caracteres de mensagem para o erro retornado. |
Observações
A função GetBestRoute2 é usada para recuperar uma entrada de estrutura MIB_IPFORWARD_ROW2 para a melhor rota de um endereço IP de origem para um endereço IP de destino.
Na entrada, o driver deve inicializar os parâmetros a seguir.
DestinationAddress
Defina como um endereço IPv4 ou IPv6 válido e uma família.InterfaceLuid ou interfaceIndex
Esses parâmetros são usados na ordem listada anteriormente. Portanto, se InterfaceLuid for especificado, esse parâmetro será usado para determinar a interface. Se nenhum valor foi definido para o membro InterfaceLuid (o valor desse parâmetro foi definido como zero), o parâmetro InterfaceIndex será usado em seguida para determinar a interface.
Além disso, na entrada, o driver pode inicializar o parâmetro SourceAddress para o endereço e a família IPv4 ou IPv6 preferenciais.
Na saída, quando a chamada for bem-sucedida, GetBestRoute2 recuperar uma estrutura de MIB_IPFORWARD_ROW2 para a melhor rota do endereço IP de origem do endereço IP de destino.
Requisitos
Plataforma de destino |
Universal |
Versão |
Disponível no Windows Vista e versões posteriores dos sistemas operacionais Windows. |
Cabeçalho |
Netioapi.h (inclua Netioapi.h) |
Biblioteca |
Netio.lib |
IRQL |
< DISPATCH_LEVEL |