リモート デバイスへの L2CAP クライアント接続の作成
L2CAP クライアント プロファイル ドライバーは、リモート デバイスへの非同期接続レス リンク (ACL) 接続を要求するプロファイル ドライバーです。 デバイスが接続を受け入れると、L2CAP クライアント プロファイル ドライバーに接続に対する変更が通知されます。 たとえば、L2CAP クライアント プロファイル ドライバーはリモート プリンターへの接続を要求でき、プリンターが要求を受け入れた後、Bluetooth ドライバー スタックは、プリンターの電源がオフになったり削除されたときにプロファイル ドライバーに通知できます。
デバイスへの接続を要求するには、L2CAP クライアント プロファイル ドライバーには、デバイスが使用するプロトコル/サービス マルチプレクサー (PSM) などのリモート デバイスに関する情報が必要です。 クライアント プロファイル ドライバーは、サービス探索プロトコル (SDP) DDI またはサービスの固定 PSM を使用して、この情報を取得できます。 この情報を取得する方法の詳細については、次を参照してください SDP サービス情報へのアクセス.
リモート デバイスへの L2CAP 接続を開始するには、クライアント プロファイル ドライバーがデバイスに関する必要な情報を取得した後、次のことを行う必要があります 構築して送信する その BRB_L2CA_OPEN_CHANNEL 要求.
クライアント プロファイル ドライバーがリクエストを構築するとき、クライアント プロファイル ドライバーは、 _BRB_L2CA_OPEN_CHANNEL の構造 パラメーター.その他.引数1 要求に関連付けられた IRP のメンバー。 この構造体には、リモート デバイスの Bluetooth アドレス、デバイスに登録されている PSM、および追加の構成パラメーターが含まれます。
リモート デバイスがオープン チャネル要求を受け入れると、 OutResults と インリザルト _BRB_L2CA_OPEN_CHANNEL 構造体のメンバーには、新しく作成された接続に関する情報が含まれます。 The OutResults member は、チャネルのアウトバウンド半分のパラメータを指定します InResults member は、チャネルの受信側の半分のパラメータを指定します。
_BRB_L2CA_OPEN_CHANNEL 構造体で渡されるいくつかの構成値 (例: Mtu メンバーは、リモートデバイスとの接続をネゴシエートするために使用されます。 クライアント プロファイル ドライバーは、チャネル ネゴシエーションが成功する可能性を高めるために、できるだけ広い範囲を提供する必要があります。 基本的な Bluetooth 最小 MTU サイズより大きい最小メッセージ転送ユニット (MTU) サイズを指定する必要があるのは、絶対に必要な場合のみです。 ネゴシエーションが失敗した場合、接続は失敗します。
その 着信キューの深さ _BRB_L2CA_OPEN_CHANNEL 構造体のメンバーは、Bluetooth ドライバー スタックが受信して接続上でキューに入れる MTU の最大数を指定します。この数を超えると、Bluetooth ドライバー スタックは MTU の破棄を開始します。 この値を非常に小さい値に設定すると、データ損失の可能性が高くなりますが、非常に大きな数に設定すると、メモリ要件が増加します。 Microsoftでは、このメンバーを10に設定することをお勧めします。
プロファイル ドライバーがリモート デバイスへの L2CAP 接続を必要としなくなった場合、プロファイル ドライバーは次のようにする必要があります build and send a BRB_L2CA_CLOSE_CHANNEL 要求.