Partilhar via


Função ResolveIpNetEntry2

A função ResolveIpNetEntry2 resolve o endereço físico de uma entrada de endereço IP vizinha em um computador local.

Sintaxe

NETIOAPI_API ResolveIpNetEntry2(
  _Inout_        PMIB_IPNET_ROW2 Row,
  _In_opt_ const SOCKADDR_INET   *SourceAddress
);

Parâmetros

  • Linha [entrada, saída]
    Um ponteiro para uma entrada de estrutura MIB_IPNET_ROW2 para uma entrada de endereço IP vizinha. No retorno bem-sucedido, essa estrutura é atualizada com as propriedades do endereço IP vizinho.

  • SourceAddress [in, opcional]
    Um ponteiro para um endereço IP de origem opcional que é usado para selecionar a interface para enviar as solicitações para a entrada de endereço IP vizinho.

Valor de retorno

ResolveIpNetEntry2 retorna STATUS_SUCCESS se a função for bem-sucedida.

Se a função falhar, ResolveIpNetEntry2 retornará um dos seguintes códigos de erro:

Código de retorno Descrição
STATUS_BAD_NETWORK_NAME

O nome da rede não pode ser encontrado. Este erro é retornado se a rede com o endereço IP vizinho estiver inacessível.

STATUS_INVALID_PARAMETER

Um parâmetro inválido foi passado para a função. Este erro é retornado se um ponteiro de NULL for passado no parâmetro de linha, o endereço membro da estrutura de MIB_IPNET_ROW2 para a qual o parâmetro de linha aponta não foi definido como um endereço IPv4 ou IPv6 válido, ou ambos InterfaceLuid e InterfaceIndex membros da estrutura MIB_IPNET_ROW2 não foram especificados. Este erro também é retornado se um endereço de loopback foi passado no endereço membro.

STATUS_NOT_FOUND

A interface especificada não pôde ser encontrada. Este erro é retornado se a função não conseguir encontrar a interface de rede especificada pelo InterfaceLuid ou InterfaceIndex membro da estrutura de MIB_IPNET_ROW2 para a qual o parâmetro Row aponta.

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 tiver sido especificado no Address membro da estrutura MIB_IPNET_ROW2 para a qual o parâmetro Row aponta ou se nenhuma pilha IPv6 estiver localizada no computador local e um endereço IPv6 tiver sido especificado no membro Address.

Outros

Use a função FormatMessage para obter a cadeia de caracteres de mensagem para o erro retornado.

Comentários

A função ResolveIpNetEntry2 é usada para resolver o endereço físico de uma entrada de endereço IP vizinho em um computador local. Essa função libera qualquer entrada vizinha existente que corresponda ao endereço IP na interface e, em seguida, resolve o endereço físico (MAC) enviando solicitações ARP para um endereço IPv4 ou solicitações NS (Neighbor Solicitation) para um endereço IPv6. Se o parâmetro SourceAddress for especificado, ResolveIpNetEntry2 selecionará a interface com esse endereço IP de origem para enviar as solicitações. Se o parâmetro SourceAddress não for especificado ( NULL foi passado nesse parâmetro), ResolveIpNetEntry2 selecionará automaticamente a melhor interface para enviar as solicitações.

O driver deve inicializar os seguintes membros da estrutura de MIB_IPNET_ROW2 para a qual o parâmetro Row aponta.

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

  • InterfaceLuid ou InterfaceIndex
    Esses membros são usados na ordem listada anteriormente. Portanto, se InterfaceLuid for especificado, esse membro será usado para determinar a interface. Se nenhum valor foi definido para o membro InterfaceLuid (o valor desse membro foi definido como zero), o membro InterfaceIndex será usado em seguida para determinar a interface.

Se o endereço IP que é passado no endereço membro da estrutura de MIB_IPNET_ROW2 para a qual o parâmetro Row aponta for uma duplicata de um endereço IP vizinho existente na interface, a função ResolveIpNetEntry2 liberará a entrada existente antes de resolver o endereço IP.

Na saída, quando a chamada é bem-sucedida, ResolveIpNetEntry2 recupera as outras propriedades do endereço IP vizinho e preenche a estrutura MIB_IPNET_ROW2 para a qual o parâmetro Row aponta. Os membros PhysicalAddress e PhysicalAddressLength na estrutura MIB_IPNET_ROW2 são inicializados para um endereço físico válido.

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

CreateIpNetEntry2

DeleteIpNetEntry2

FlushIpNetTable2

GetIpNetEntry2

GetIpNetTable2

MIB_IPNET_ROW2

MIB_IPNET_TABLE2

SetIpNetEntry2