NotifyTeredoPortChange 函数
NotifyTeredoPortChange 函数注册驱动程序,以便在 Teredo 客户端用于本地计算机上的 Teredo 服务端口的 UDP 端口号发生更改时收到通知。
语法
NETIOAPI_API NotifyTeredoPortChange(
_In_ PTEREDO_PORT_CHANGE_CALLBACK Callback,
_In_ PVOID CallerContext,
_In_ BOOLEAN InitialNotification,
_Inout_ HANDLE * NotificationHandle
);
参数
回调 [in]
指向在 Teredo 客户端端口发生更改时要调用的函数的指针。 收到 Teredo 端口更改通知时调用此函数。CallerContext [in]
收到 Teredo 端口更改通知时传递给 Callback 参数中指定的回调函数的用户上下文。InitialNotification [in]
一个 值,该值指示是否应在驱动程序更改通知注册完成后立即调用回调。 此初始通知并不指示 Teredo 客户端端口发生了更改。 此参数提供回调已注册的确认。NotificationHandle [in, out]
用于返回句柄的指针,驱动程序稍后可以使用该句柄取消注册驱动程序更改通知。 成功后,此参数中将返回通知句柄。 如果发生错误,则返回 NULL 。
返回值
如果函数成功,NotifyTeredoPortChange 将返回STATUS_SUCCESS。
如果函数失败, NotifyTeredoPortChange 将返回以下错误代码之一:
返回代码 | 说明 |
---|---|
ERROR_INVALID_HANDLE | 遇到无效句柄时发生内部错误。 |
STATUS_INVALID_PARAMETER | 向该函数传递了无效参数。 如果 Callback 参数为 NULL 指针,则返回此错误。 |
STATUS_NOT_ENOUGH_MEMORY | 内存不足。 |
其他 | 使用 FormatMessage 函数获取返回错误的消息字符串。 |
注解
对 Callback 参数中指定的 回调函数的调用进行序列化。 回调函数应定义为 VOID 类型的函数。 传递给回调函数的参数包括以下内容。
参数 | 说明 |
---|---|
IN PVOID CallerContext |
在为更改通知注册驱动程序时传递给 NotifyTeredoPortChange 函数的 CallerContext 参数。 |
IN USHORT Port |
Teredo 客户端当前使用的 UDP 端口号。 当在 NotificationType 参数中传递给回调函数的MIB_NOTIFICATION_TYPE值设置为 MibInitialNotification 时,此参数为零。 只有在为更改通知注册驱动程序时,传递给 NotifyTeredoPortChange 的 InitialNotification 参数设置为 TRUE 时,才会发生这种情况。 |
IN MIB_NOTIFICATION_TYPE NotificationType |
通知类型。 此成员可以是 MIB_NOTIFICATION_TYPE 枚举类型的值之一。 |
驱动程序可以使用 GetTeredoPort 函数检索 Teredo 客户端用于 Teredo 服务端口的初始 UDP 端口号。
Teredo 端口是动态的,可以在本地计算机上重启 Teredo 客户端时随时更改。 驱动程序可以通过调用 NotifyTeredoPortChange 函数注册,以便在 Teredo 服务端口更改时收到通知。
Teredo 客户端还使用静态 UDP 端口 3544 侦听在 RFC 4380 中定义的多播 IPv4 地址 224.0.0.253 上发送的多播流量。 有关详细信息,请参阅 Teredo:通过 UDPthrough 网络地址转换隧道 IPv6 (NAT) 。
NotifyTeredoPortChange 函数主要由防火墙驱动程序用来配置相应的例外,以启用传入和传出 Teredo 流量。
若要取消注册更改通知的驱动程序,请调用 CancelMibChangeNotify2 函数,传递 NotifyTeredoPortChange 函数返回的 NotificationHandle 参数。
要求
目标平台 |
通用 |
版本 |
在 Windows Vista 和更高版本的 Windows 操作系统中可用。 |
标头 |
Netioapi.h (包括 Netioapi.h) |
库 |
Netio.lib |
IRQL |
< DISPATCH_LEVEL |