Доступ к сведениям о службе SDP
После того как драйвер профиля отправляет запись протокола обнаружения служб (SDP) для объявления своих служб с помощью SDP, другие устройства могут обнаружить эти службы, выполнив поиск конкретной записи или просмотрив ее.
Для поиска записей SDP драйвер профиля клиента должен сначала использовать IOCTL_BTH_SDP_CONNECT для подключения к службе SDP удаленного устройства.
Затем драйвер профиля может использовать один из следующих списков IOCTL для выполнения фактического поиска записей SDP:
IOCTL_BTH_SDP_ATTRIBUTE_SEARCH получает все компоненты удаленной записи SDP, которые попадают в указанный диапазон атрибутов SDP.
IOCTL_BTH_SDP_SERVICE_SEARCH отправляет запрос SDP к удаленному устройству, запрашивая дескриптора для записей SDP определенного класса службы или классов.
IOCTL_BTH_SDP_SERVICE_ATTRIBUTE_SEARCH объединяет IOCTL_BTH_SDP_ATTRIBUTE_SEARCH и IOCTL_BTH_SDP_SERVICE_ATTRIBUTE_SEARCH и возвращает поток записей SDP в одной операции.
Драйверы профилей могут использовать IOCTL_BTH_SDP_SERVICE_SEARCH и IOCTL_BTH_SDP_ATTRIBUTE_SEARCH для уменьшения объема трафика SDP, передаваемого по bluetooth-каналу, и могут извлекать необходимые сведения, используя небольшое количество единиц передачи (MTU). Если ни один из этих вопросов не имеет большого значения, для водителей профилей может быть удобнее вызывать IOCTL_BTH_SDP_SERVICE_ATTRIBUTE_SEARCH.
После того как драйвер профиля получил динамический протокол или мультиплексор службы (PSM) для требуемой службы, он может подключиться к удаленной службе с помощью BRB_L2CA_OPEN_CHANNEL BRB.
Примечание
Если служба имеет фиксированный PSM, что и многие из них, драйверам профиля клиента L2CAP не нужно использовать SDP для получения PSM. Однако драйверы профилей клиентов L2CAP по-прежнему могут использовать SDP для получения атрибутов сервера SDP.
После завершения поиска драйвер профиля должен использовать IOCTL_BTH_SDP_DISCONNECT для отключения от удаленного сервера SDP.