Bluetooth プロファイル ドライバーでの L2CAP 接続の受け入れ

L2CAP サーバー プロファイル ドライバーは、リモート デバイスからの受信論理リンク制御および適応プロトコル (L2CAP) 接続要求に応答します。 たとえば、PDA 用の L2CAP サーバー プロファイル ドライバーは、PDA からの受信接続要求に応答します。

着信 L2CAP 接続リクエストを受信するには

  1. 特定のPSMリモートデバイスから受信L2CAP接続要求を受信するには、プロファイルドライバはまず構築して送信するBRB_L2CA_REGISTER_SERVER要求、要求の _BRB_L2CA_REGISTER_SERVER 構造体の BtAddress メンバーに NULLを指定し、Psmメンバーに 0 を指定します。 プロファイル ドライバーは、BRB_L2CA_REGISTER_SERVER 要求を送信するときに、L2CAP コールバック関数 を Bluetooth ドライバー スタックに登録する必要もあります。 これにより、Bluetooth ドライバー スタックは、受信 L2CAP 接続要求のプロファイル ドライバーに通知できます。

    次に、プロファイル ドライバーは、構築して送信するBRB_REGISTER_PSM要求を送信して、Bluetooth ドライバー スタックが要求によって登録された PSM からの接続を受け入れるようにする必要があります。 それ以外の場合、Bluetooth ドライバー スタックは、不明な (未登録) 接続要求を持つすべての接続要求を拒否します。 PSM の詳細については、_BRB_PSM構造体を参照してください。

  2. リモートデバイス/PSMペアから受信L2CAP接続要求を受信するには、プロファイルドライバ構築して送信するBRB_L2CA_REGISTER_SERVERリクエストで、リクエストに付随する _BRB_L2CA_REGISTER_SERVER 構造体の BtAddressメンバーにリモートデバイスのアドレスを指定し、Psmメンバーに PSM を指定します。 プロファイル ドライバーは、BRB_L2CA_REGISTER_SERVER 要求を送信するときに、L2CAP コールバック関数 を Bluetooth ドライバー スタックに登録する必要もあります。 これにより、Bluetooth ドライバー スタックは、受信 L2CAP 接続要求のプロファイル ドライバーに通知できます。

  3. プロファイル ドライバーは、IOCTL_BTH_SDP_SUBMIT_RECORDを発行する必要があります。 その後、プロファイル ドライバーは、プロファイル ドライバーがサポートするサービスを記述する SDP レコードを登録できるため、リモート システムは SDP を使用して新しいサービスを検出できます。

  4. Bluetooth ドライバー スタックがリモート デバイスから受信 L2CAP 接続要求を受信すると、Bluetooth ドライバー スタックは、プロファイル ドライバーによって以前に登録された L2CAP コールバック関数 を呼び出します。 Bluetooth ドライバー スタックは、値 IndicationRemoteConnect をコールバック関数の 表示パラメーターに渡します。

  5. 受信接続要求に応答するには、プロファイル ドライバーは 構築して送信するBRB_L2CA_OPEN_CHANNEL_RESPONSE 要求を実行する必要があります。 サーバー プロファイル ドライバーは、Bluetooth ドライバー スタックから渡された値を使用して、コールバック関数のパラメーターに パラメーターを挿入して、リモート デバイスとの接続設定をネゴシエートします。 この要求で渡された_BRB_L2CA_OPEN_CHANNEL構造体の 応答メンバーの値に基づいて、サーバー プロファイル ドライバーは接続要求を受け入れるか拒否します。

  6. サーバー プロファイル ドライバーが接続を受け入れると、Bluetooth ドライバー スタックはL2CAP コールバック関数 は、コールバックメンバーで指定されています。 _BRB_L2CA_OPEN_CHANNEL構造。 Bluetooth ドライバー スタックは、この関数を使用して、L2CAP 接続への変更をサーバー プロファイル ドライバーに通知します。

Note

  • 1 つのプロファイル ドライバーは、複数の BRB_L2CA_REGISTER_SERVER要求を構築して送信し、要求の BtAddressPsm メンバーに一意のリモート デバイス アドレスと PSM ペアを指定して、複数の L2CAP サーバーを登録することで、複数の異なるリモート デバイス/PSM ペアから受信 L2CAP 接続要求を受信するように登録できます。
  • 単一のプロファイル ドライバーは、特定の PSM の任意のリモート デバイスからの受信 L2CAP 接続要求を受信するように登録できるだけでなく、複数からの受信 L2CAP 接続要求を受信するように登録できます。 異なるリモート デバイス/PSM ペア。まず、特定の PSM のリモート デバイスから着信 L2CAP 接続要求を受信するように登録し、次に特定の PSM が登録されている限り、特定のリモート デバイス/PSM ペアから着信 L2CAP 接続要求を受信するように登録します。 最初のステップは再度登録されません。
  • 複数のプロファイル ドライバーを登録して、同じ PSM のリモート デバイスから受信する L2CAP 接続要求を受信することはできません。 Bluetooth ドライバー スタックでは、1 つのプロファイル ドライバーのみが、特定の PSM のリモート デバイスから受信する L2CAP 接続要求を受信できます。

プロファイル ドライバーは接続要求を受け入れると、他の BRB を使用して、新しく確立された L2CAP 接続経由でデータを送受信できます。

リモート デバイスの L2CAP 接続試行の通知の受信を停止するには、プロファイル ドライバーが ビルドして送信BRB_L2CA_UNREGISTER_SERVERプロファイル ドライバーが IRP_MN_REMOVE_DEVICEプラグ アンド プレイ削除通知を処理するときにサーバーの登録を解除する要求。

通知とコールバック関数の詳細については、Bluetooth イベント通知のサポートを参照してください。