set Service 的 藍牙 和 WSAQUERYSET
藍牙 使用WSAQUERYSET 結構,可協助探索 藍牙 命名空間中的裝置和服務,NS_BTH。
WSASetService 函式會使用 WSAQUERYSET 結構來註冊或移除 藍牙 命名空間中的服務實例。 下表列出 WSAQUERYSET 結構中的成員值。
member | 必要值(輸入) | 輸出 |
---|---|---|
dwSize | 必須設定為 sizeof(WSAQUERYSET)。 做為版本控制機制。 | 無。 |
dwOutputFlags | 未使用。 | 無。 |
lpszServiceInstanceName | 選擇性,但建議使用。 用來建構 藍牙 ServiceName 屬性。 | 無。 |
lpServiceClassId | 必要。 對應至服務類別的 GUID。 此值應該對應至已知配置檔 藍牙 指派數位檔中的 GUID,或針對非配置檔型應用程式產生的唯一應用程式產生的 UUID。 用來建構 ServiceClassIdList 屬性序列,並以此作為唯一的成員。 | 無。 |
lpVersion | 未使用。 | 無。 |
lpszComment | 選擇性。 用來建構 藍牙 ServiceDescription 屬性。 | 無。 |
dwNameSpace | 要在其中限制服務的命名空間。 必須是NS_BTH。 | 無。 |
lpNSProviderId | 非必要。 | 無。 |
lpszContext | 未使用。 | 無。 |
dwNumberOfProtocols | 未使用。 | 無。 |
lpafpProtocols | 未使用。 | 無。 |
lpszQueryString | 未使用。 | 無。 |
dwNumberOfCsAddrs | 要註冊的位址數目。 必須是 1。 | 無。 |
lpcsaBuffer | 如果 lpBlob 尚未填入原始 SDP 數據流,則為必要專案。 CSADDR_INFO結構的指標,其LocalAddr.lpSockaddr成員指向伺服器正在接聽連接的SOCKADDR_BTH。 getsockname 函式可用來傳回系結套接字的SOCKADDR_BTH結構。 系統會使用 lpcsaBuffer 成員中的資訊來建構 藍牙 ProtocolDescriptorList SDP 屬性。 lpcsaBuffer 中提供的通訊協定和埠必須是唯一的(先前未註冊),並且用來編製記錄的索引,以供後續呼叫刪除。 用來建構 SDP 記錄 藍牙 ProtocolDescriptorList 屬性。 | 無。 |
lpBlob | 選擇性。 指向BTH_SET_SERVICE結構的 BLOB 結構的指標,可讓用戶端提供 藍牙 特定結構,其中包含應用程式所建構的二進位 SDP 記錄。 如果 lpBlob 提供給 WSASetService 函式,則會忽略 dwSize 和 dwNameSpace 以外的 WSAQUERYSET 結構所有其他成員。 如需詳細資訊,請參閱 藍牙 和 BLOB。 在許多情況下,提交二進位 SDP 記錄是必要的,因為可以從 WSAQUERYSET 結構轉換有限的 SDP 屬性,而且字串只會轉換成預設語言 UTF-8 編碼。 | 如果輸入上已提供選擇性的 BLOB 和BTH_SET_SERVICE結構,以及BTH_SET_SERVICE必須指向的 ULONG 版本和 HANDLE 值,則會更新版本以包含 藍牙 Windows Sockets 提供者的BTH_SDP_VERSION值,並提供句柄,這是後續刪除記錄所需的句柄。 |
注意
若要移除服務,BTH_SET_SERVICE結構中唯一的必要成員是 pSdpVersion 和 pRecordHandle 成員。
相關主題