PNRP 和 WSANSPIoctl
PNRP 使用 WSANSPIoctl 函数接收有关对以下内容的更改的通知:
- 网络云列表
- 名称解析请求结果的可用性
对 WSALookupServiceBegin 的第一次调用定义通知客户端的信息类型。 可以使用 Windows 消息、完成例程、WSAEVENT 对象的句柄或端口通知客户端。 有关选项和设置 lpCompletion 参数的详细信息,请参阅 WSANSPIoctl。
若要在调用 WSALookupServiceNext 后继续接收通知,应用程序必须再次调用 WSANSPIoctl 。
即使调用 WSANSPIoctl,WSALookupServiceNext 函数也会阻止。 在调用 WSALookupServiceNext 之前,应用程序必须等到收到通知(如果阻止是一个问题)。
调用此函数时,参数必须具有以下值:
-
hLookup
-
指定 WSALookupServiceBegin 返回的句柄。
-
dwControlCode
-
必须 SIO_NSP_NOTIFY_CHANGE。
-
lpvInBuffer
-
必须为 NULL。
-
cbInBuffer
-
必须为零 (0) 。
-
lpvOutBuffer
-
必须为 NULL。
-
cbOutBuffer
-
必须为零 (0) 。
-
lpcbBytesReturned
-
必须为 NULL。
-
lpCompletion
-
指定 NULL 或指向 WSACOMPLETION 结构的指针。
收到通知后,请调用 WSALookupServiceNext 一次以获取结果。
若要结束搜索,请调用 WSALookupServiceEnd。
解决方法通知
每当添加名称解析条目时,客户端都会收到通知。 然后,客户端调用 WSALookupServiceNext 以获取分辨率数据。
如果客户端不使用此方法,则可以阻止对 WSALookupServiceNext 的调用,直到发生指定的超时。
云列表通知
每当一组云发生更改时,客户端都会收到通知。
WSALookupServiceNext 函数返回WSA_E_NO_MORE作为集分隔符。 在返回此消息之前,客户端应用程序必须枚举现有云,然后使用通知方案在后续更改发生时检索这些更改。 客户端应用程序也可以调用 WSALookupServiceNext,但调用会被阻止,直到发生更改。
WSALookupServiceNext 函数返回 WSAQUERYSET 结构中的云。 在 dwOutputFlags 成员中返回以下标志之一。
值 | 说明 |
---|---|
RESULT_IS_ADDED | 添加返回的云。 |
RESULT_IS_CHANGED | 返回的云已更改。 |
RESULT_IS_DELETED | 返回的云已删除且无效。 |
相关主题
-
WSALookupServiceBegin
-
WSALookupServiceEnd
-
WSAQUERYSET