次の方法で共有


Bluetooth デバイスのインストール

重要

この記事はプログラマ向けです。 Bluetoothデバイスのインストールに関する問題が発生しているお客様は、「WindowsでBluetoothデバイスをペアリングする」を参照してください。

Bluetooth プロファイル ドライバーには、次の 2 つのインストールの種類があります。

  • リモートデバイスがそのサービスを広告し、コンピューターが接続するクライアントサイドのインストール。 たとえば、マウス、キーボード、プリンターなどです。
  • コンピューターがサービスをアドバタイズし、リモート デバイスがコンピューターに接続してそれらのサービスを使用できるサーバー側のインストール。 たとえば、ベンダーは、サーバー側のインストールを作成して、モバイル デバイスがコンピューターに接続されているプリンターに印刷できるようにすることができます。

これら 2 つのインストールの種類には、異なるインストール手順が必要です。

クライアント側プロファイル ドライバーのインストール

Bluetooth対応デバイスを使用するユーザーは、コンピューターの範囲内にデバイスを取り込み、クライアント側プロファイル ドライバーの次のインストール シーケンスを使用して、コンピューターからリモート デバイスへの接続を開始します。

  1. [コントロール パネル] で [Bluetooth デバイスの追加] を選択して、コンピューターの範囲内にあるすべてのデバイスを検索します。
  2. ペアリングするデバイスを選択します。
  3. デバイスをローカル 無線とペアリングします。これは PIN 交換を伴う場合と含まれていない場合があります。
  4. ローカル 無線は、リモート デバイスでサポートされているサービスを識別するために、サービス探索プロトコル (SDP) の問い合わせを発行します。
  5. 新しいハードウェアの検出ウィザードは、ローカル ハード ディスク ドライブと Windows Update 上の適切なドライバーを検索します。
  6. 新しいハードウェアの検出ウィザードでデバイスに適したドライバーが見つからない場合は、プロファイル ドライバーのデバイス セットアップ情報ファイル (INF ファイル) を含むプロファイル ドライバーのインストール メディアを挿入するように求められます。

サーバー側プロファイル ドライバーのインストール

Bluetooth ドライバー スタックは、Bluetooth SIG で定義されているサービス GUID と、Bluetooth SIG で定義されていないカスタム GUID をサポートします。

Microsoft Windows SDK で提供される guidgen.exe ツールを使用して、カスタム GUID を作成できます。

リモート Bluetooth デバイスで使用できるコンピューター機能を公開するには、ユーザー モード インストール アプリケーションを記述する必要があります。

インストール アプリケーションは、Bluetooth ドライバー スタックと通信して、公開する機能のサービス GUID を作成する必要があります。 ベンダーは、アプリケーションとデバイス インストール INF ファイルでサービス GUID を指定します。

インストール アプリケーションは、ユーザー モード 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 に対応するデバイス ID を指定します。 すべてのBluetoothデバイスは 、Bluetooth クラスのメンバーです。 Bluetooth クラス インストーラー (Bthci.dll) は、プロファイル ドライバーのインストールに役立ちます。

INF ファイルを作成・配布し、ドライバーをインストールする方法の詳細については、INF ファイルの作成 および INF ファイルセクションとディレクティブを参照してください。

プラグ アンド プレイ ID

Bluetooth ドライバー スタックは、次のテンプレートに従ってハードウェア ID を生成します。

  • BTHENUM\{ ServiceGUID}_VID& nnnnnnnn
  • BTHENUM\{ ServiceGUID}_VID& nnnnnnnn_PID& nnnn
  • BTHENUM\{ ServiceGUID}_LOCALMFG& nnnn

Bluetooth ドライバー スタックは、次のテンプレートに従って互換性のある ID を生成します。

  • BTHENUM\{ ServiceGUID}

ServiceGUID は、Bluetooth仕様で定義されている 128 ビット GUID に拡張された 16 ビット GUID です。 たとえば、{00001124-0000-1000-8000-00805F9B34FB} は HID デバイスに対応します。

  • 次の 8 桁の VID& は、ベンダー ID コードに対応します。
  • PID& に続く 4 桁の数字は、製品 ID コードに対応します。
  • LOCALMFG& に続く 4 桁の数字は、ローカル Bluetooth 無線の製造元に対応します。
  • VID/PID タグと LOCALMFG タグは互いに独立しています。

最も汎用的なデバイス ID は、 単独で ServiceGUID です。 例えば次が挙げられます。

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

Bluetooth ドライバー スタックは、リモート デバイスと INF ファイルの両方でプラグ アンド プレイ ID を使用して、リモート デバイスの特定のリリースでのみ実行するようにプロファイル ドライバーとソフトウェアを読み込むよう制限できます。 Bluetooth ドライバー スタックは、デバイスが SDP を使用してスタックが検出できるプラグ アンド プレイ ID を公開する場合にのみ、VID/PID ペアを生成します。 例えば次が挙げられます。

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

Bluetooth ドライバー スタックは、INF ファイル内のデバイス ID に LOCALMFG タグを指定することで、プロファイル ドライバーとソフトウェアを読み込み、特定のローカル Bluetooth 無線でのみ実行するように制限できます。 例えば次が挙げられます。

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