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) 。
-
lBytesReturned
-
必須是 Null。
-
lpCompletion
-
指定 Null 或 WSACOMPLETION 結構的指標。
收到通知之後,請呼叫 WSALookupServiceNext 一次以取得結果。
若要結束搜尋,請呼叫 WSALookupServiceEnd。
解決通知
每當新增名稱解析專案時,即可通知用戶端。 用戶端接著會呼叫 WSALookupServiceNext 以取得解析資料。
如果用戶端未使用此技術,則可以封鎖對 WSALookupServiceNext 的呼叫,直到發生指定的逾時為止。
雲端清單通知
每當有一組雲端變更時,用戶端都可以收到通知。
WSALookupServiceNext函式會傳回WSA_E_NO_MORE做為集合分隔符號。 用戶端應用程式必須列舉現有的雲端,直到傳回此訊息為止,然後使用通知配置來擷取後續的變更。 用戶端應用程式也可以呼叫 WSALookupServiceNext,但呼叫會遭到封鎖,直到發生變更為止。
WSALookupServiceNext函式會傳回WSAQUERYSET結構中的雲端。 下列其中一個旗標會在 dwOutputFlags 成員中傳回。
值 | Description |
---|---|
RESULT_IS_ADDED | 會新增傳回的雲端。 |
RESULT_IS_CHANGED | 傳回的雲端已變更。 |
RESULT_IS_DELETED | 傳回的雲端已刪除且無效。 |
相關主題
-
WSALookupServiceBegin
-
WSALookupServiceEnd
-
WSAQUERYSET