Поделиться через


Bluetooth и WSAQUERYSET для запроса на обслуживание

Bluetooth использует структуру WSAQUERYSET с различными функциями, чтобы упростить обнаружение устройств и служб в пространстве имен Bluetooth, NS_BTH.

Функции WSALookupServiceBegin и WSALookupServiceNext используют структуру WSAQUERYSET для получения данных о процессе запроса службы. В следующей таблице описывается, как задать значения элементов в структуре WSAQUERYSET для этой цели.

Элемент Входные данные в WSALookupServiceBegin Возвращенное значение из WSALookupServiceNext
dwSize Необходимо задать значение sizeof(WSAQUERYSET). sizeof(WSAQUERYSET), возвращаемый системой.
dwOutputFlags Не используется. Не используется.
lpszServiceInstanceName Не используется. Отображаемое имя службы, преобразованное в кодировку UTF-8 из кодировки языка по умолчанию атрибута SDP Bluetooth ServiceName. Возвращается, если указан LUP_RETURN_NAME.
lpServiceClassId Обязательный. Самый конкретный отдельный UUID Bluetooth для служб, для которых выполняется поиск. Например, если для этого значения задано значение UUID протокола L2CAP, он возвращает все службы, использующие протокол L2CAP на целевом устройстве. Если задано значение UUID определенной службы, он вернет только экземпляры этой службы. Не используется.
lpVersion Не используется. Не используется.
lpszComment Не используется. Описание службы, преобразованной в кодировку UTF-8 из кодировки языка по умолчанию атрибута SDP Bluetooth ServiceDescription. Возвращается, если указан LUP_RETURN_COMMENT .
dwNameSpace Должно быть NS_BTH. Возвращает NS_BTH.
lpNSProviderId Не используется. Не используется.
lpszContext Обязательный. Адрес устройства Bluetooth, с помощью которого необходимо установить подключение SDP и запросить службы. Это значение должно быть строкой, преобразованной с помощью вызова функции WSAAddressToString. Если указан локальный адрес устройства Bluetooth, выполняется поиск в локальной базе данных SDP. Не используется.
dwNumberOfProtocols Не используется. Не используется.
lpafpProtocols Не используется. Не используется.
lpszQueryString Не используется. Не используется.
dwNumberOfCsAddrs Не используется. Указывает количество элементов в массиве CSADDR_INFO структур.
lpcsaBuffer Не используется. Указатель на структуру CSADDR_INFO, член LocalAddr.lpSockaddr указывает на SOCKADDR_BTH, содержащий полный адрес удаленной службы, преобразованный из первой записи атрибута SDP Bluetooth ProtocolDescriptorList. Возвращается, если указан LUP_RETURN_ADDR .
lpBlob Необязательно. Указатель на структуру BTH_QUERY_SERVICE , содержащую расширенные параметры, чтобы ограничить результаты поиска. Если это указано, lpServiceClassId игнорируется и кэшированные запросы не выполняются.
  • Если выполняется поиск службы: указатель на структуру BLOB , которая возвращает дескриптор службы. (BLOB.cbSize)/sizeof(ULONG) вычисляет количество дескрипторов. BLOB.pBlobData — это массив значений ULONG, представляющих дескриптор службы.
  • Если выполняется поиск атрибута или serviceAttribute: указатель на структуру BLOB , которая возвращает двоичную запись SDP. BLOB.cbSize — это размер двоичной записи SDP. BLOB.pBlobData указывает на саму запись. Двоичная запись SDP необходима во многих случаях, так как преобразуется только ограниченное количество атрибутов SDP в структуру WSAQUERYSET , и преобразуются только строки в кодировке UTF-8 по умолчанию. Функции для анализа двоичной записи SDP предоставляются в разделе "Справочник по Bluetooth".
  • Возвращается, если указан LUP_RETURN_BLOB.

 

Bluetooth и WSAQUERYSET для установки службы

Bluetooth и WSAQUERYSET для запроса устройства

Bluetooth и BLOB

Bluetooth и WSALookupServiceBegin

Bluetooth и WSALookupServiceNext

Справочник по Bluetooth

BLOB

BTH_QUERY_SERVICE

CSADDR_INFO

SOCKADDR_BTH

WSAAddressToString

WSAQUERYSET

Сокеты Windows