Función NotifyTeredoPortChange (netioapi.h)

La función NotifyTeredoPortChange se registra para recibir una notificación de los cambios en el número de puerto UDP usado por el cliente teredo para el puerto de servicio teredo en un equipo local.

Sintaxis

IPHLPAPI_DLL_LINKAGE _NETIOAPI_SUCCESS_ NETIOAPI_API NotifyTeredoPortChange(
  [in]      PTEREDO_PORT_CHANGE_CALLBACK Callback,
  [in]      PVOID                        CallerContext,
  [in]      BOOLEAN                      InitialNotification,
  [in, out] HANDLE                       *NotificationHandle
);

Parámetros

[in] Callback

Puntero a la función que se va a llamar cuando se produce un cambio de puerto de cliente teredo. Esta función se invocará cuando se reciba una notificación de cambio de puerto teredo.

[in] CallerContext

Contexto de usuario pasado a la función de devolución de llamada especificada en el parámetro Callback cuando se recibe una notificación de cambio de puerto Teredo.

[in] InitialNotification

Valor que indica si la devolución de llamada se debe invocar inmediatamente después de que se complete el registro para la notificación de cambio. Esta notificación inicial no indica que se ha producido un cambio en el puerto de cliente teredo. El propósito de este parámetro para proporcionar confirmación de que la devolución de llamada está registrada.

[in, out] NotificationHandle

Puntero usado para devolver un identificador que se puede usar más adelante para anular el registro de la notificación de cambio. Si se ejecuta correctamente, se devuelve un identificador de notificación en este parámetro. Si se produce un error, se devuelve NULL .

Valor devuelto

Si la función se ejecuta correctamente, el valor devuelto es NO_ERROR.

Si se produce un error en la función, el valor devuelto es 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.
ERROR_INVALID_PARAMETER
Se pasó un parámetro no válido a la función. Este error se devuelve si el parámetro Callback es un puntero NULL .
ERROR_NOT_ENOUGH_MEMORY
No había memoria suficiente.
Otros
Use FormatMessage para obtener la cadena de mensaje para el error devuelto.

Comentarios

La función NotifyTeredoPortChange se define en Windows Vista y versiones posteriores.

La función GetTeredoPort se puede usar para recuperar el número de puerto UDP inicial usado por el cliente teredo para el puerto de servicio teredo.

El puerto teredo es dinámico y puede cambiar en cualquier momento en que se reinicie el cliente teredo en el equipo local. Una aplicación puede registrarse para recibir una notificación cuando cambia el puerto del servicio Teredo llamando a la función NotifyTeredoPortChange .

La invocación de la función de devolución de llamada especificada en el parámetro Callback se serializa. La función de devolución de llamada debe definirse como una función de tipo VOID. Los parámetros pasados a la función de devolución de llamada incluyen lo siguiente:

Parámetro Descripción
IN PVOID CallerContext El parámetro CallerContext pasado a la función NotifyTeredoPortChange al registrarse para recibir notificaciones.
PUERTO DE USHORT Número de puerto UDP usado actualmente por el cliente teredo. Este parámetro es cero cuando el valor de MIB_NOTIFICATION_TYPE pasado en el parámetro NotificationType a la función de devolución de llamada se establece en MibInitialNotification. Esto solo puede ocurrir si el parámetro InitialNotification pasado a NotifyTeredoPortChange se estableció en TRUE al registrarse para recibir notificaciones.
IN MIB_NOTIFICATION_TYPE NotificationType Tipo de notificación. Este miembro puede ser uno de los valores del tipo de enumeración MIB_NOTIFICATION_TYPE definido en el archivo de encabezado Netioapi.h .
 

La función de devolución de llamada especificada en el parámetro Callback debe implementarse en el mismo proceso que la aplicación que llama a la función NotifyTeredoPortChange . Si la función de devolución de llamada está en un archivo DLL independiente, el archivo DLL debe cargarse antes de llamar a la función NotifyTeredoPortChange para registrarse para recibir notificaciones de cambio.

Una vez que se llama a la función NotifyTeredoPortChange para registrarse para recibir notificaciones de cambios, estas notificaciones seguirán siendo enviadas hasta que la aplicación anule el registro de las notificaciones de cambio o finalice la aplicación. Si la aplicación finaliza, el sistema anulará automáticamente el registro de las notificaciones de cambios. Todavía se recomienda que una aplicación anule explícitamente el registro de las notificaciones de cambios antes de que finalice.

Cualquier registro de las notificaciones de cambio no se conserva en un sistema apagado o reinicio.

Para anular el registro de las notificaciones de cambios, llame a la función CancelMibChangeNotify2 pasando el parámetro NotificationHandle devuelto por NotifyTeredoPortChange.

Una aplicación no puede realizar una llamada a la función CancelMibChangeNotify2 desde el contexto del subproceso que está ejecutando actualmente la función de devolución de llamada de notificación para el mismo parámetro NotificationHandle . De lo contrario, el subproceso que ejecuta esa devolución de llamada dará como resultado un interbloqueo. Por lo tanto, la función CancelMibChangeNotify2 no debe llamarse directamente como parte de la rutina de devolución de llamada de notificación. En una situación más general, un subproceso que ejecuta la función CancelMibChangeNotify2 no puede poseer un recurso en el que el subproceso que ejecuta una operación de devolución de llamada de notificación esperaría porque daría lugar a un interbloqueo similar. Se debe llamar a la función CancelMibChangeNotify2 desde un subproceso diferente, en el que el subproceso que recibe la devolución de llamada de notificación no tiene dependencias.

El cliente teredo también usa el puerto UDP estático 3544 para escuchar el tráfico de multidifusión enviado en la dirección IPv4 de multidifusión 224.0.0.253 tal como se define en RFC 4380. Para obtener más información, vea http://www.ietf.org/rfc/rfc4380.txt.

Las aplicaciones de firewall usan principalmente la función NotifyTeredoPortChange para configurar las excepciones adecuadas para permitir el tráfico Teredo entrante y saliente.

La función NotifyStableUnicastIpAddressTable se usa principalmente por las aplicaciones que usan el cliente Teredo.

Requisitos

Requisito Value
Cliente mínimo compatible Windows Vista [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2008 [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado netioapi.h (include Iphlpapi.h)
Library Iphlpapi.lib
Archivo DLL Iphlpapi.dll

Consulte también

CancelMibChangeNotify2

GetTeredoPort

NotifyStableUnicastIpAddressTable