Freigeben über


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

Weitere Informationen

CancelMibChangeNotify2

CreateUnicastIpAddressEntry

DeleteUnicastIpAddressEntry

GetTeredoPort

GetUnicastIpAddressEntry

GetUnicastIpAddressTable

InitializeUnicastIpAddressEntry

MIB_NOTIFICATION_TYPE

MIB_UNICASTIPADDRESS_ROW

MIB_UNICASTIPADDRESS_TABLE

NotifyTeredoPortChange

NotifyUnicastIpAddressChange

SetUnicastIpAddressEntry