Bluetooth プロファイル ドライバーでの L2CAP 接続の受け入れ
L2CAP サーバー プロファイル ドライバーは、リモート デバイスからの受信論理リンク制御および適応プロトコル (L2CAP) 接続要求に応答します。 たとえば、PDA 用の L2CAP サーバー プロファイル ドライバーは、PDA からの受信接続要求に応答します。
着信 L2CAP 接続リクエストを受信するには
特定の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構造体を参照してください。
リモートデバイス/PSMペアから受信L2CAP接続要求を受信するには、プロファイルドライバ構築して送信するBRB_L2CA_REGISTER_SERVERリクエストで、リクエストに付随する _BRB_L2CA_REGISTER_SERVER 構造体の BtAddressメンバーにリモートデバイスのアドレスを指定し、Psmメンバーに PSM を指定します。 プロファイル ドライバーは、BRB_L2CA_REGISTER_SERVER 要求を送信するときに、L2CAP コールバック関数 を Bluetooth ドライバー スタックに登録する必要もあります。 これにより、Bluetooth ドライバー スタックは、受信 L2CAP 接続要求のプロファイル ドライバーに通知できます。
プロファイル ドライバーは、IOCTL_BTH_SDP_SUBMIT_RECORDを発行する必要があります。 その後、プロファイル ドライバーは、プロファイル ドライバーがサポートするサービスを記述する SDP レコードを登録できるため、リモート システムは SDP を使用して新しいサービスを検出できます。
Bluetooth ドライバー スタックがリモート デバイスから受信 L2CAP 接続要求を受信すると、Bluetooth ドライバー スタックは、プロファイル ドライバーによって以前に登録された L2CAP コールバック関数 を呼び出します。 Bluetooth ドライバー スタックは、値 IndicationRemoteConnect をコールバック関数の 表示パラメーターに渡します。
受信接続要求に応答するには、プロファイル ドライバーは 構築して送信するBRB_L2CA_OPEN_CHANNEL_RESPONSE 要求を実行する必要があります。 サーバー プロファイル ドライバーは、Bluetooth ドライバー スタックから渡された値を使用して、コールバック関数のパラメーターに パラメーターを挿入して、リモート デバイスとの接続設定をネゴシエートします。 この要求で渡された_BRB_L2CA_OPEN_CHANNEL構造体の 応答メンバーの値に基づいて、サーバー プロファイル ドライバーは接続要求を受け入れるか拒否します。
サーバー プロファイル ドライバーが接続を受け入れると、Bluetooth ドライバー スタックはL2CAP コールバック関数 は、コールバックメンバーで指定されています。 _BRB_L2CA_OPEN_CHANNEL構造。 Bluetooth ドライバー スタックは、この関数を使用して、L2CAP 接続への変更をサーバー プロファイル ドライバーに通知します。
Note
- 1 つのプロファイル ドライバーは、複数の BRB_L2CA_REGISTER_SERVER要求を構築して送信し、要求の BtAddressと Psm メンバーに一意のリモート デバイス アドレスと 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 イベント通知のサポートを参照してください。