Función CreateIpForwardEntry2 (netioapi.h)

La función CreateIpForwardEntry2 crea una nueva entrada de ruta IP en el equipo local.

Sintaxis

IPHLPAPI_DLL_LINKAGE _NETIOAPI_SUCCESS_ NETIOAPI_API CreateIpForwardEntry2(
  [in] const MIB_IPFORWARD_ROW2 *Row
);

Parámetros

[in] Row

Puntero a una entrada de estructura MIB_IPFORWARD_ROW2 para una entrada de ruta IP.

Valor devuelto

Si la función se realiza correctamente, el valor devuelto es NO_ERROR.

Si se produce un error en la función, el valor devuelto es uno de los siguientes códigos de error.

Código devuelto Descripción
ERROR_ACCESS_DENIED
Acceso denegado. Este error se devuelve en varias condiciones que incluyen lo siguiente: el usuario carece de los privilegios administrativos necesarios en el equipo local o la aplicación no se ejecuta en un shell mejorado como administrador integrado (administrador de RunAs).
ERROR_INVALID_PARAMETER
Se pasó un parámetro no válido a la función. Este error se devuelve si no se ha especificado un puntero NULL en el parámetro Row , no se especificó el miembro DestinationPrefix del MIB_IPFORWARD_ROW2 al que apunta el parámetro Row , no se especificó el miembro NextHop del MIB_IPFORWARD_ROW2 al que apunta el parámetro Row o los miembros InterfaceLuid o InterfaceIndex del MIB_IPFORWARD_ROW2 señalados por el parámetro Row . el parámetro no se especificó. Este error también se devuelve si el miembro PreferredLifetime especificado en el MIB_IPFORWARD_ROW2 es mayor que el miembro ValidLifetime o si sitePrefixLength en el MIB_IPFORWARD_ROW2 es mayor que la longitud del prefijo especificada en destinationPrefix.
ERROR_NOT_FOUND
No se encontró la interfaz especificada. Este error se devuelve si no se encontró la interfaz de red especificada por el miembro InterfaceLuid o InterfaceIndex del MIB_IPNET_ROW2 al que apunta el parámetro Row .
ERROR_NOT_SUPPORTED
No se admite la solicitud. Este error se devuelve si la interfaz especificada no admite rutas. Este error también se devuelve si no hay ninguna pila IPv4 en el equipo local y AF_INET se especificó en la familia de direcciones en el miembro DestinationPrefix del MIB_IPFORWARD_ROW2 señalado por el parámetro Row . Este error también se devuelve si no hay ninguna pila IPv6 en el equipo local y AF_INET6 se especificó para la familia de direcciones en el miembro DestinationPrefix .
ERROR_OBJECT_ALREADY_EXISTS
El objeto ya existe. Este error se devuelve si el miembro DestinationPrefix del MIB_IPFORWARD_ROW2 al que apunta el parámetro Row es un duplicado de una entrada de ruta IP existente en la interfaz especificada por el miembro InterfaceLuid o InterfaceIndex del MIB_IPFORWARD_ROW2.
Otros
Use FormatMessage para obtener la cadena de mensaje del error devuelto.

Comentarios

La función CreateIpForwardEntry2 se define en Windows Vista y versiones posteriores.

La función CreateIpForwardEntry2 se usa para agregar una nueva entrada de dirección IP vecina en un equipo local. La función InitializeIpForwardEntry debe usarse para inicializar los miembros de una entrada de estructura de MIB_IPFORWARD_ROW2 con valores predeterminados. Después, una aplicación puede cambiar los miembros de la entrada MIB_IPFORWARD_ROW2 que desea modificar y, a continuación, llamar a la función CreateIpForwardEntry2 .

El miembro DestinationPrefix de la estructura MIB_IPFORWARD_ROW2 a la que apunta el parámetro Row debe inicializarse en un prefijo de dirección IPv4 o IPv6 válido. El miembro NextHop de la estructura MIB_IPFORWARD_ROW2 a la que apunta el parámetro Row debe inicializarse en una dirección y familia IPv4 o IPv6 válida. Además, al menos uno de los siguientes miembros de la estructura MIB_IPFORWARD_ROW2 apunta al parámetro Row debe inicializarse en la interfaz: InterfaceLuid o InterfaceIndex.

Los campos se usan en el orden indicado anteriormente. Por lo tanto, si se especifica InterfaceLuid , este miembro se usa para determinar la interfaz en la que se va a agregar la entrada de ruta IP. Si no se estableció ningún valor para el miembro InterfaceLuid (los valores de este miembro se establecieron en cero), el miembro InterfaceIndex se usa a continuación para determinar la interfaz.

El desplazamiento de la métrica de ruta especificado en el miembro Métrica de la estructura MIB_IPFORWARD_ROW2 a la que apunta el parámetro Row representa solo parte de la métrica de ruta completa. La métrica completa es una combinación de este desplazamiento de métrica de ruta agregado a la métrica de interfaz especificada en el miembro Métrica de la estructura MIB_IPINTERFACE_ROW de la interfaz asociada. Una aplicación puede recuperar la métrica de interfaz llamando a la función GetIpInterfaceEntry .

Los miembros Age y Origin de la estructura MIB_IPFORWARD_ROW2a la que apunta row se omiten cuando se llama a la función CreateIpForwardEntry2 . Estos miembros se establecen mediante la pila de red y no se pueden establecer mediante la función CreateIpForwardEntry2 .

Se producirá un error en la función CreateIpForwardEntry2 si los miembros DestinationPrefix y NextHop del MIB_IPFORWARD_ROW2 señalados por el parámetro Row son duplicados de una entrada de ruta IP existente en la interfaz especificada en los miembros InterfaceLuid o InterfaceIndex .

Un usuario que ha iniciado sesión como miembro del grupo Administradores solo puede llamar a la función CreateIpForwardEntry2 . Si un usuario llama a CreateIpForwardEntry2 que no es miembro del grupo Administradores, se producirá un error en la llamada a la función y se devolverá ERROR_ACCESS_DENIED . Esta función también puede producir un error debido al control de cuentas de usuario (UAC) en Windows Vista y versiones posteriores. Si un usuario inicia sesión como miembro del grupo Administradores que no sea el administrador integrado, esta llamada producirá un error a menos que la aplicación se haya marcado en el archivo de manifiesto con un valor requestedExecutionLevel establecido en requireAdministrator. Si la aplicación carece de este archivo de manifiesto, un usuario que inició sesión como miembro del grupo Administradores que no sea el administrador integrado debe ejecutar la aplicación en un shell mejorado como administrador integrado (administrador de RunAs) para que esta función se realice correctamente.

Requisitos

Requisito Value
Cliente mínimo compatible Windows Vista [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2008 [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado netioapi.h (incluya Iphlpapi.h)
Library Iphlpapi.lib
Archivo DLL Iphlpapi.dll

Consulte también

DeleteIpForwardEntry2

GetBestRoute2

GetIpForwardEntry2

GetIpForwardTable2

GetIpInterfaceEntry

InitializeIpForwardEntry

MIB_IPFORWARD_ROW2

MIB_IPFORWARD_TABLE2

MIB_IPINTERFACE_ROW

NotifyRouteChange2

SetIpForwardEntry2