Compartir a través de


Función NotifyStableUnicastIpAddressTable

La función NotifyStableUnicastIpAddressTable recupera la tabla estable de direcciones IP de unidifusión en un equipo local.

Sintaxis

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
);

Parámetros

  • Familia [in]
    Familia de direcciones que se va a recuperar.

    Los valores posibles para la familia de direcciones se enumeran en el archivo de encabezado Winsock2.h. Tenga en cuenta que los valores de la familia de direcciones AF_ y las constantes de familia de protocolos de PF_ son idénticas (por ejemplo, AF_INET y PF_INET), por lo que puede usar cualquiera de las constantes.

    En Windows Vista y versiones posteriores de los sistemas operativos Windows, los valores posibles para el parámetro Family se definen en el archivo de encabezado Ws2def.h. Tenga en cuenta que el archivo de encabezado Ws2def.h se incluye automáticamente en Netioapi.h y nunca debe usar Ws2def.h directamente.

    Actualmente se admiten los siguientes valores para la familia de direcciones:

    • AF_INET
      Familia de direcciones IPv4. Cuando se especifica este valor, la función recupera la tabla de direcciones IP de unidifusión estable que contiene solo entradas IPv4.

    • AF_INET6
      Familia de direcciones IPv6. Cuando se especifica este valor, la función recupera la tabla de direcciones IP de unidifusión estable que contiene solo entradas IPv6.

    • AF_UNSPEC
      No se especifica la familia de direcciones. Cuando se especifica este valor, la función recupera la tabla de direcciones IP de unidifusión estable que contiene entradas IPv4 e IPv6.

  • Tabla [salida]
    Puntero a una estructura de MIB_UNICASTIPADDRESS_TABLE . Cuando NotifyStableUnicastIpAddressTable se realiza correctamente, este parámetro devuelve la tabla de direcciones IP de unidifusión estable en el equipo local.

    Cuando NotifyStableUnicastIpAddressTable devuelve ERROR_IO_PENDING, lo que indica que la solicitud de E/S está pendiente, la tabla de direcciones IP de unidifusión estable se devuelve a la función en el parámetro CallerCallback .

  • CallerCallback [in]
    Puntero a la función que se va a llamar con la tabla de direcciones IP de unidifusión estable. Se llama a esta función si NotifyStableUnicastIpAddressTable devuelve ERROR_IO_PENDING, lo que indica que la solicitud de E/S está pendiente.

  • CallerContext [in]
    Contexto de usuario que se pasa a la función de devolución de llamada especificada en el parámetro CallerCallback cuando la tabla de direcciones IP de unidifusión estable está disponible.

  • NotificationHandle [in, out]
    Puntero que se usa para devolver un identificador que el controlador puede usar para cancelar la solicitud para recuperar la tabla de direcciones IP de unidifusión estable. Este parámetro se devuelve si el valor devuelto de NotifyStableUnicastIpAddressTable es ERROR_IO_PENDING, lo que indica que la solicitud de E/S está pendiente.

Valor devuelto

NotifyStableUnicastIpAddressTable devuelve STATUS_SUCCESS y la tabla IP de unidifusión estable se devuelve en el parámetro Table si la función se realiza correctamente inmediatamente.

Si la solicitud de E/S está pendiente, la función devuelve ERROR_IO_PENDING y la función a la que apunta el parámetro CallerCallback se llama cuando la solicitud de E/S se ha completado con la tabla estable de direcciones IP de unidifusión.

Si se produce un error en la función, NotifyStableUnicastIpAddressTable devuelve uno de los siguientes códigos de error:

Código devuelto Descripción
ERROR_INVALID_HANDLE

Error interno en el que se encontró un identificador no válido.

STATUS_INVALID_PARAMETER

Se pasó un parámetro no válido a la función. Este error se devuelve si el parámetro Table era un puntero NULL , el parámetro NotificationHandle era un puntero NULL o el parámetro Family no estaba AF_INET, AF_INET6 o AF_UNSPEC.

STATUS_NOT_ENOUGH_MEMORY

No había memoria suficiente.

Otros

Use la función FormatMessage para obtener la cadena de mensaje para el error devuelto.

Observaciones

Todas las direcciones IP de unidifusión, excepto las direcciones de acceso telefónico a petición, solo se consideran estables si están en el estado preferido. Para una entrada de dirección IP de unidifusión normal, este estado correspondería a un miembro dadState del MIB_UNICASTIPADDRESS_ROW para la dirección IP establecida en IpDadStatePreferred. Cada dirección de marcado a petición define su propia métrica de estabilidad. Actualmente, la única dirección de acceso telefónico a petición que la función NotifyStableUnicastIpAddressTable considera es la dirección IP de unidifusión que el cliente teredo usa en el equipo local.

El controlador debe establecer el parámetro Family en AF_INET, AF_INET6 o AF_UNSPEC.

Cuando NotifyStableUnicastIpAddressTable se realiza correctamente y devuelve STATUS_SUCCESS, el parámetro Table devuelve la tabla de direcciones IP de unidifusión estable en el equipo local.

Cuando NotifyStableUnicastIpAddressTable devuelve ERROR_IO_PENDING, lo que indica que la solicitud de E/S está pendiente, la tabla de direcciones IP de unidifusión estable se devuelve a la función en el parámetro CallerCallback .

Si la dirección IP de unidifusión que usa Teredo está disponible en el equipo local, pero no en el estado estable (calificado), NotifyStableUnicastIpAddressTable devuelve ERROR_IO_PENDING y la tabla de direcciones IP de unidifusión estable se devuelve al llamar a la función en el parámetro CallerCallback . Si la dirección Teredo no está disponible o está en estado estable y las demás direcciones IP de unidifusión están en un estado estable, nunca se llama a la función del parámetro CallerCallback .

La función de devolución de llamada especificada en el parámetro CallerCallback debe definirse como una función de tipo VOID. Los parámetros que se pasan a la función de devolución de llamada incluyen lo siguiente.

Parámetro Descripción

IN PVOID CallerContext

El parámetro CallerContext que se pasa a la función NotifyStableUnicastIpAddressTable cuando registra el controlador para las notificaciones.

IN PMIB_UNICASTIPADDRESS_TABLE AddressTable

Puntero a una estructura de MIB_UNICASTIPADDRESS_TABLE que contiene la tabla de direcciones IP de unidifusión estable en el equipo local.

La función NotifyStableUnicastIpAddressTable se usa principalmente por los controladores que usan el cliente Teredo.

Para cancelar la notificación una vez completada la devolución de llamada, llame a la función CancelMibChangeNotify2 , pasando el parámetro NotificationHandle que NotifyStableUnicastIpAddressTable devuelve.

Requisitos

Plataforma de destino

Universal

Versión

Disponible en Windows Vista y versiones posteriores de los sistemas operativos Windows.

Encabezado

Netioapi.h (incluya Netioapi.h)

Biblioteca

Netio.lib

IRQL

< DISPATCH_LEVEL

Consulte también

CancelMibChangeNotify2

CreateUnicastIpAddressEntry

DeleteUnicastIpAddressEntry

GetTeredoPort

GetUnicastIpAddressEntry

GetUnicastIpAddressTable

InitializeUnicastIpAddressEntry

MIB_NOTIFICATION_TYPE

MIB_UNICASTIPADDRESS_ROW

MIB_UNICASTIPADDRESS_TABLE

NotifyTeredoPortChange

NotifyUnicastIpAddressChange

SetUnicastIpAddressEntry