NotifyStableUnicastIpAddressTable-Funktion
Die NotifyStableUnicastIpAddressTable-Funktion ruft die stabile Unicast-IP-Adresstabelle auf einem lokalen Computer ab.
Syntax
NETIOAPI_API NotifyStableUnicastIpAddressTable(
_In_ ADDRESS_FAMILY Family,
_Out_ PMIB_UNICASTIPADDRESS_TABLE *Table,
_In_ PSTABLE_UNICAST_IPADDRESS_TABLE_CALLBACK CallerCallback,
_In_ PVOID CallerContext,
_Inout_ HANDLE *NotificationHandle
);
Parameter
Familie [in]
Die abzurufende Adressfamilie.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, ruft die Funktion die stabile Unicast-IP-Adresstabelle ab, die nur IPv4-Einträge enthält.AF_INET6
Die IPv6-Adressfamilie. Wenn dieser Wert angegeben wird, ruft die Funktion die stabile Unicast-IP-Adresstabelle ab, die nur IPv6-Einträge enthält.AF_UNSPEC
Die Adressfamilie ist nicht angegeben. Wenn dieser Wert angegeben wird, ruft die Funktion die stabile Unicast-IP-Adresstabelle ab, die sowohl IPv4- als auch IPv6-Einträge enthält.
Tabelle [out]
Ein Zeiger auf eine MIB_UNICASTIPADDRESS_TABLE-Struktur . Wenn NotifyStableUnicastIpAddressTable erfolgreich ist, gibt dieser Parameter die stabile Unicast-IP-Adresstabelle auf dem lokalen Computer zurück.Wenn NotifyStableUnicastIpAddressTable ERROR_IO_PENDING zurückgibt, was angibt, dass die E/A-Anforderung aussteht, wird die Tabelle der stabilen Unicast-IP-Adresse an die Funktion im CallerCallback-Parameter zurückgegeben.
CallerCallback [in]
Ein Zeiger auf die Funktion, die mit der Stabilen Unicast-IP-Adresstabelle aufgerufen werden soll. Diese Funktion wird aufgerufen, wenn NotifyStableUnicastIpAddressTable ERROR_IO_PENDING zurückgibt, was angibt, dass die E/A-Anforderung ausstehend ist.CallerContext [in]
Ein Benutzerkontext, der an die Rückruffunktion übergeben wird, die im CallerCallback-Parameter angegeben wird, wenn die Tabelle für stabile Unicast-IP-Adressen verfügbar ist.NotificationHandle [ein, aus]
Ein Zeiger, der verwendet wird, um ein Handle zurückzugeben, das Ihr Treiber verwenden kann, um die Anforderung zum Abrufen der stabilen Unicast-IP-Adresstabelle abzubrechen. Dieser Parameter wird zurückgegeben, wenn der Rückgabewert von NotifyStableUnicastIpAddressTable ERROR_IO_PENDING ist, was angibt, dass die E/A-Anforderung aussteht.
Rückgabewert
NotifyStableUnicastIpAddressTable gibt STATUS_SUCCESS zurück, und die stabile Unicast-IP-Tabelle wird im Table-Parameter zurückgegeben, wenn die Funktion sofort erfolgreich ist.
Wenn die E/A-Anforderung aussteht, gibt die Funktion ERROR_IO_PENDING zurück, und die Funktion, auf die der CallerCallback-Parameter verweist, wird aufgerufen, wenn die E/A-Anforderung mit der stabilen Unicast-IP-Adresstabelle abgeschlossen wurde.
Wenn die Funktion fehlschlägt, gibt NotifyStableUnicastIpAddressTable 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 Table-Parameter ein NULL-Zeiger war, der NotificationHandle-Parameter ein NULL-Zeiger war oder der Family-Parameter weder AF_INET, AF_INET6 noch AF_UNSPEC war. |
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
Alle Unicast-IP-Adressen mit Ausnahme von Dial-on-Demand-Adressen gelten nur dann als stabil, wenn sie sich im bevorzugten Zustand befinden. Bei einem normalen Unicast-IP-Adresseintrag entspricht dieser Zustand einem DadState-Member des MIB_UNICASTIPADDRESS_ROW für die IP-Adresse, die auf IpDadStatePreferred festgelegt ist. Jede Dial-on-Demand-Adresse definiert ihre eigene Stabilitätsmetrik. Derzeit ist die einzige Dial-on-Demand-Adresse, die von der NotifyStableUnicastIpAddressTable-Funktion berücksichtigt wird, die Unicast-IP-Adresse, die der Teredo-Client auf dem lokalen Computer verwendet.
Ihr Treiber muss den Family-Parameter auf AF_INET, AF_INET6 oder AF_UNSPEC festlegen.
Wenn NotifyStableUnicastIpAddressTable erfolgreich ist und STATUS_SUCCESS zurückgibt, gibt der Table-Parameter die stabile Unicast-IP-Adresstabelle auf dem lokalen Computer zurück.
Wenn NotifyStableUnicastIpAddressTable ERROR_IO_PENDING zurückgibt, was angibt, dass die E/A-Anforderung aussteht, wird die Tabelle der stabilen Unicast-IP-Adresse an die Funktion im CallerCallback-Parameter zurückgegeben.
Wenn die von Teredo verwendete Unicast-IP-Adresse auf dem lokalen Computer verfügbar ist, sich jedoch nicht im stabilen (qualifizierten) Zustand befindet, gibt NotifyStableUnicastIpAddressTable ERROR_IO_PENDING zurück, und die stabile Unicast-IP-Adresstabelle wird schließlich zurückgegeben, indem die Funktion im CallerCallback-Parameter aufgerufen wird. Wenn die Teredo-Adresse nicht verfügbar ist oder sich im stabilen Zustand befindet und sich die anderen Unicast-IP-Adressen in einem stabilen Zustand befinden, wird die Funktion im CallerCallback-Parameter nie aufgerufen.
Die Rückruffunktion, die im CallerCallback-Parameter angegeben ist, sollte als Funktion vom Typ 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 NotifyStableUnicastIpAddressTable-Funktion übergeben wird, wenn der Treiber für Benachrichtigungen registriert wird. |
IN PMIB_UNICASTIPADDRESS_TABLE AddressTable |
Ein Zeiger auf eine MIB_UNICASTIPADDRESS_TABLE-Struktur , die die stabile Unicast-IP-Adresstabelle auf dem lokalen Computer enthält. |
Die NotifyStableUnicastIpAddressTable-Funktion wird hauptsächlich von Treibern verwendet, die den Teredo-Client verwenden.
Um die Benachrichtigung nach Abschluss des Rückrufs abzubrechen, rufen Sie die Funktion CancelMibChangeNotify2 auf, und übergeben Sie den NotificationHandle-Parameter , den NotifyStableUnicastIpAddressTable 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 |