PNRP 和 WSALookupServiceNext
PNRP 使用 WSALookupServiceNext 函式來比對先前呼叫 WSALookupServiceBegin中指定的查詢。 WSALookupServiceNext函式的結果是由初始WSALookupServiceBegin函數呼叫中傳遞的WSAQUERYSET結構中的設定所決定。 此函式用來執行下列兩個函式:
- 將對等名稱解析為地址清單
- 列舉網路雲端
使用 WSANSPIoctl,即可以非同步方式使用查閱服務。 如需非同步使用查閱服務函式的相關資訊,請參閱 PNRP 和 WSANSPIoctl。
即使呼叫WSANSPIoctl,WSALookupServiceNext函式仍會封鎖。 呼叫 WSALookupServiceNext之前,應用程式必須等到收到通知,如果封鎖是問題。
將對等名稱解析為地址清單
將對等名稱解析為地址清單時,lpqsResults參數中傳回的LPWSAQUERYSET結構包含下列值:
-
dwSize
-
傳回 結構的大小。
-
lpszServiceInstanceName
-
傳回對等名稱—如果指定 LUP_RETURN_NAME、 LUP_RETURN_ALL或 Null 。
-
lpServiceClassID
-
傳回 SVCID_PNRPNAME。
-
lpVersion
-
傳回 Null。
-
lpszComment
-
傳回批註—如果指定 LUP_RETURN_COMMENT、 LUP_RETURN_ALL或 Null 。
-
dwNameSpace
-
傳回 NS_PNRPNAME。
-
lpNSProviderID
-
傳回 NS_PROVIDER_PNRPNAME。
-
lpszCoNtext
-
如果指定 LUP_RETURN_NAME、 LUP_RETURN_ALL或 Null ,則傳回雲端名稱。
-
dwNumberOfProtocols
-
傳回零 (0) 。
-
lpszQueryString
-
傳回 Null。
-
dwNumberOfCsAddrs
-
如果指定 LUP_RETURN_ADDR、 LUP_RETURN_ALL或 Null ,則會傳回CSADDR_INFO陣列中的專案數。 這個值和 lpcsaBuffer 中的資訊是這個結構中傳回之資訊的索引鍵位。
-
lpcsaBuffer
-
如果指定 LUP_RETURN_ADDR、 LUP_RETURN_ALL或 Null ,則會傳回CSADDR_INFO結構的陣列指標。 這個緩衝區和 dwNumberOfCsAddrs 中的值是這個結構中傳回的主要資訊位。
-
dwOutputFlags
-
傳回零 (0) 。
-
lpBlob
-
傳回 Null。
列舉網路雲端
列舉雲端時,在 lpqsResults參數中傳回的LPWSAQUERYSET結構包含下列值:
-
dwSize
-
傳回 結構的大小。
-
lpszServiceInstanceName
-
傳回雲端名稱—如果 指定LUP_RETURN_NAME、 LUP_RETURN_ALL或 Null 。
-
lpServiceClassID
-
傳回 SVCID_PNRPCLOUD。
-
lpVersion
-
傳回 Null。
-
lpszComment
-
傳回 Null。
-
dwNameSpace
-
傳回 NS_PNRPCLOUD。
-
lpNSProviderID
-
傳回 NS_PROVIDER_PNRPCLOUD。
-
lpszCoNtext
-
傳回 Null。
-
dwNumberOfProtocols
-
傳回零 (0) 。
-
lpszQueryString
-
傳回 Null。
-
dwNumberOfCsAddrs
-
傳回零 (0) 。
-
lpcsaBuffer
-
傳回 Null。
-
dwOutputFlags
-
傳回零 (0) 。
-
lpBlob
-
傳回指向PNRPCLOUDINFO結構的BLOB結構的指標,如果指定LUP_RETURN_BLOB、LUP_RETURN_ALL或Null。
PNRPCLOUDINFO 結構
列舉雲端名稱時, 會在 PNRPCLOUDINFO 結構中傳回下列值:
-
dwSize
-
此結構的大小。
-
雲
-
實際的雲端值。
-
enCloudState
-
雲端的目前狀態。 PNRP_CLOUD_STATE 指定有效值。
-
enCloudFlags
-
表示雲端名稱在網路上有效,或只在目前電腦上有效。 PNRP_CLOUD_FLAGS 指定有效值。 某些雲端名稱在相同網路上的任何電腦上都是有效的。 其他雲端名稱只在目前電腦上有效,而且可能只在一段時間內有效。
- 如果 enCloudFlags 設定為 PNRP_CLOUD_NAME_LOCAL, 則名稱只在本機有效。
- 如果未設定 enCloudFlags ,則可以將雲端名稱傳輸到其他電腦。
相關主題