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


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

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

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

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

  • Пользовательский режим

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

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

  • Примеры драйверов профиля

    • Драйвер режима ядра WAP. Компонент протокола беспроводного приложения (WAP) — это пример драйвера профиля, который взаимодействует между сетевым стеком Windows и BthPort, используя интерфейс L2CAP и, при необходимости, интерфейс SDP, содержащийся в L2CAP. Другие возможные профили включают профиль расширенного распространения аудио (A2DP), профиль удаленного управления аудио-видео (AVRCP), универсальный профиль распространения аудио-видео (GAVDP) и профиль общего доступа к ISDN (CIP).

    • Драйвер режима ядра аудио— пример драйвера профиля, который взаимодействует между стеком звука Windows и BthPort, обращаюсь к интерфейсам SCO, содержащимся в последнем. Возможные профили включают профиль Hands Free (HFP), профиль гарнитуры (HSP), профиль беспроводной телефонии (CTP) и профиль intercom (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 через частные ioCTL. Обратите внимание, что BthProps работает в любой системе с радиомодулем с поддержкой Bluetooth.

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

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

    • WshBth — вспомогательный компонент сокета Windows bluetooth. WshBth вызывается уровнем сокетов Windows для выполнения операций с сокетами. WshBth в основном вызывает RfComm через интерфейс TDI. WshBth также вызывает BthServ для выполнения запросов на удаленные устройства и в BthPort для выполнения местных запросов радио.

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

    • BthPrint — компонент, реализующий профиль замены кабеля hardcopy (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, описанных в windows SDK.

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

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

      Примечание

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

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

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

      1. Компонент HCI взаимодействует с локальным радиомодулем с поддержкой Bluetooth через интерфейс хост-контроллера (HCI), определенный в спецификации Bluetooth. Так как все радиомодулы с поддержкой Bluetooth реализуют спецификацию HCI, BthPort может обмениваться данными с любым радиомодулем с поддержкой Bluetooth, независимо от производителя или модели.
      2. Компонент SCO реализует протокол синхронного Connection-Oriented (SCO). Этот протокол поддерживает создание подключений типа "точка — точка" к удаленному устройству. Клиенты SCO взаимодействуют с интерфейсом SCO, создавая и отправляя блоки запросов Bluetooth (BRB).
      3. L2CAP реализует протокол управления логическими ссылками и адаптации Bluetooth. Этот протокол поддерживает создание канала без потерь для удаленного устройства. Клиенты L2CAP взаимодействуют с интерфейсом L2CAP, создавая и отправляя блоки запросов Bluetooth (BRB).
      4. SDP реализует протокол обнаружения служб Bluetooth.
    • BthUsb.sys— мини-порт, который абстрагирует интерфейс шины от BthPort.