Bluetooth イベント通知のサポート
プロファイル ドライバーは、リモート デバイスへの接続を開くと、接続が閉じられたときに、または接続に対するその他の変更が発生したときに通知されるように自身を登録する必要があります。 さらに、プロファイル ドライバーが受信接続を受け入れるために自身を登録する場合、リモート デバイスが接続しようとしたときに通知を受け取ることができる必要があります。
同期接続指向 (SCO) 接続を使用するプロファイル ドライバは、 SCO コールバック機能. クライアント プロファイル ドライバーは、リモート デバイスへの接続を要求するときに、適切なコールバック関数を登録します。
SCO プロファイル ドライバーが発行するとき BRB_SCO_OPEN_CHANNEL BRB は、そのへのポインタを指定します SCO コールバック機能 で コールバック BRB の対応するメンバー _BRB_SCO_OPEN_CHANNEL 構造。 リモート デバイスが SCO 接続要求を受け入れる場合、Bluetooth ドライバー スタックは、SCO 接続に変更が発生したときにコールバック関数を介してプロファイル ドライバーに通知を送信できます。
SCO 接続の作成の詳細については、次を参照してください リモートデバイスへのSCOクライアント接続の作成.
論理リンク コントローラーおよび適応プロトコル (L2CAP) 接続を使用するプロファイル ドライバーは、 L2CAPコールバック機能.
L2CAP プロファイルドライバが BRB_L2CA_OPEN_CHANNEL BRB は、そのへのポインタを指定します L2CAPコールバック機能 で コールバック BRB の対応するメンバー _BRB_L2CA_OPEN_CHANNEL 構造。 リモート デバイスが L2CAP 接続要求を受け入れると、L2CAP 接続に変更が発生したときに、Bluetooth ドライバー スタックはコールバック関数を介してプロファイル ドライバーに通知を送信できます。
L2CAP 接続の作成の詳細については、次を参照してください リモートデバイスに対する L2CAP クライアント接続の作成.
同様に、プロファイル ドライバーが受信 (L2CAP、SCO) 接続要求を受け入れるように自身を登録する場合、リモート デバイスがそれに接続しようとしたときに通知されるコールバック関数を登録する必要があります。
L2CAP を使用するプロファイルドライバーは、 L2CAPコールバック機能 で インディケーションコールバック の会員 _BRB_L2CA_REGISTER_SERVER 構造。 Bluetooth ドライバー スタックは、コールバック関数を呼び出して、リモート デバイスがプロファイル ドライバーへの L2CAP 接続を開始しようとしたときにプロファイル ドライバーに通知できます。
SCO を使用するプロファイルドライバー彼らのを指定する SCO コールバック機能 で インディケーションコールバック の会員 _BRB_SCO_REGISTER_SERVER 構造。 Bluetooth ドライバー スタックは、コールバック関数を呼び出して、リモート デバイスがプロファイル ドライバーへの SCO 接続を開始しようとしたときにプロファイル ドライバーに通知できます。
プロファイル ドライバーが適切なコールバック関数を登録した後、Bluetooth ドライバー スタックは、開いている接続全体でイベントが発生した場合に、プロファイル ドライバーに通知することもできます。
Note
プロファイル ドライバーは、同じコールバック関数を登録して、開いているチャネルに関する通知と、それに接続しようとしているリモート デバイスに関する変更通知を送信できます。
L2CAP接続の場合は、 L2CAPコールバック機能 は 3 つのパラメータを受け入れます:
L2CAP 接続に対して定義されているコンテキスト。 BRB_L2CA_REGISTER_SERVER 要求の場合、このコンテキストは、 通知コールバックコンテキスト リクエストと一緒に渡された _BRB_L2CA_REGISTER_SERVER 構造体のメンバー。 の場合は、 BRB_L2CA_OPEN_CHANNEL or BRB_L2CA_OPEN_CHANNEL_RESPONSE 要求の場合、このコンテキストは、 コールバックコンテキスト リクエストとともに渡される _BRB_L2CA_OPEN_CHANNEL 構造体のメンバー。
からの値 INDICATION_CODE 受信 L2CAP 接続またはボンディング状態の変更の通知イベントのタイプを示すリスト。
に対するポインタ INDICATION_PARAMETERS 通知イベントに関連付けられたパラメータが含まれる構造体。
に渡される値 L2CAPコールバック機能's 適応症 パラメータで指定するのどの組合員が パラメータ の労働組合 パラメータ プロファイルドライバーが使用する必要があるパラメーター。
の値が 適応症 パラメータが等しい... | ...次の共用体メンバーを使用します パラメータ パラメーター |
---|---|
IndicationRemoteConnect | のインスタンスに接続するときには、 |
IndicationRemoteConfigRequest | 構成リクエスト |
IndicationRemoteConfigResponse | 構成応答 |
IndicationFreeExtraOptions | 無料エクストラオプション |
IndicationRemoteDisconnect | Disconnect (切断) |
IndicationRecvPacket | 受信パケット |
SCO接続の場合は、 SCO コールバック機能 3 つの引数を受け入れます:
SCO 接続に対して定義されているコンテキスト。 の場合は、 BRB_SCO_REGISTER_SERVER 要求の場合、このコンテキストは、 通知コールバックコンテキスト リクエストと一緒に渡された _BRB_SCO_REGISTER_SERVER 構造体のメンバー。 の場合は、 BRB_SCO_OPEN_CHANNEL or BRB_SCO_OPEN_CHANNEL_RESPONSE 要求の場合、このコンテキストは、 コールバックコンテキスト リクエストと一緒に渡される_BRB_SCO_OPEN_CHANNEL 構造体のメンバー。
からの値 SCO_INDICATION_CODE 着信 SCO 接続またはボンディング状態変更の通知のタイプを示す列挙体。
に対するポインタ SCO_INDICATION_PARAMETERS 通知イベントに関連付けられたパラメータが含まれる構造体。
に渡される値 SCO コールバック関数's Indication パラメーターで指定します のどの組合員が パラメータ の労働組合 パラメータ プロファイルドライバーが使用する必要があるパラメーター。
の値が 適応症 パラメータが等しい... | ...次の共用体メンバーを使用します パラメータ パラメーター |
---|---|
ScoIndicationRemoteConnect | のインスタンスに接続するときには、 |
ScoIndicationRemoteDisconnect | Disconnect (切断) |
プラグ アンド プレイ削除 IRP の処理
プロファイルドライバはすべてをパスする必要があります IRP_MN_SURPRISE_REMOVAL IRP はすぐにスタックを下回り、Bluetooth ドライバー スタックによって処理されます。 突然の削除 IRP の処理の一環として、開いているチャネルを閉じないでください。 突然の削除 IRP を受信した後、基になるラジオにデータを送信する BRB をビルドして送信しないでください。 ただし、プロファイル ドライバーは、突然の削除 IRP の処理中に他のクリーンを実行できます。
Bluetooth ドライバー スタックが突然の削除 IRP を受け取った後、それは過ぎていきます ScoIndicationRemoteDisconnect to the SCO コールバック機能 プロファイルドライバーがビルドされたときにプロファイルドライバーによって指定されたものそして送信しました BRB_SCO_OPEN_CHANNEL または BRB_SCO_OPEN_CHANNEL_RESPONSE 要求して、現在開いている SCO チャネルをすべて閉じます。 同様に、Bluetooth ドライバー スタックも合格します インディケーションリモート切断 への L2CAP callback function プロファイルドライバーで指定されたものプロファイル ドライバーがビルドして送信したとき BRB_L2CA_OPEN_CHANNEL または BRB_L2CA_OPEN_CHANNEL_RESPONSE 現在開いている L2CAP チャネルを閉じるリクエスト。
プロファイル ドライバーは、処理時にすべてのサーバーの登録を解除する必要があります IRP_MN_REMOVE_DEVICE IRPs. SCO サーバーの登録を解除するには、プロファイル ドライバーは次のことを行う必要があります ビルドして送信する a BRB_SCO_UNREGISTER_SERVER 要求. SCO サーバーの登録を解除するには、プロファイル ドライバーは次のことを行う必要がありますビルドして送信する BRB_L2CA_UNREGISTER_SERVER 要求.