Condividi tramite


Funzione CreateIpForwardEntry2

La funzione CreateIpForwardEntry2 crea una nuova voce di route IP in un computer locale.

Sintassi

NETIOAPI_API CreateIpForwardEntry2(
  _In_ const MIB_IPFORWARD_ROW2 *Row
);

Parametri

  • riga [in]
    Puntatore a una voce di struttura MIB_IPFORWARD_ROW2 per una voce di route IP.

Valore restituito

CreateIpForwardEntry2 restituisce STATUS_SUCCESS se la funzione ha esito positivo.

Se la funzione non riesce, CreateIpForwardEntry2 restituisce uno dei codici di errore seguenti:

Codice restituito Descrizione
STATUS_INVALID_PARAMETER

Alla funzione è stato passato un parametro non valido. Questo errore viene restituito se si verifica una delle situazioni seguenti:

  • Viene passato un puntatore NULL nel parametro Row.

  • Il membro DestinationPrefix della struttura di MIB_IPFORWARD_ROW2 a cui non è stato specificato il parametro Row.

  • Il membro NextHop della struttura MIB_IPFORWARD_ROW2 non è stato specificato.

  • Sia InterfaceLuid che InterfaceIndex membri della struttura MIB_IPFORWARD_ROW2 non sono stati specificati.

  • Il membro preferredLifetime della struttura di MIB_IPFORWARD_ROW2 è maggiore del membro ValidLifetime.

  • Il membro SitePrefixLength della struttura MIB_IPFORWARD_ROW2 è maggiore della lunghezza del prefisso specificata dal membro DestinationPrefix.

Questo errore viene restituito se un puntatore NULL viene passato nel parametro Row, il membro DestinationPrefix della struttura MIB_IPFORWARD_ROW2 a cui punta il parametro Row non è stato specificato, il membro NextHop della struttura MIB_IPFORWARD_ROW2 non è stato specificato, o entrambi InterfaceLuid e InterfaceIndex membri della struttura di MIB_IPFORWARD_ROW2 non sono stati specificati. Questo errore viene restituito anche se il membro PreferredLifetime specificato nella struttura MIB_IPFORWARD_ROW2 è maggiore del membro ValidLifetime oppure se il SitePrefixLength nella struttura MIB_IPFORWARD_ROW2 è maggiore della lunghezza del prefisso specificata nel membro DestinationPrefix.

STATUS_NOT_FOUND

Impossibile trovare l'interfaccia specificata. Questo errore viene restituito se la funzione non riesce a trovare l'interfaccia di rete specificata dal InterfaceLuid o InterfaceIndex membro della struttura MIB_IPNET_ROW2 a cui punta il parametro Row.

STATUS_NOT_SUPPORTED

La richiesta non è supportata. Questo errore viene restituito se l'interfaccia specificata non supporta le route. Questo errore viene restituito se non si trova alcun stack IPv4 nel computer locale e AF_INET è stato specificato nella famiglia di indirizzi nel DestinationPrefix membro della struttura MIB_IPFORWARD_ROW2 a cui punta il parametro riga oppure se non si trova alcun stack IPv6 nel computer locale e AF_INET6 è stato specificato per la famiglia di indirizzi nel membro DestinationPrefix.

ERROR_OBJECT_ALREADY_EXISTS

L'oggetto esiste già. Questo errore viene restituito se il DestinationPrefix membro della struttura MIB_IPFORWARD_ROW2 a cui punta il parametro Row è un duplicato di una voce di route IP esistente nell'interfaccia specificata dal InterfaceLuid o InterfaceIndex membro della struttura MIB_IPFORWARD_ROW2.

Altro

Usare la funzione FormatMessage per ottenere la stringa del messaggio per l'errore restituito.

Osservazioni

La funzione CreateIpForwardEntry2 viene usata per aggiungere una nuova voce di indirizzo IP adiacente in un computer locale. Utilizzare la funzione InitializeIpForwardEntry per inizializzare i membri di una voce di struttura MIB_IPFORWARD_ROW2 con valori predefiniti. Un driver può quindi modificare i membri nella voce di MIB_IPFORWARD_ROW2 che vuole modificare e quindi chiamare CreateIpForwardEntry2.

Il driver deve inizializzare i membri seguenti della struttura di MIB_IPFORWARD_ROW2 a cui punta il parametro Row:

  • Impostare DestinationPrefix su un prefisso di indirizzo IPv4 o IPv6 valido.

  • Impostare NextHop su un indirizzo e una famiglia IPv4 o IPv6 validi.

  • Impostare InterfaceLuid o InterfaceIndex sul valore di indice o LUID dell'interfaccia.

I membri InterfaceLuid e InterfaceIndex vengono usati nell'ordine elencato in precedenza. Pertanto, se viene specificato il InterfaceLuid, questo membro viene usato per determinare l'interfaccia in cui aggiungere la voce di route IP. Se non è stato impostato alcun valore per il membro InterfaceLuid (il valore di questo membro è stato impostato su zero), il membro InterfaceIndex viene usato successivamente per determinare l'interfaccia.

Offset della metrica di route specificato nel membro metrica della struttura MIB_IPFORWARD_ROW2 a cui punta il parametro riga rappresenta solo parte della metrica di route completa. La metrica completa è una combinazione di questo offset delle metriche di route aggiunto alla metrica dell'interfaccia specificata nel membro metrica della struttura MIB_IPINTERFACE_ROW dell'interfaccia associata. Un driver può recuperare la metrica dell'interfaccia chiamando la funzione GetIpInterfaceEntry.

I membri Age e Origin della struttura MIB_IPFORWARD_ROW2 a cui punta il parametro Row vengono ignorati quando viene chiamata la funzione CreateIpForwardEntry2. Questi membri vengono impostati dallo stack di rete e non possono essere impostati usando la funzione CreateIpForwardEntry2.

La funzione CreateIpForwardEntry2 ha esito negativo se la DestinationPrefix e i membri NextHop della struttura MIB_IPFORWARD_ROW2 a cui punta il parametro Row sono duplicati di una voce di route IP esistente nell'interfaccia specificata nell'interfaccia InterfaceLuid o InterfaceIndex.

Fabbisogno

Piattaforma di destinazione

universale

Versione

Disponibile in Windows Vista e versioni successive dei sistemi operativi Windows.

Intestazione

Netioapi.h (include Netioapi.h)

Biblioteca

Netio.lib

IRQL

< DISPATCH_LEVEL

Vedere anche

DeleteIpForwardEntry2

GetBestRoute2

GetIpForwardEntry2

GetIpForwardTable2

GetIpInterfaceEntry

InitializeIpForwardEntry

MIB_IPFORWARD_ROW2

MIB_IPFORWARD_TABLE2

MIB_IPINTERFACE_ROW

NotifyRouteChange2

SetIpForwardEntry2