Freigeben über


GetBestRoute2-Funktion

Die GetBestRoute2-Funktion ruft den IP-Routeneintrag auf einem lokalen Computer ab, um die beste Route zur angegebenen Ziel-IP-Adresse zu erhalten.

Syntax

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
);

Parameter

  • InterfaceLuid [in, optional]
    Der lokal eindeutige Bezeichner (LUID), um die Netzwerkschnittstelle anzugeben, die einem IP-Routeneintrag zugeordnet ist.

  • InterfaceIndex [in]
    Der lokale Indexwert, um die Netzwerkschnittstelle anzugeben, die einem IP-Routeneintrag zugeordnet ist. Dieser Indexwert kann sich ändern, wenn ein Netzwerkadapter deaktiviert und dann aktiviert wird, oder unter anderen Umständen, sodass dieser Wert nicht dauerhaft ist.

  • SourceAddress [in, optional]
    Die Quell-IP-Adresse Ihr Treiber kann diesen Parameter weglassen und einen NULL-Zeiger übergeben.

  • DestinationAddress [in]
    Die Ziel-IP-Adresse

  • AddressSortOptions [in]
    Eine Reihe von Optionen, die sich auf die Sortierung von IP-Adressen auswirken. Dieser Parameter wird derzeit nicht verwendet.

  • BestRoute [out]
    Ein Zeiger auf die MIB_IPFORWARD_ROW2 Struktur für die beste Route von der Quell-IP-Adresse zur Ziel-IP-Adresse.

  • BestSourceAddress [out]
    Ein Zeiger auf die beste Quell-IP-Adresse.

Rückgabewert

GetBestRoute2 gibt STATUS_SUCCESS zurück, wenn die Funktion erfolgreich ist.

Wenn die Funktion fehlschlägt, gibt GetBestRoute2 einen der folgenden Fehlercodes zurück:

Rückgabecode Beschreibung
STATUS_INVALID_PARAMETER

Es wurde ein ungültiger Parameter an die Funktion übergeben. Dieser Fehler wird zurückgegeben, wenn ein NULL-Zeiger in den Parametern DestinationAddress, BestSourceAddress oder BestRoute übergeben wird. Dieser Fehler wird auch zurückgegeben, wenn die Parameter InterfaceLuid und InterfaceIndex nicht angegeben wurden. Dieser Fehler wird auch zurückgegeben, wenn der Parameter DestinationAddress keine IPv4- oder IPv6-Adresse und -Familie angibt.

STATUS_NOT_FOUND

Die angegebene Schnittstelle konnte nicht gefunden werden. Dieser Fehler wird zurückgegeben, wenn die Netzwerkschnittstelle, die der Parameter InterfaceLuid oder InterfaceIndex angibt, nicht gefunden werden konnte.

STATUS_NOT_SUPPORTED

Die Anforderung wird nicht unterstützt. Dieser Fehler wird zurückgegeben, wenn sich auf dem lokalen Computer kein IPv4-Stapel befindet und im Parameter DestinationAddress eine IPv4-Adresse und -Familie angegeben wurde oder wenn sich kein IPv6-Stapel auf dem lokalen Computer befindet und im Parameter DestinationAddress eine IPv4-Adresse und -Familie angegeben wurde.

Andere

Verwenden Sie die FormatMessage-Funktion , um die Nachrichtenzeichenfolge für den zurückgegebenen Fehler abzurufen.

Bemerkungen

Die GetBestRoute2-Funktion wird verwendet, um einen MIB_IPFORWARD_ROW2 Struktureintrag für die beste Route von einer Quell-IP-Adresse zu einer Ziel-IP-Adresse abzurufen.

Bei der Eingabe muss Ihr Treiber die folgenden Parameter initialisieren.

  • DestinationAddress
    Legen Sie auf eine gültige IPv4- oder IPv6-Adresse und -Familie fest.

  • InterfaceLuid oder InterfaceIndex
    Diese Parameter werden in der zuvor aufgeführten Reihenfolge verwendet. Wenn also InterfaceLuid angegeben ist, wird dieser Parameter verwendet, um die Schnittstelle zu bestimmen. Wenn kein Wert für das InterfaceLuid-Element festgelegt wurde (der Wert dieses Parameters wurde auf Null festgelegt), wird der Parameter InterfaceIndex als nächstes verwendet, um die Schnittstelle zu bestimmen.

Darüber hinaus kann Ihr Treiber bei der Eingabe den SourceAddress-Parameter für die bevorzugte IPv4- oder IPv6-Adresse und -Familie initialisieren.

Wenn der Aufruf erfolgreich ist, ruft GetBestRoute2 bei der Ausgabe eine MIB_IPFORWARD_ROW2 Struktur für die beste Route von der Quell-IP-Adresse der Ziel-IP-Adresse ab.

Anforderungen

Zielplattform

Universell

Version

Verfügbar in Windows Vista und höheren Versionen der Windows-Betriebssysteme.

Header

Netioapi.h (einschließlich Netioapi.h)

Bibliothek

Netio.lib

IRQL

< DISPATCH_LEVEL

Weitere Informationen

CreateIpForwardEntry2

DeleteIpForwardEntry2

GetIpForwardEntry2

GetIpForwardTable2

InitializeIpForwardEntry

MIB_IPFORWARD_ROW2

MIB_IPFORWARD_TABLE2

NotifyRouteChange2

SetIpForwardEntry2