Bluetooth ドライバー スタックは、Bluetooth プロトコルに対して Microsoft が提供するサポートのコア部分で構成されます。 このスタックを使用すると、Bluetooth対応デバイスは互いを見つけて接続を確立できます。 これらの接続全体で、デバイスはさまざまなアプリケーションを介してデータを交換し、相互に対話できます。
次の図は、Bluetooth ドライバー スタック内のモジュールと、Windows Vista 以降に含まれていないカスタム ユーザー モードドライバーとカーネル モード ドライバーを示しています。 カスタム ドライバーは プロファイル ドライバーと呼ばれます。
アーキテクチャ イメージには、次のコンポーネントと例が含まれています。
ユーザー モード
ユーザー モード アプリケーション: ユーザー モード アプリケーション は、発行された API を介してBluetooth ドライバー スタックにアクセスします。 詳細については、Windows SDK ドキュメントの 「Bluetoothについて 」を参照してください。
ユーザー モード アプリケーションは、BluetoothSetLocalServiceInfo などの API を使用するために、IrProps.lib ではなく BthProps.lib にリンクする必要があります。
プロファイル ドライバーの例
WAP カーネル モード ドライバー: ワイヤレス アプリケーション プロトコル (WAP) コンポーネントは、Windows ネットワーク スタックと BthPort の間で通信するプロファイル ドライバーの例です。 L2CAP インターフェイスにアクセスし、必要に応じて L2CAP に含まれるサービス探索プロトコル (SDP) インターフェイスにアクセスします。 その他の考えられるプロファイルには、Advanced Audio Distribution Profile (A2DP)、A/V Remote Control Profile (AVRCP)、Generic A/V Distribution profile (GAVDP)、Common ISDN Access (CIP) プロファイルなどがあります。
オーディオ カーネル モード ドライバー: Windows オーディオ スタックと BthPort の間で通信するプロファイル ドライバーの例。BthPort に含まれる SCO インターフェイスにアクセスします。 可能なプロファイルには、ハンズフリー プロファイル (HFP)、ヘッドセット プロファイル (HSP)、コードレス テレフォニー プロファイル (CTP)、インターホン プロファイル (ICP) などがあります。 このプロファイル ドライバーは、Windows 8 以降の Windows に含まれています。
Bluetooth LE 心拍数モニター プロファイル: Bluetooth低エネルギー (LE) API と通信するBluetooth LE プロファイル ドライバーの例。
Bluetoothドライバースタックコンポーネント
IrProps: Bluetooth ドライバー スタックの最初のバージョン用に作成されたプロファイル ドライバーとの下位互換性のために使用されるコンポーネント。 IrProps は、下位互換性のためにのみ提供されます。 新しい開発では、 BthProps コンポーネントを 使用します。
BthProps: Bluetooth ユーザー インターフェイスの実装と、ユーザー モード アプリケーションがアクセスするBluetooth API の実装を含むコンポーネント。 このコンポーネントは、リモート プロシージャ コール (RPC) を介して BthServ に問い合わせを送信します。 さらに、BthProps はプライベート IOCTL を介して BthPort とのピン交換を実行します。 BthProps は、Bluetooth対応無線を使用するすべてのシステムで実行されます。
BthServ: 問い合わせデータのキャッシュと Bthport への転送を担当するサービス。
BthCi: Bluetooth クラス インストーラー。
WshBth: Bluetooth Windows ソケット ヘルパー コンポーネント。 WshBth は、ソケット操作を実行するために Windows ソケット レイヤーによって呼び出されます。 WshBth は主にトランスポート ドライバー インターフェイス (TDI) を介して RFCOMM を呼び出します。 また、WshBth は BthServ を呼び出してリモート デバイスの問い合わせを実行し、BthPort に呼び出してローカル 無線の問い合わせを実行します。
FSquirt: ユーザーが開いているBluetooth接続を介してファイルを送受信できるようにする、非拡張オブジェクト交換 (OBEX) コンポーネント。 OBEX は、WshBth コンポーネントを使用する RFCOMM を介してリモート デバイスと通信します。
BthPrint: ハードコピー ケーブル交換プロファイル (HCRP) を実装するコンポーネント。 このコンポーネントにより、印刷システムは、Bluetooth対応プリンターとの間でデータの送受信を行うことができます。 BthPrint は BthPort の SDP インターフェイスと通信して、リモート プリンターと BthPort の L2CAP インターフェイスにクエリを実行してデータを送受信します。
HidBth: ヒューマン インターフェイス デバイス (HID) プロファイルを実装するコンポーネント。 HidBth は、BthPort の L2CAP および SDP インターフェイスとも通信します。 HidBth USB HID モジュールと同様の方法で HID スタックに接続します。
BthPan: パーソナル エリア ネットワーク (PAN) プロファイルを実装するコンポーネント。これは、開いているBluetooth接続間で TCP 接続を提供します。 Windows Vista および Windows XP では、BthPan は送信接続のみをサポートします。 BthPan は BthPort コンポーネントのクライアントでもあり、L2CAP インターフェイスと SDP インターフェイスの両方を使用します。
RFCOMM: Bluetooth シリアル ケーブル エミュレーション プロトコルを実装するコンポーネント。 RFCOMM では、BthPort で見つかった L2CAP および SDP インターフェイスも使用されます。 RFCOMM の上端は TDI インターフェイスを公開するため、このコンポーネントはネットワーク トランスポートとして表示されます。 この方法は、WshBth がユーザー モード API からデータを送受信するために Bluetooth に接続する方法です。
ユーザー モード アプリケーションは、Windows SDK で説明されている Winsock インターフェイスを使用して RFCOMM にアクセスできます。
BthModem: 仮想 COM ポートとダイヤルアップ ネットワーク (DUN) を実装するコンポーネント。 BthModem は、すべての I/O および制御操作を TDI インターフェイスを介して RFCOMM に転送します。 BthModem の上端は 、Serial.sys ファイルと通信して、ワイヤレス COM ポートの外観を提供します。
BthEnum: Bluetooth バス ドライバー。 BthEnum はプラグ アンド プレイ (PnP) マネージャーと通信して、Bluetooth サービスを有効にするために使用されるデバイス オブジェクトを作成および破棄します。 BthEnum は、接続されたリモート デバイスがサポートするすべてのサービスに対して PDO を作成します。 たとえば、ユーザーがBluetooth対応のマウスを接続すると、Windows はマウスがBluetooth HID サービスをサポートしていることを検出します。 Windows は、HID サービスが呼び出され、PnP マネージャーが HidBth を読み込むための PDO を作成します。
注
BthEnum では、Bth.inf INF ファイルで指定されている UnsupportedServices レジストリ キーに表示されるサービスの PDO は作成されません。
BthLEEnum: Bluetooth Low Energy(LE)バスドライバー。 BthLEEnum は、ATT プロトコルと GATT プロファイルを実装します。 このドライバーは、リモート デバイスとそのプライマリ サービスを表す PDO の作成も担当します。
BthPort: BthUsb ミニポートによって読み込まれたミニドライバー。 BthPort には、次の 4 つのコンポーネントが用意されています。
HCI コンポーネントは、Bluetooth仕様で定義されているホスト コントローラー インターフェイス (HCI) を介して、ローカル Bluetooth対応無線と通信します。 Bluetooth対応のすべての無線は HCI 仕様を実装しているため、BthPort は製造元やモデルに関係なく、Bluetooth対応の無線と通信できます。
SCO コンポーネントは、同期 Connection-Oriented (SCO) プロトコルを実装します。 このプロトコルでは、リモート デバイスへのポイントツーポイント接続の作成がサポートされています。 SCO クライアントは、Bluetooth要求ブロック (BRB) を 構築して送信することにより、 SCO インターフェイスと通信します。
L2CAP は、Bluetooth論理リンク制御および適応プロトコルを実装します。 このプロトコルは、リモート デバイスへの無損失チャネルの作成をサポートします。 L2CAP クライアントは、BRB を構築して送信することにより、L2CAP インターフェイスと通信します。
SDP は、Bluetooth サービス探索プロトコルを実装します。
BthUsb.sys: BthPort からバス インターフェイスを抽象化するミニポート。