Partilhar via


Função CreateIpForwardEntry2

A função CreateIpForwardEntry2 cria uma nova entrada de rota IP em um computador local.

Sintaxe

NETIOAPI_API CreateIpForwardEntry2(
  _In_ const MIB_IPFORWARD_ROW2 *Row
);

Parâmetros

  • Linha [in]
    Um ponteiro para uma entrada de estrutura MIB_IPFORWARD_ROW2 para uma entrada de rota IP.

Valor de retorno

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

Se a função falhar, CreateIpForwardEntry2 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 ocorrer uma das seguintes situações:

  • Um ponteiro de NULL é passado no parâmetro Row.

  • O DestinationPrefix membro da estrutura de MIB_IPFORWARD_ROW2 para a qual o parâmetro Row aponta não foi especificado.

  • O NextHop membro da estrutura MIB_IPFORWARD_ROW2 não foi especificado.

  • Tanto InterfaceLuid quanto InterfaceIndex membros da estrutura MIB_IPFORWARD_ROW2 não foram especificados.

  • O membro PreferredLifetime da estrutura MIB_IPFORWARD_ROW2 é maior do que o membro ValidLifetime.

  • O SitePrefixLength membro da estrutura MIB_IPFORWARD_ROW2 é maior do que o comprimento do prefixo especificado pelo membro DestinationPrefix.

Este erro é retornado se um ponteiro de NULL é passado no parâmetro de linha, o DestinationPrefix membro da estrutura de MIB_IPFORWARD_ROW2 apontado pelo parâmetro Row não foi especificado, o NextHop membro da estrutura MIB_IPFORWARD_ROW2 não foi especificado, ou ambos InterfaceLuid e InterfaceIndex membros da estrutura MIB_IPFORWARD_ROW2 não foram especificados. Esse erro também será retornado se o membro do PreferredLifetime especificado na estrutura MIB_IPFORWARD_ROW2 for maior que o membro ValidLifetime ou se o SitePrefixLength na estrutura MIB_IPFORWARD_ROW2 for maior do que o comprimento do prefixo especificado no membro DestinationPrefix.

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 é retornado se a interface especificada não suportar rotas. Este erro será retornado se nenhuma pilha IPv4 estiver localizada no computador local e AF_INET foi especificada na família de endereços no DestinationPrefix membro da estrutura de MIB_IPFORWARD_ROW2 para a qual o parâmetro Row aponta ou se nenhuma pilha IPv6 estiver localizada no computador local e AF_INET6 tiver sido especificada para a família de endereços no membro DestinationPrefix.

ERROR_OBJECT_ALREADY_EXISTS

O objeto já existe. Este erro é retornado se o DestinationPrefix membro da estrutura de MIB_IPFORWARD_ROW2 para a qual o parâmetro Row aponta for uma duplicata de uma entrada de rota IP existente na interface especificada pelo InterfaceLuid ou InterfaceIndex membro da estrutura MIB_IPFORWARD_ROW2.

Outros

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

Comentários

A função CreateIpForwardEntry2 é usada para adicionar uma nova entrada de endereço IP vizinho em um computador local. Use a funçãoInitializeIpForwardEntry para inicializar os membros de uma entrada de estrutura MIB_IPFORWARD_ROW2 com valores padrão. Um driver pode alterar os membros na entrada MIB_IPFORWARD_ROW2 que deseja modificar e, em seguida, chamar CreateIpForwardEntry2.

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

  • Defina DestinationPrefix como um prefixo de endereço IPv4 ou IPv6 válido.

  • Defina NextHop para um endereço IPv4 ou IPv6 válido e família.

  • Defina InterfaceLuid ou InterfaceIndex para o valor LUID ou índice da interface.

Os membros InterfaceLuid e InterfaceIndex são usados na ordem listada anteriormente. Portanto, se o InterfaceLuid for especificado, esse membro será usado para determinar a interface na qual adicionar a entrada de rota IP. 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.

O deslocamento da métrica de rota especificado no Metric membro da estrutura de MIB_IPFORWARD_ROW2 que o parâmetro Row aponta representa apenas parte da métrica de rota completa. A métrica completa é uma combinação desse deslocamento da métrica de rota adicionada à métrica de interface especificada na Métrica membro da estrutura MIB_IPINTERFACE_ROW da interface associada. Um driver pode recuperar a métrica da interface chamando a funçãoGetIpInterfaceEntry.

O Age e Origin membros da estrutura de MIB_IPFORWARD_ROW2 para a qual o parâmetro Row aponta são ignorados quando a função CreateIpForwardEntry2 é chamada. Esses membros são definidos pela pilha de rede e não podem ser definidos usando a função CreateIpForwardEntry2.

A função CreateIpForwardEntry2 falhará se o DestinationPrefix e NextHop membros da estrutura de MIB_IPFORWARD_ROW2 para a qual o parâmetro Row aponta são uma duplicata de uma entrada de rota IP existente na interface especificada no InterfaceLuid ou InterfaceIndex membros.

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

DeleteIpForwardEntry2

GetBestRoute2

GetIpForwardEntry2

GetIpForwardTable2

GetIpInterfaceEntry

InitializeIpForwardEntry

MIB_IPFORWARD_ROW2

MIB_IPFORWARD_TABLE2

MIB_IPINTERFACE_ROW

NotifyRouteChange2

SetIpForwardEntry2