Udostępnij przez


CreateIpForwardEntry2, funkcja

Funkcja CreateIpForwardEntry2 tworzy nowy wpis trasy IP na komputerze lokalnym.

Składnia

NETIOAPI_API CreateIpForwardEntry2(
  _In_ const MIB_IPFORWARD_ROW2 *Row
);

Parametry

Wartość zwracana

createIpForwardEntry2 zwraca STATUS_SUCCESS, jeśli funkcja powiedzie się.

Jeśli funkcja nie powiedzie się, CreateIpForwardEntry2 zwraca jeden z następujących kodów błędów:

Kod powrotny Opis
STATUS_INVALID_PARAMETER

Do funkcji przekazano nieprawidłowy parametr. Ten błąd jest zwracany, jeśli wystąpi jedna z następujących sytuacji:

  • Wskaźnik null jest przekazywany w parametrze wiersza.

  • Nie określono elementu członkowskiego DestinationPrefix struktury MIB_IPFORWARD_ROW2, do którego nie określono parametru wiersza.

  • Nie określono elementu członkowskiego NextHop struktury MIB_IPFORWARD_ROW2.

  • Nie określono zarówno InterfaceLuid, jak i InterfaceIndex składowych struktury MIB_IPFORWARD_ROW2.

  • Element PreferredLifetime struktury MIB_IPFORWARD_ROW2 jest większy niż element członkowski ValidLifetime.

  • Składowa MIB_IPFORWARD_ROW2 SitePrefixLeng th jest większa niż długość prefiksu określona przez element członkowski DestinationPrefix DestinationPrefix.

Ten błąd jest zwracany, jeśli wskaźnik NULL jest przekazywany w parametrze wiersza, nie określono elementu członkowskiego DestinationPrefix struktury MIB_IPFORWARD_ROW2 wskazywanej przez parametr wiersza, nie określono elementu członkowskiego NextHop struktury MIB_IPFORWARD_ROW2, lub oba InterfaceLuid i InterfaceIndex składowych struktury MIB_IPFORWARD_ROW2 nie zostały określone. Ten błąd jest również zwracany, jeśli element członkowski PreferredLife time określony w strukturze MIB_IPFORWARD_ROW2 jest większy niż element członkowski ValidLifetime lub jeśli element członkowski SitePrefixLength w strukturze MIB_IPFORWARD_ROW2 jest większy niż długość prefiksu określona w elementu członkowskiego DestinationPrefix.

STATUS_NOT_FOUND

Nie można odnaleźć określonego interfejsu. Ten błąd jest zwracany, jeśli funkcja nie może odnaleźć interfejsu sieciowego określonego przez InterfaceLuid lub InterfaceIndex elementu członkowskiego struktury MIB_IPNET_ROW2 wskazuje parametr wiersza .

STATUS_NOT_SUPPORTED

Żądanie nie jest obsługiwane. Ten błąd jest zwracany, jeśli określony interfejs nie obsługuje tras. Ten błąd jest zwracany, jeśli na komputerze lokalnym nie znajduje się stos IPv4 i AF_INET został określony w rodzinie adresów w DestinationPrefix elementu członkowskiego MIB_IPFORWARD_ROW2 struktury MIB_IPFORWARD_ROW2, do którego wskazuje wiersz parametr lub jeśli na komputerze lokalnym nie znajduje się żaden stos IPv6 i AF_INET6 został określony dla rodziny adresów w elementu członkowskiego DestinationPrefix.

ERROR_OBJECT_ALREADY_EXISTS

Obiekt już istnieje. Ten błąd jest zwracany, jeśli element członkowski DestinationPrefix struktury MIB_IPFORWARD_ROW2, do którego wskazuje parametr wiersza, jest duplikatem istniejącego wpisu trasy IP w interfejsie określonym przez InterfaceLuid lub InterfaceIndex składowej struktury MIB_IPFORWARD_ROW2.

inne

Użyj funkcji FormatMessage, aby uzyskać ciąg komunikatu dla zwróconego błędu.

Uwagi

Funkcja CreateIpForwardEntry2 służy do dodawania nowego wpisu adresu IP sąsiada na komputerze lokalnym. Użyj funkcji InitializeIpForwardEntry, aby zainicjować elementy członkowskie wpisu struktury MIB_IPFORWARD_ROW2 z wartościami domyślnymi. Sterownik może następnie zmienić elementy członkowskie we wpisie MIB_IPFORWARD_ROW2, który chce zmodyfikować, a następnie wywołać CreateIpForwardEntry2.

Sterownik musi zainicjować następujące elementy członkowskie struktury MIB_IPFORWARD_ROW2, do których wskazuje parametr Row:

  • Ustaw DestinationPrefix na prawidłowy prefiks adresu IPv4 lub IPv6.

  • Ustaw NextHop na prawidłowy adres IPv4 lub IPv6 i rodzinę.

  • Ustaw InterfaceLuid lub InterfaceIndex na wartość LUID lub indeks interfejsu.

Składowe InterfaceLuid i InterfaceIndex są używane w podanej wcześniej kolejności. Dlatego jeśli określono InterfaceLuid, ten element członkowski jest używany do określenia interfejsu w celu dodania wpisu trasy IP. Jeśli nie ustawiono wartości elementu członkowskiego InterfaceLuid (wartość tego elementu członkowskiego została ustawiona na zero), element członkowski InterfaceIndex jest następnie używany do określania interfejsu.

Przesunięcie metryki trasy określone w elemencie Metric struktury MIB_IPFORWARD_ROW2 wskazuje parametr Row wskazuje tylko część pełnej metryki trasy. Metryka kompletna jest kombinacją tego przesunięcia metryki trasy dodanego do metryki interfejsu określonej w elementu członkowskiego Metryka struktury MIB_IPINTERFACE_ROW skojarzonego interfejsu. Sterownik może pobrać metrykę interfejsu, wywołując funkcję GetIpInterfaceEntry.

Elementy członkowskie Age Age i Origin struktury MIB_IPFORWARD_ROW2 są ignorowane , gdy wywoływana jest funkcja createIpForwardEntry2 Row. Te elementy członkowskie są ustawiane przez stos sieciowy i nie można ich ustawić przy użyciu funkcji CreateIpForwardEntry2.

Funkcja CreateIpForwardEntry2 kończy się niepowodzeniem, jeśli DestinationPrefix i NextHop składowych struktury MIB_IPFORWARD_ROW2, do których wskazuje wiersz, są duplikatem istniejącego wpisu trasy IP w interfejsie określonym w InterfaceLuid lub InterfaceIndex elementów członkowskich.

Wymagania

Platforma docelowa

universal

Wersja

Dostępne w systemie Windows Vista i nowszych wersjach systemów operacyjnych Windows.

Nagłówek

Netioapi.h (include Netioapi.h)

Biblioteka

Netio.lib

IRQL

< DISPATCH_LEVEL

Zobacz też

DeleteIpForwardEntry2

GetBestRoute2

GetIpForwardEntry2

GetIpForwardTable2

GetIpInterfaceEntry

InitializeIpForwardEntry

MIB_IPFORWARD_ROW2

MIB_IPFORWARD_TABLE2

MIB_IPINTERFACE_ROW

NotifyRouteChange2

SetIpForwardEntry2