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-AdresseAddressSortOptions [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 |