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


Стек драйверов Bluetooth

Стек драйверов Bluetooth состоит из основной части поддержки, предоставляемой корпорацией Майкрософт для протокола Bluetooth. С помощью этого стека устройства с поддержкой Bluetooth могут находить друг друга и устанавливать подключения. В этих подключениях устройства могут обмениваться данными и взаимодействовать друг с другом с помощью различных приложений.

На следующем рисунке показаны модули в стеке драйверов Bluetooth, а также возможные пользовательские драйверы пользовательского режима и режима ядра, не включенные в Windows Vista и более поздних версий. Пользовательские драйверы называются драйверами профилей.

Схема, на которой показана архитектура стека драйверов Bluetooth.

Образ архитектуры включает следующие компоненты и примеры:

  • Режим пользователя

    • Приложение в пользовательском режиме: приложение в пользовательском режиме обращается к стеку драйверов Bluetooth через опубликованные API. Дополнительные сведения см. в статье о Bluetooth в документации по пакету SDK для Windows.

      Приложения в режиме пользователя должны ссылаться на BthProps.lib вместо IrProps.lib, чтобы использовать ТАКИЕ API, как BluetoothSetLocalServiceInfo.

  • Примеры профильных драйверов

    • Драйвер режима ядра WAP: компонент протокола беспроводного приложения (WAP) является примером драйвера профиля, который взаимодействует между сетевым стеком Windows и BthPort. Он обращается к интерфейсу L2CAP и при необходимости обращается к интерфейсу ПРОТОКОЛА ОБНАРУЖЕНИЯ служб (SDP), содержащегося в L2CAP. Другие возможные профили включают профиль расширенного распространения аудио (A2DP), профиль удаленного управления A/V (AVRCP), универсальный профиль распространения A/V (GAVDP) и общий доступ ISDN (CIP).

    • Драйвер режима ядра аудиосистемы: пример драйвера профиля, который взаимодействует между аудиостеком Windows и BthPort, который обращается к интерфейсам SCO, содержащимся в BthPort. Возможные профили включают профиль "Свободные руки" (HFP), профиль гарнитуры (HSP), профиль беспроводной телефонии (CTP) и профиль интеркома (ICP). Этот драйвер профиля входит в состав Windows, начиная с Windows 8.

    • Профиль монитора частоты пульса Bluetooth LE: пример драйвера профиля Bluetooth LE, который взаимодействует с API Bluetooth Low Energy (LE).

  • Компоненты стека драйверов Bluetooth

    • IrProps: компонент, используемый для обратной совместимости с драйверами профилей, созданными для первой версии стека драйверов Bluetooth. IrProps предоставляется только для обратной совместимости. Для новой разработки используйте компонент BthProps .

    • BthProps: компонент, содержащий реализацию пользовательского интерфейса Bluetooth, а также реализацию API Bluetooth, к которым обращаются приложения в режиме пользователя. Этот компонент отправляет запросы в BthServ через удаленные вызовы процедур (RPC). Кроме того, BthProps выполняет обмен пин-кодами с BthPort через частные ioCTLs. BthProps работает в любой системе с поддержкой Bluetooth.

    • BthServ: служба, отвечающая за кэширование и пересылку данных запроса в Bthport.

    • BthCi: установщик класса Bluetooth.

    • WshBth: вспомогательный компонент для работы с сокетами Bluetooth в Windows. WshBth вызывается слоем Windows Sockets для выполнения операций с сокетами. WshBth в основном вызывает RFCOMM через интерфейс драйвера транспорта (TDI). WshBth также вызывает BthServ для выполнения запросов удаленных устройств и BthPort для выполнения локальных радио-запросов.

    • FSquirt: нерасширяемый компонент для обмена объектами (OBEX), который позволяет пользователям отправлять и получать файлы через открытое подключение Bluetooth. OBEX взаимодействует с удаленными устройствами с помощью RFCOMM, использующего компонент WshBth.

    • BthPrint: компонент, реализующий профиль замены кабеля для печати (HCRP). Этот компонент позволяет системе печати отправлять данные и получать данные из принтеров с поддержкой Bluetooth. BthPrint взаимодействует с интерфейсом SDP в BthPort для запроса удаленных принтеров и интерфейса L2CAP в BthPort для отправки и получения данных.

    • HidBth: компонент, реализующий профиль устройства пользовательского интерфейса (HID). HidBth также взаимодействует с интерфейсами L2CAP и SDP в BthPort. HidBth подключается к стеку HID аналогично модулю USB HID.

    • BthPan: компонент, реализующий профиль личной сети (PAN), который предоставляет TCP-подключения через открытое подключение Bluetooth. В Windows Vista и Windows XP BthPan поддерживает только исходящие подключения. BthPan также является клиентом компонента BthPort и использует интерфейсы L2CAP и SDP.

    • RFCOMM: компонент, реализующий протокол эмуляции последовательного кабеля Bluetooth. RFCOMM также использует интерфейсы L2CAP и SDP, найденные в BthPort. Верхний уровень RFCOMM предоставляет интерфейс TDI, который позволяет этому компоненту представляться как сетевой транспорт. Этот подход заключается в том, как WshBth подключается к Bluetooth для отправки и получения данных из API пользовательского режима.

      Приложения в пользовательском режиме могут получить доступ к RFCOMM с помощью интерфейсов Winsock, описанных в пакете SDK для Windows.

    • BthModem: компонент, реализующий виртуальные COM-порты и коммутируемый доступ (DUN). BthModem направляет все операции ввода-вывода и управления в RFCOMM через интерфейс TDI. Верхняя грань BthModem взаимодействует с файломSerial.sys, чтобы создать видимость беспроводного COM-порта.

    • BthEnum: драйвер шины Bluetooth. BthEnum взаимодействует с менеджером Plug and Play (PnP) для создания и уничтожения объектов устройств, используемых для включения служб Bluetooth. BthEnum создает PDO для каждой службы, которую поддерживает подключенное удаленное устройство. Например, когда пользователь подключает мышь с поддержкой Bluetooth, Windows обнаруживает, что мышь поддерживает службу Bluetooth HID. Windows создает PDO для службы HID, что приводит к тому, что диспетчер PnP загружает HidBth.

      Замечание

      BthEnum не создает PDO для служб, которые отображаются в разделе реестра UnsupportedServices, как указано в INF-файле Bth.inf.

    • BthLEEnum: драйвер шины Bluetooth Low Energy (LE). BthLEEnum реализует протокол ATT и профиль GATT. Этот драйвер также отвечает за создание PDOS для представления удаленных устройств и их основных служб.

    • BthPort: минидрайвер, загруженный минипортом BthUsb. BthPort предоставляет четыре компонента:

      • Компонент HCI взаимодействует с локальным радио с поддержкой Bluetooth через интерфейс контроллера узла (HCI), определенный в спецификации Bluetooth. Так как все радио с поддержкой Bluetooth реализуют спецификацию HCI, BthPort может взаимодействовать с любым радио с поддержкой Bluetooth независимо от производителя или модели.

      • Компонент SCO реализует синхронный протокол Connection-Oriented (SCO). Этот протокол поддерживает создание подключений типа "точка — точка" к удаленному устройству. Клиенты SCO взаимодействуют с интерфейсом SCO, создавая и отправляя блоки запросов Bluetooth (BRB).

      • L2CAP реализует протокол управления и адаптации логических ссылок Bluetooth. Этот протокол поддерживает создание безупречного канала к удаленному устройству. Клиенты L2CAP взаимодействуют с интерфейсом L2CAP, создавая и отправляя BRB-объекты.

      • SDP реализует протокол обнаружения служб Bluetooth.

    • BthUsb.sys: минипорт, который абстрагирует интерфейс шины из BthPort.