Compartilhar via


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 exclusivo local) 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 ser alterado quando um adaptador de rede é desabilitado e, em seguida, habilitado ou em outras circunstâncias, portanto, esse valor não é persistente.

  • SourceAddress [in, opcional]
    Endereço IP de origem. O driver pode omitir esse parâmetro e passar um ponteiro NULL .

  • DestinationAddress [in]
    Endereço IP de destino.

  • AddressSortOptions [in]
    Um conjunto de opções que afetam como os endereços IP são classificados. Esse parâmetro não é usado atualmente.

  • BestRoute [out]
    Um ponteiro para a estrutura 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.

Retornar valor

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, BestSourceAddress ou BestRoute . Esse erro também será retornado se os parâmetros InterfaceLuid e InterfaceIndex não forem 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 não for possível encontrar o adaptador de rede especificado pelo parâmetro InterfaceLuid ou InterfaceIndex .

STATUS_NOT_SUPPORTED

A solicitação não terá suporte. 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.

Comentários

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 tiver sido 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 IPv4 ou IPv6 preferencial e a família.

Na saída, quando a chamada é bem-sucedida, GetBestRoute2 recupera uma estrutura 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.

parâmetro

Netioapi.h (inclua Netioapi.h)

Biblioteca

Netio.lib

IRQL

< DISPATCH_LEVEL

Confira também

CreateIpForwardEntry2

DeleteIpForwardEntry2

GetIpForwardEntry2

GetIpForwardTable2

InitializeIpForwardEntry

MIB_IPFORWARD_ROW2

MIB_IPFORWARD_TABLE2

NotifyRouteChange2

SetIpForwardEntry2