Установка устройства Bluetooth

Это важно

Эта статья предназначена для программистов. Если у вас возникли проблемы с установкой устройства Bluetooth, см. Сопряжение устройства Bluetooth в Windows

Существует два типа установки для драйверов профилей Bluetooth:

  • Установка на стороне клиента для удаленных устройств, где удаленное устройство объявляет свои службы и компьютер подключается к нему. Примеры: мыши, клавиатуры и принтеры.
  • Серверная установка , в которой компьютер объявляет службы и удаленные устройства, могут подключаться к компьютеру для использования этих служб. Например, поставщик может создать серверную установку, чтобы позволить мобильному устройству распечатать принтер, подключенный к компьютеру.

Для этих двух типов установки требуются различные процедуры установки.

Установка драйвера профиля на стороне клиента

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

  1. Выберите "Добавить устройство Bluetooth " на панели управления , чтобы найти все устройства в диапазоне компьютера.
  2. Выберите устройство, с которым нужно связаться.
  3. Связывание устройства с локальным радио, которое может или не включать обмен ПИН-кодами.
  4. Локальное радио выдает запрос протокола ОБНАРУЖЕНИЯ служб (SDP), чтобы определить службы, поддерживаемые на удаленном устройстве.
  5. Мастер обнаружения нового оборудования ищет соответствующие драйверы на локальном жестком диске и в Центре обновления Windows.
  6. Если мастер обнаружения нового оборудования не находит подходящий драйвер для устройства, он предложит пользователю вставить носитель установки драйвера профиля, содержащий файл сведений о настройке устройства драйвера профиля (INF-файл).

Установка драйвера профиля на стороне сервера

Стек драйверов Bluetooth поддерживает идентификаторы GUID служб, определенные Bluetooth SIG, и пользовательские идентификаторы GUID, не определенные Bluetooth SIG.

Примечание.

Средство guidgen.exe, предоставленное в пакете SDK Microsoft Windows, можно использовать для создания настраиваемых глобальных уникальных идентификаторов (GUID).

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

Приложение установки должно взаимодействовать с стеком драйверов Bluetooth, чтобы создать GUID службы для предоставления функциональных возможностей. Поставщики указывают GUID службы в приложении и в INF-файле установки устройства.

Приложение установки должно вызвать API в режиме пользователя BluetoothSetLocalServiceInfo. Прежде чем приложение сможет вызвать этот API, приложение должно иметь права SE_LOAD_DRIVER_NAME безопасности. В следующем примере кода показано, как получить эту привилегию. Обратите внимание , что в примере не демонстрируется обработка ошибок.

HANDLE procToken;
LUID luid;
TOKEN_PRIVILEGES tp;

OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &procToken);

LookupPrivilegeValue(NULL, SE_LOAD_DRIVER_NAME, &luid);

tp.PrivilegeCount = 1;
tp.Privileges[0].Luid = luid;
tp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;

AdjustTokenPrivileges(procToken, FALSE, &tp, sizeof(TOKEN_PRIVILEGES), (PTOKEN_PRIVILEGES) NULL, (PDWORD)NULL);

INF-файл драйвера профиля

INF-файл драйвера профиля содержит сведения об устройстве Bluetooth для установки на стороне клиента. Для установки на стороне сервера INF-файл указывает идентификатор устройства, соответствующий GUID службы, созданному приложением установки. Все устройства Bluetooth являются членами класса Bluetooth . Установщик классов Bluetooth (Bthci.dll) помогает установить драйверы профилей.

Дополнительные сведения о создании и распространении INF-файлов и установке драйверов см. в статье Создание INF-файла и разделов и директив INF-файлов.

Идентификаторы Plug and Play

Стек драйверов Bluetooth создает аппаратные идентификаторы в соответствии со следующими шаблонами:

  • BTHENUM\{ ServiceGUID}_VID& nnnnnnnn
  • BTHENUM\{ ServiceGUID}_VID& nnnnnn_PID& nnnnnn
  • BTHENUM\{ ServiceGUID}_LOCALMFG& nnnn

Стек драйверов Bluetooth создает совместимые идентификаторы в соответствии со следующим шаблоном:

  • BTHENUM\{ ServiceGUID}

ServiceGUID — это 16-разрядный GUID, развернутый в 128-разрядный GUID, как определено спецификацией Bluetooth. Например, {00001124-0000-1000-8000-00805F9B34FB} соответствует устройству HID.

  • Восемь цифр после VID& соответствуют коду идентификатора поставщика.
  • Четыре цифры после PID и соответствуют коду идентификатора продукта.
  • Четыре цифры после LOCALMFG& соответствуют производителю локального радио Bluetooth.
  • Теги VID/PID и LOCALMFG не зависят друг от друга.

Самый общий идентификатор устройства — это ServiceGUID сам по себе. Рассмотрим пример.

BTHENUM\{00001124-0000-1000-8000-00805F9B34FB}

Стек драйверов Bluetooth может быть ограничен для загрузки вашего драйвера профиля и программного обеспечения, чтобы они работали только на конкретной версии прошивки удаленного устройства, посредством использования идентификаторов Plug and Play как на самом удаленном устройстве, так и в INF-файле. Стек драйверов Bluetooth создает пару VID/PID, только если устройство публикует идентификатор Plug and Play, который стек может обнаружить с помощью SDP. Рассмотрим пример.

BTHENUM\{00001124-0000-1000-8000-00805F9B34FB}_VID& nnnnnnnn_PID& nnnn

Стек драйверов Bluetooth можно ограничить так, чтобы загружался драйвер профиля и программное обеспечение работало только на определённом локальном радиоприёмнике Bluetooth, указав тег LOCALMFG в идентификаторе устройства в файле INF. Рассмотрим пример.

BTHENUM\{00001124-0000-1000-8000-00805F9B34FB}_LOCALMFG& nnnn