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

Consulte também

CreateIpForwardEntry2

DeleteIpForwardEntry2

GetIpForwardEntry2

GetIpForwardTable2

InitializeIpForwardEntry

MIB_IPFORWARD_ROW2

MIB_IPFORWARD_TABLE2

notifyRouteChange2

SetIpForwardEntry2