Udostępnij przez


GetBestRoute2, funkcja

Funkcja GetBestRoute2 pobiera wpis trasy IP na komputerze lokalnym w celu uzyskania najlepszej trasy do określonego docelowego adresu IP.

Składnia

NETIOAPI_API GetBestRoute2(
  _In_opt_       NET_LUID            *InterfaceLuid,
  _In_           NET_IFINDEX         InterfaceIndex,
  _In_opt_ const SOCKADDR_INET       *SourceAddress,
  _In_     const SOCKADDR_INET       *DestinationAddress,
  _In_           ULONG               AddressSortOptions,
  _Out_          PMIB_IPFORWARD_ROW2 BestRoute,
  _Out_          SOCKADDR_INET       *BestSourceAddress
);

Parametry

  • InterfaceLuid [in, opcjonalnie]
    Unikatowy identyfikator lokalnie (LUID) określający interfejs sieciowy skojarzony z wpisem trasy IP.

  • InterfaceIndex [in]
    Wartość indeksu lokalnego określająca interfejs sieciowy skojarzony z wpisem trasy IP. Ta wartość indeksu może ulec zmianie, gdy karta sieciowa jest wyłączona, a następnie włączona lub w innych okolicznościach, więc ta wartość nie jest trwała.

  • SourceAddress [in, opcjonalnie]
    Źródłowy adres IP. Sterownik może pominąć ten parametr i przekazać wskaźnik null.

  • DestinationAddress [in]
    Docelowy adres IP.

  • AddressSortOptions [in]
    Zestaw opcji wpływających na sposób sortowania adresów IP. Ten parametr nie jest obecnie używany.

  • bestRoute [out]
    Wskaźnik do struktury MIB_IPFORWARD_ROW2 dla najlepszej trasy ze źródłowego adresu IP do docelowego adresu IP.

  • BestSourceAddress [out]
    Wskaźnik do najlepszego źródłowego adresu IP.

Wartość zwracana

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

Jeśli funkcja nie powiedzie się, getBestRoute2 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 wskaźnik o wartości null jest przekazywany w parametrach DestinationAddress, BestSourceAddresslub parametrów BestRoute. Ten błąd jest również zwracany, jeśli parametry InterfaceLuid i InterfaceIndex nie zostały określone. Ten błąd jest również zwracany, jeśli parametr DestinationAddress nie określa adresu IPv4 lub IPv6 i rodziny

STATUS_NOT_FOUND

Nie można odnaleźć określonego interfejsu. Ten błąd jest zwracany, jeśli nie można odnaleźć interfejsu sieciowego InterfaceLuid lub InterfaceIndex parametru.

STATUS_NOT_SUPPORTED

Żądanie nie jest obsługiwane. Ten błąd jest zwracany, jeśli żaden stos IPv4 nie znajduje się na komputerze lokalnym, a adres IPv4 i rodzina została określona w parametrze DestinationAddress lub jeśli żaden stos IPv6 nie znajduje się na komputerze lokalnym, a adres IPv4 i rodzina została określona w parametrze DestinationAddress.

inne

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

Uwagi

Funkcja GetBestRoute2 służy do pobierania wpisu struktury MIB_IPFORWARD_ROW2 dla najlepszej trasy ze źródłowego adresu IP do docelowego adresu IP.

W danych wejściowych sterownik musi zainicjować następujące parametry.

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

  • InterfaceLuid lub InterfaceIndex
    Te parametry są używane w kolejności wymienionej wcześniej. Dlatego jeśli określono InterfaceLuid, ten parametr jest używany do określania interfejsu. Jeśli dla elementu członkowskiego InterfaceLuid nie ustawiono żadnej wartości (wartość tego parametru została ustawiona na zero), parametr InterfaceIndex zostanie użyty do określenia interfejsu.

Ponadto na danych wejściowych sterownik może zainicjować parametr SourceAddress do preferowanego adresu IPv4 lub IPv6 i rodziny.

Po pomyślnym wywołaniu GetBestRoute2 pobiera strukturę MIB_IPFORWARD_ROW2 dla najlepszej trasy ze źródłowego adresu IP docelowego adresu IP.

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ż

CreateIpForwardEntry2

DeleteIpForwardEntry2

GetIpForwardEntry2

GetIpForwardTable2

InitializeIpForwardEntry

MIB_IPFORWARD_ROW2

MIB_IPFORWARD_TABLE2

NotifyRouteChange2

SetIpForwardEntry2