SetIpInterfaceEntry-Funktion
Die SetIpInterfaceEntry-Funktion legt die Eigenschaften einer IP-Schnittstelle auf einem lokalen Computer fest.
Syntax
NETIOAPI_API SetIpInterfaceEntry(
_Inout_ PMIB_IPINTERFACE_ROW Row
);
Parameter
- Zeile [ein, aus]
Ein Zeiger auf einen MIB_IPINTERFACE_ROW Struktureintrag für eine Schnittstelle. Bei der Eingabe muss Ihr Treiber das Familienmitglied des MIB_IPINTERFACE_ROW auf AF_INET6 oder AF_INET festlegen, und Ihr Treiber muss das InterfaceLuid-Element oder das InterfaceIndex-Element von MIB_IPINTERFACE_ROW angeben. Bei erfolgreicher Rückgabe wird das InterfaceLuid-Element des MIB_IPINTERFACE_ROW ausgefüllt, wenn das InterfaceIndex-Element des MIB_IPINTERFACE_ROW Eintrags angegeben wurde.
Rückgabewert
SetIpInterfaceEntry gibt STATUS_SUCCESS zurück, wenn die Funktion erfolgreich ist.
Wenn die Funktion fehlschlägt, gibt SetIpInterfaceEntry 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 im Row-Parameter übergeben wird, das Family-Element der MIB_IPINTERFACE_ROW-Struktur , auf die der Row-Parameter verweist, nicht als AF_INET oder AF_INET6 angegeben wurde, oder wenn interfaceLuid - und InterfaceIndex-Member der MIB_IPINTERFACE_ROW-Struktur nicht angegeben wurden. |
STATUS_NOT_FOUND | Die angegebene Schnittstelle konnte nicht gefunden werden. Dieser Fehler wird zurückgegeben, wenn die Funktion die Netzwerkschnittstelle nicht finden kann, die vom InterfaceLuid- oder InterfaceIndex-Member der MIB_IPINTERFACE_ROW Struktur angegeben wird, auf die der Row-Parameter verweist. |
Andere | Verwenden Sie die FormatMessage-Funktion , um die Nachrichtenzeichenfolge für den zurückgegebenen Fehler abzurufen. |
Bemerkungen
Ihr Treiber muss die InitializeIpInterfaceEntry-Funktion verwenden, um die Felder eines MIB_IPINTERFACE_ROW Struktureintrags mit Standardwerten zu initialisieren. Ein Treiber kann dann die Felder im MIB_IPINTERFACE_ROW Eintrag ändern, den er ändern möchte, und dann die SetIpInterfaceEntry-Funktion aufrufen.
Bei der Eingabe muss ihr Treiber die folgenden Member der MIB_IPINTERFACE_ROW-Struktur initialisieren, auf die der Row-Parameter verweist.
Familie
Legen Sie entweder AF_INET oder AF_INET6 fest.InterfaceLuid oder InterfaceIndex
Diese Member werden in der zuvor aufgeführten Reihenfolge verwendet. Wenn also InterfaceLuid angegeben ist, wird dieses Element verwendet, um die Schnittstelle zu bestimmen. Wenn kein Wert für das InterfaceLuid-Element festgelegt wurde (der Wert dieses Members wurde auf Null festgelegt), wird das InterfaceIndex-Element als nächstes verwendet, um die Schnittstelle zu bestimmen.
Bei der Ausgabe wird das InterfaceLuid-Element der MIB_IPINTERFACE_ROW Struktur, auf die der Row-Parameter verweist, ausgefüllt, wenn der InterfaceIndex angegeben wurde.
SetIpInterfaceEntry ignoriert die Elemente MaxReassemblySize, MinRouterAdvertisementInterval, MaxRouterAdvertisementInterval, Connected, SupportsWakeUpPatterns, SupportsNeighborDiscovery, SupportsRouterDiscovery, ReachableTime, TransmitOffload und ReceiveOffload der MIB_IPINTERFACE_ROW Struktur, auf die der Row-Parameter verweist. Diese Elemente werden vom Netzwerkstapel festgelegt und können nicht mithilfe der Funktion SetIpInterfaceEntry geändert werden.
Ein nicht privilegierter gleichzeitiger Zugriff auf mehrere Netzwerke mit unterschiedlichen Sicherheitsanforderungen verursacht eine Sicherheitslücke und ermöglicht es einem nicht privilegierten Treiber, Daten versehentlich zwischen den beiden Netzwerken weiterzu leiten. Ein typisches Beispiel ist der gleichzeitige Zugriff auf ein virtuelles privates Netzwerk (VPN) und das Internet. Die Betriebssysteme Windows Server 2003 und Windows XP verwenden ein schwaches Hostmodell, bei dem ras (Ras) einen solchen gleichzeitigen Zugriff verhindert, indem die Routenmetrik aller Standardrouten über andere Schnittstellen erhöht wird. Daher wird der gesamte Datenverkehr über die VPN-Schnittstelle weitergeleitet, was die andere Netzwerkkonnektivität beeinträchtigt.
Unter Windows Vista und höheren Versionen der Windows-Betriebssysteme wird standardmäßig ein starkes Hostmodell verwendet. Wenn bei der Routensuche mithilfe der GetBestRoute2-Funktion eine Quell-IP-Adresse angegeben wird, ist die Routensuche auf die Schnittstelle der Quell-IP-Adresse beschränkt. Die Änderung der Routenmetrik durch RAS hat keine Auswirkungen, da die Liste der potenziellen Routen nicht einmal die Route für die VPN-Schnittstelle enthält, die Datenverkehr zum Internet ermöglicht. Ihr Treiber kann das DisableDefaultRoutes-Element der MIB_IPINTERFACE_ROW-Struktur verwenden, um die Standardroute für eine Schnittstelle zu deaktivieren. VPN-Clients können diesen Member als Sicherheitsmaßnahme verwenden, um geteiltes Tunneling einzuschränken, wenn split Tunneling vom VPN-Client nicht erforderlich ist. Ein VPN-Client kann die SetIpInterfaceEntry-Funktion aufrufen, um den DisableDefaultRoutes-Member bei Bedarf auf TRUE festzulegen. Ein VPN-Client kann den aktuellen Zustand des DisableDefaultRoutes-Members abfragen, indem er die GetIpInterfaceEntry-Funktion aufruft .
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 |