NotifyIpInterfaceChange-Funktion
Die NotifyIpInterfaceChange-Funktion registriert den Treiber für Änderungen an allen IP-Schnittstellen, IPv4-Schnittstellen oder IPv6-Schnittstellen auf einem lokalen Computer.
Syntax
NETIOAPI_API NotifyIpInterfaceChange(
_In_ ADDRESS_FAMILY Family,
_In_ PIPINTERFACE_CHANGE_CALLBACK Callback,
_In_ PVOID CallerContext,
_In_ BOOLEAN InitialNotification,
_Inout_ HANDLE *NotificationHandle
);
Parameter
Familie [in]
Die Adressfamilie, für die der Treiber für Änderungsbenachrichtigungen registriert werden soll.Mögliche Werte für die Adressfamilie sind in der Headerdatei Winsock2.h aufgeführt. Beachten Sie, dass die Werte für die AF_ Adressfamilie und PF_ Protokollfamilienkonstanten identisch sind (z. B. AF_INET und PF_INET), sodass Sie beide Konstanten verwenden können.
Unter Windows Vista und höheren Versionen der Windows-Betriebssysteme werden mögliche Werte für den Family-Parameter in der Ws2def.h-Headerdatei definiert. Beachten Sie, dass die Ws2def.h-Headerdatei automatisch in Netioapi.h enthalten ist und Sie Ws2def.h niemals direkt verwenden sollten.
Die folgenden Werte werden derzeit für die Adressfamilie unterstützt:
AF_INET
Die IPv4-Adressfamilie. Wenn dieser Wert angegeben wird, registriert diese Funktion den Treiber nur für IPv4-Änderungsbenachrichtigungen.AF_INET6
Die IPv6-Adressfamilie. Wenn dieser Wert angegeben wird, registriert diese Funktion den Treiber nur für IPv6-Änderungsbenachrichtigungen.AF_UNSPEC
Die Adressfamilie ist nicht angegeben. Wenn dieser Wert angegeben wird, registriert diese Funktion den Treiber für IPv4- und IPv6-Änderungen.
Rückruf [in]
Ein Zeiger auf die Funktion, die bei einer Änderung aufgerufen werden soll. Diese Funktion wird aufgerufen, wenn eine Schnittstellenbenachrichtigung empfangen wird.CallerContext [in]
Ein Benutzerkontext, der an die Rückruffunktion übergeben wird, die im Rückrufparameter angegeben wird, wenn eine Schnittstellenbenachrichtigung empfangen wird.InitialNotification [in]
Ein Wert, der angibt, ob der Rückruf unmittelbar nach Abschluss der Registrierung für änderungsbenachrichtigungen aufgerufen werden soll. Diese anfängliche Benachrichtigung weist nicht darauf hin, dass eine Änderung an einer IP-Schnittstelle aufgetreten ist. Der Zweck dieses Parameters, um die Bestätigung zu geben, dass der Rückruf registriert ist.NotificationHandle [ein, aus]
Ein Zeiger, der verwendet wird, um ein Handle zurückzugeben, das später zum Aufheben der Registrierung der Änderungsbenachrichtigung verwendet werden kann. Bei erfolgreicher Ausführung wird in diesem Parameter ein Benachrichtigungshandle zurückgegeben. Wenn ein Fehler auftritt, wird NULL zurückgegeben.
Rückgabewert
NotifyIpInterfaceChange gibt STATUS_SUCCESS zurück, wenn die Funktion erfolgreich ist.
Wenn die Funktion fehlschlägt, gibt NotifyIpInterfaceChange einen der folgenden Fehlercodes zurück:
Rückgabecode | Beschreibung |
---|---|
ERROR_INVALID_HANDLE | Es ist ein interner Fehler aufgetreten, bei dem ein ungültiges Handle aufgetreten ist. |
STATUS_INVALID_PARAMETER | Es wurde ein ungültiger Parameter an die Funktion übergeben. Dieser Fehler wird zurückgegeben, wenn der Family-Parameter weder AF_INET, AF_INET6 noch AF_UNSPEC wurde. |
STATUS_NOT_ENOUGH_MEMORY | Es war nicht genügend Arbeitsspeicher vorhanden. |
Andere | Verwenden Sie die FormatMessage-Funktion , um die Nachrichtenzeichenfolge für den zurückgegebenen Fehler abzurufen. |
Bemerkungen
Ihr Treiber muss den Family-Parameter auf AF_INET, AF_INET6 oder AF_UNSPEC festlegen.
Der Aufruf der Rückruffunktion, die im Rückrufparameter angegeben ist, wird serialisiert. Die Rückruffunktion sollte als Funktion des Typs VOID definiert werden. Zu den Parametern, die an die Rückruffunktion übergeben werden, gehören folgendes:
Parameter | BESCHREIBUNG |
---|---|
IN PVOID CallerContext |
Der CallerContext-Parameter , der an die NotifyIpInterfaceChange-Funktion übergeben wird, wenn der Treiber für Änderungsbenachrichtigungen registriert wird. |
IN PMIB_IPINTERFACE_ROW Zeile OPTIONAL |
Ein Zeiger auf den MIB_IPINTERFACE_ROW Eintrag für die geänderte Schnittstelle. Dieser Parameter ist ein NULL-Zeiger , wenn der MIB_NOTIFICATION_TYPE Wert, der im NotificationType-Parameter an die Rückruffunktion übergeben wird, auf MibInitialNotification festgelegt ist. Diese Situation kann nur auftreten, wenn der InitialNotification-Parameter , der an NotifyIpInterfaceChange übergeben wird, beim Registrieren des Treibers für Änderungsbenachrichtigungen auf TRUE festgelegt wurde. |
IN MIB_NOTIFICATION_TYPE NotificationType |
Der Benachrichtigungstyp. Dieser Member kann einer der Werte aus dem MIB_NOTIFICATION_TYPE Enumerationstyp sein. |
Um die Registrierung des Treibers für Änderungsbenachrichtigungen aufzuheben, rufen Sie die Funktion CancelMibChangeNotify2 auf, und übergeben Sie den NotificationHandle-Parameter , den NotifyIpInterfaceChange zurückgibt.
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 |