Partilhar via


Função GetBestRoute2

A função GetBestRoute2 recupera a entrada de rota IP em um computador local para 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 identificador exclusivo local (LUID) para especificar a interface de rede associada a uma entrada de rota IP.

  • InterfaceIndex [em]
    O valor de índice local para especificar a interface de rede associada a uma entrada de rota IP. Esse valor de índice pode mudar quando um adaptador de rede é desativado e, em seguida, habilitado, ou em outras circunstâncias, para que esse valor não persista.

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

  • DestinationAddress [em]
    O endereço IP de destino.

  • AddressSortOptions [em]
    Um conjunto de opções que afetam a forma como os endereços IP são classificados. Este parâmetro não é usado no momento.

  • BestRoute [saída]
    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 [saída]
    Um ponteiro para o melhor endereço IP de origem.

Valor de retorno

GetBestRoute2 retorna 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. Este erro é retornado se um ponteiro de NULL é passado no DestinationAddress, BestSourceAddressou parâmetros BestRoute. Este erro também é retornado se parâmetros InterfaceLuid e InterfaceIndex não foram especificados. Este erro também é retornado se o parâmetro DestinationAddress não especificar um endereço IPv4 ou IPv6 e família

STATUS_NOT_FOUND

A interface especificada não pôde ser encontrada. Este erro é retornado se a interface de rede que o InterfaceLuid ou parâmetro InterfaceIndex especifica não pôde ser encontrada.

STATUS_NOT_SUPPORTED

A solicitação não é suportada. Este 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

O função GetBestRoute2 é usado 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 seguintes parâmetros.

  • DestinationAddress
    Defina como um endereço e uma família IPv4 ou IPv6 válidos.

  • 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 IPv4 ou IPv6 preferido e família.

Na saída, quando a chamada é bem-sucedida, GetBestRoute2 recupera uma estrutura de MIB_IPFORWARD_ROW2 para a melhor rota do endereço IP de origem o endereço IP de destino.

Requerimentos

Plataforma de destino

Universal

Versão

Disponível no Windows Vista e versões posteriores dos sistemas operacionais Windows.

Cabeçalho

Netioapi.h (inclui Netioapi.h)

Biblioteca

Netio.lib

IRQL

< DISPATCH_LEVEL

Ver também

CreateIpForwardEntry2

DeleteIpForwardEntry2

GetIpForwardEntry2

GetIpForwardTable2

InitializeIpForwardEntry

MIB_IPFORWARD_ROW2

MIB_IPFORWARD_TABLE2

NotifyRouteChange2

SetIpForwardEntry2