適用於設定服務的藍牙和 WSAQUERYSET
藍牙會使用 WSAQUERYSET 結構,協助探索藍牙命名空間中的裝置和服務,NS_BTH。
WSASetService 函式會使用 WSAQUERYSET 結構來註冊或移除藍牙命名空間中的服務實例。 下表列出 WSAQUERYSET 結構中的成員值。
成員 | 必要值(輸入) | 輸出 |
---|---|---|
dwSize | 必須設定為 sizeof(WSAQUERYSET)。 做為版本控制機制。 | 沒有。 |
dwOutputFlags | 未使用。 | 沒有。 |
lpszServiceInstanceName | 選擇性,但建議使用。 用來建構 Bluetooth 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 函式,則會忽略 WSAQUERYSET 結構的所有其他成員,但 dwSize dwNameSpace 除外。 如需詳細資訊,請參閱 藍牙和 BLOB。 在許多情況下,提交二進位 SDP 記錄是必要的,因為可以從 WSAQUERYSET 結構轉換有限的 SDP 屬性,而且字串只會轉換成預設語言 UTF-8 編碼。 | 如果輸入上已提供選擇性 BLOB 和 BTH_SET_SERVICE 結構,以及 BTH_SET_SERVICE必須指向的 ULONG 版本和 HANDLE 值,則會更新版本,以包含藍牙 Windows 套接字提供者的BTH_SDP_VERSION值, 並提供 句柄,這是後續刪除記錄所需的句柄。 |
注意
若要移除服務,BTH_SET_SERVICE 結構中唯一的必要成員是 pSdpVersion ,以及 pRecordHandle 成員。
相關主題