_BRB_L2CA_OPEN_CHANNEL構造体 (bthddi.h)
_BRB_L2CA_OPEN_CHANNEL構造体は、リモート デバイスに対して開く L2CAP チャネル、またはリモート デバイスによって開始された受信 L2CAP 接続要求を受け入れるか拒否するプロファイル ドライバーからの応答を記述します。
構文
struct _BRB_L2CA_OPEN_CHANNEL {
BRB_HEADER Hdr;
L2CAP_CHANNEL_HANDLE ChannelHandle;
union {
struct {
USHORT Response;
USHORT ResponseStatus;
};
USHORT Psm;
};
ULONG ChannelFlags;
BTH_ADDR BtAddress;
struct {
ULONG Flags;
L2CAP_CONFIG_VALUE_RANGE Mtu;
L2CAP_CONFIG_VALUE_RANGE FlushTO;
L2CAP_FLOWSPEC Flow;
USHORT LinkTO;
ULONG NumExtraOptions;
PL2CAP_CONFIG_OPTION ExtraOptions;
struct {
UCHAR ServiceType;
ULONG Latency;
} LocalQos;
} ConfigOut;
struct {
ULONG Flags;
L2CAP_CONFIG_VALUE_RANGE Mtu;
L2CAP_CONFIG_RANGE FlushTO;
} ConfigIn;
ULONG CallbackFlags;
PFNBTHPORT_INDICATION_CALLBACK Callback;
PVOID CallbackContext;
PVOID ReferenceObject;
CHANNEL_CONFIG_RESULTS OutResults;
CHANNEL_CONFIG_RESULTS InResults;
UCHAR IncomingQueueDepth;
};
メンバーズ
Hdr
現在の BRB に関する情報を含む BRB_HEADER 構造体。
ChannelHandle
成功した接続時に接続を識別するために使用されるハンドル。
BRB_L2CA_OPEN_CHANNELを送信すると、BRB の完了時に入力されます。
BRB_L2CA_OPEN_CHANNEL_RESPONSEを送信する場合は、BRB を送信する前にサーバーが入力する必要があります。 割り当てられた値は、IndicationRemoteConnect 中に渡された INDICATION_PARAMETERS::ConnectionHandle
する必要があります。
Response
BRB_L2CA_OPEN_CHANNEL_RESPONSEでのみ使用されます。 CONNECT_RSP_RESULT_Xxx値の 1 つが使用されます。
BRB が STATUS_REQUEST_NOT_ACCEPTED の状態で返された場合、Response にはリモート ホストからの否定応答が含まれます。
ResponseStatus
応答 がCONNECT_RSP_RESULT_PENDINGと等しい場合、このフィールドは有効です。 CONNECT_RSP_STATUS_XXX値の 1 つが使用されます。
Psm
チャネルがリモート デバイスへの接続に使用するプロトコル/サービス マルチプレクサー (PSM)。 BRB_L2CA_OPEN_CHANNEL 要求で使用する場合、このメンバーは入力フィールドとして設定されます。 BRB_L2CA_OPEN_CHANNEL_RESPONSE 要求で使用する場合、このメンバーは出力フィールドとして使用されます。
ChannelFlags
開くチャネルの要件を指定するフラグ。 有効なフラグ値を次の表に示します。
旗 | 形容 |
---|---|
CF_LINK_AUTHENTICATED | リンクを認証する必要があります。 |
CF_LINK_ENCRYPTED | リンクは暗号化する必要があります。 このフラグを設定すると、CF_LINK_AUTHENTICATED フラグも設定されます。 |
CF_LINK_SUPPRESS_PIN | プロファイル ドライバーは、ユーザーに PIN の入力を求めないことを示します。 |
BtAddress
接続の対象となるデバイスのBluetoothアドレス。
ConfigOut
リモート デバイスに送信される BRB_L2CA_OPEN_CHANNEL BRB のパラメーター設定を含むサブ構造体。
ConfigOut.Flags
開くチャネルの要件を指定するフラグ。 有効なフラグ値を次の表に示します。
旗 | 形容 |
---|---|
CF_LINK_AUTHENTICATED | リンクを認証する必要があります。 |
CF_LINK_ENCRYPTED | リンクは暗号化する必要があります。 このフラグを設定すると、CF_LINK_AUTHENTICATED フラグも設定されます。 |
CF_LINK_SUPPRESS_PIN | プロファイル ドライバーは、ユーザーに PIN の入力を求めないことを示します。 |
ConfigOut.Mtu
チャネルの送信半分のサイズをネゴシエートするために使用されるメッセージ転送ユニット (MTU) の範囲。
ConfigOut.FlushTO
チャネルの送信半分のフラッシュ タイムアウトに使用できる値の範囲。
ConfigOut.Flow
将来の使用のために予約されています。 使用しないでください。
ConfigOut.LinkTO
リンク マネージャーのリンク タイムアウト。
ConfigOut.NumExtraOptions
ExtraOptions メンバーに含まれる配列項目の数。 ほとんどのクライアントでは、この値は 0 にする必要があります。
ConfigOut.ExtraOptions
ExtraOptions メンバーに含まれる配列項目の数。 ほとんどのクライアントでは、この値は 0 にする必要があります。
ConfigOut.LocalQos
将来の使用のために予約されています。 使用しないでください。
ConfigOut.LocalQos.ServiceType
将来の使用のために予約されています。 使用しないでください。
ConfigOut.LocalQos.Latency
将来の使用のために予約されています。 使用しないでください。
ConfigIn
リモート デバイスから送信される受信 BRB_L2CA_OPEN_CHANNEL_RESPONSE BRB を検証するためのパラメーター設定を含むサブ構造体。
ConfigIn.Flags
開くチャネルの要件を指定するフラグ。 有効なフラグ値を次の表に示します。
旗 | 形容 |
---|---|
CF_LINK_AUTHENTICATED | リンクを認証する必要があります。 |
CF_LINK_ENCRYPTED | リンクは暗号化する必要があります。 このフラグを設定すると、CF_LINK_AUTHENTICATED フラグも設定されます。 |
CF_LINK_SUPPRESS_PIN | プロファイル ドライバーは、ユーザーに PIN の入力を求めないことを示します。 |
ConfigIn.Mtu
チャネルの送信半分のサイズをネゴシエートするために使用されるメッセージ転送ユニット (MTU) の範囲。
ConfigIn.FlushTO
チャネルの送信半分のフラッシュ タイムアウトに使用できる値の範囲。
CallbackFlags
イベントが発生したことをプロファイル ドライバーに通知するコールバック ルーチンを生成する必要があるイベントを指定するフラグ。 有効なフラグ値を次の表に示します。
旗 | 形容 |
---|---|
CALLBACK_CONFIG_EXTRA_IN | 設定すると、リモート デバイスの構成要求に追加のオプションが含まれているときにコールバック ルーチンが呼び出されます。 設定されていない場合、追加の構成オプションは不明なオプションとして拒否されます。 このフラグは、BRB_L2CA_OPEN_CHANNEL_RESPONSE BRB と共に使用されます。 |
CALLBACK_CONFIG_EXTRA_OUT | 設定すると、リモート デバイスがBRB_L2CA_OPEN_CHANNEL要求から追加の構成オプションを拒否したときにコールバック ルーチンが呼び出されます。 設定されておらず、リモート デバイスが追加のオプションのために構成要求を拒否した場合、接続は閉じられます。 |
CALLBACK_CONFIG_QOS | 設定すると、リモート デバイスが QOS 値を含む構成要求を送信すると、コールバック ルーチンが呼び出されます。 このフラグが設定されておらず、リモート デバイスが構成要求で QOS パラメーターを送信するか、プロファイル ドライバーの要求された QOS パラメーターを拒否した場合、接続は切断されます。 |
CALLBACK_DISCONNECT | 設定すると、リモート デバイスが L2CAP チャネルから切断されたときにコールバック ルーチンが呼び出されます。 |
CALLBACK_RECV_PACKET | 設定すると、プロファイル ドライバーが受信 L2CAP パケットを受信したときにコールバック ルーチンが呼び出されます。 |
Callback
L2CAP コールバック関数 プロファイル ドライバーによって実装されます。Bluetooth ドライバー スタックは、L2CAP 接続への変更についてプロファイル ドライバーに通知するために呼び出す必要があります。
CallbackContext
Callback メンバーで指定されたコールバック関数に渡すコンテキスト。 プロファイル ドライバーは、この値を定義します。
ReferenceObject
ObReferenceObject に渡すオブジェクトへのポインターと、参照カウントを保持する ObDereferenceObject します。
OutResults
送信要求の構成パラメーターを含む CHANNEL_CONFIG_RESULTS 構造体。
InResults
受信要求の構成パラメーターを含むCHANNEL_CONFIG_RESULTS構造体。
IncomingQueueDepth
受信キューの長さをメッセージ転送単位 (MTU) で指定します。
応答
このメンバーは、BRB_L2CA_OPEN_CHANNEL_RESPONSE 要求の入力パラメーターと、BRB_L2CA_OPEN_CHANNEL 要求の出力パラメーターとして使用されます。
BRB_L2CA_OPEN_CHANNEL_RESPONSE 要求の場合、このメンバーは、リモート デバイスに対するプロファイル ドライバーの応答を示すフラグを保持します。 有効なフラグ値を次の表に示します。
旗 | 形容 |
---|---|
CONNECT_RSP_RESULT_NO_RESOURCES | プロファイル ドライバーは、リソースが不足しているため、接続を拒否しました。 |
CONNECT_RSP_RESULT_PENDING | プロファイル ドライバーは現在ビジー状態であり、接続を受け入れることができません。 後でもう一度やり直してください。 |
CONNECT_RSP_RESULT_PSM_NEG | PSM がサポートされていないため、プロファイル ドライバーは接続を拒否しました。 |
CONNECT_RSP_RESULT_SECURITY_BLOCK | プロファイル ドライバーは、セキュリティ上の理由から接続を拒否しました。 |
CONNECT_RSP_RESULT_SUCCESS | プロファイル ドライバーが接続を受け入れた。 |
BRB_L2CA_OPEN_CHANNEL BRB の場合、このメンバーには、プロファイル ドライバーが接続しようとしたリモート デバイスからの応答が含まれます。 有効なフラグ値を次の表に示します。
旗 | 形容 |
---|---|
CONNECT_RSP_RESULT_NO_RESOURCES | リソースがないため、リモート デバイスが接続を拒否しました。 |
CONNECT_RSP_RESULT_PSM_NEG | リモート デバイスが接続を拒否しました。 |
CONNECT_RSP_RESULT_SECURITY_BLOCK | リモート デバイスは、セキュリティ上の理由から接続を拒否しました。 |
CONNECT_RSP_RESULT_SUCCESS | リモート デバイスが接続を受け入れた。 |
ResponseStatus
BRB_L2CA_OPEN_CHANNEL_RESPONSE BRB の呼び出し中に、Response メンバーが CONNECT_RSP_RESULT_PENDING
に設定されている場合、このメンバーは有効であり、次のいずれかの値が含まれます。
- CONNECT_RSP_STATUS_AUTHENTICATION_PENDING
- CONNECT_RSP_STATUS_AUTHORIZATION_PENDING
- CONNECT_RSP_STATUS_NO_INFORMATION
備考
L2CAP チャネルを開くには、プロファイル ドライバーがビルド し、BRB_L2CA_OPEN_CHANNEL 要求 送信する必要があります。
クライアントとして機能するプロファイル ドライバーは、宛先アドレス、PSM、およびさまざまな構成パラメーターを指定します。
BRB_L2CA_OPEN_CHANNEL 要求が正常に完了した場合、新しく作成された接続に関するさまざまな情報が、OutResults および InResults メンバーで使用できます。 OutResults はチャネルの送信半分のパラメーターを指定し、InResults はチャネルの受信半分のパラメーターを指定します。
この構造体で渡されるいくつかの構成パラメーター (Mtu メンバーなど) は、リモート 無線とのネゴシエーションに使用される範囲です。 クライアントは、チャネル ネゴシエーションが成功する可能性を高めるために、できるだけ幅広く提供する必要があります。 基本BLUETOOTH最小 MTU サイズより大きい最小 MTU サイズを指定する必要があるのは、絶対に必要な場合のみです。 ネゴシエーションが失敗した場合、接続は失敗します。
プロファイル ドライバーは、ExtraOptions メンバーに格納されている配列を格納するメモリを割り当てる必要があります。このメモリは、Callback メンバーで定義されているコールバック関数が、Indication パラメーターで渡された IndicationFreeExtraOptions 通知 INDICATION_CODE 値で返されるまで解放しないでください。
_BRB_L2CA_OPEN_CHANNEL構造体の IncomingQueueDepth メンバーは、Bluetooth ドライバー スタックが接続で受信し、キューに登録してから破棄を開始する MTU の最大数を指定します。 この値を非常に小さい値に設定すると、データ損失の可能性が高くなりますが、非常に大きな値に設定するとメモリ使用量が増加する可能性があります。 このメンバーを 10 に設定することは、効果的な侵害です。
リモート デバイスによって開始された受信 L2CAP 接続要求を受け入れるか拒否するには、プロファイル ドライバーがビルド し、 BRB_L2CA_OPEN_CHANNEL_RESPONSE 要求 送信する必要があります。
プロファイル ドライバーは、Bluetooth ドライバー スタックがプロファイル ドライバーの L2CAP コールバック関数 を呼び出し、コールバック関数の Indication パラメーターで indicationRemoteConnect 渡すときに、BRB_L2CA_OPEN_CHANNEL_RESPONSE 要求をビルドして送信する必要があります。
この構造体の Response メンバーの値に基づいて、Bluetooth ドライバー スタックは接続要求を受け入れるか拒否します。
プロファイル ドライバーは、この構造体の Response メンバーに適切な値を格納して、接続を受け入れるかどうかを指定します。
CONNECT_RSP_RESULT_PENDING応答を受信すると、接続クライアントは接続タイマーをリセットし、更新された接続応答メッセージを待つ必要があります。 Response メンバーが CONNECT_RSP_RESULT_PENDING に設定されている BRB_L2CA_OPEN_CHANNEL_RESPONSE BRB を呼び出すプロファイル ドライバーは、更新された接続値を持つ追加 BRB_L2CA_OPEN_CHANNEL_RESPONSE BRB をすぐに発行する必要があります。 更新された値には、CONNECT_RSP_RESULT_PENDING値の再送信など、Response メンバーに記述されている状態コードのいずれかを指定できます。
プロファイル ドライバーは、ExtraOptions メンバーに格納されている配列を格納するメモリを割り当てる必要があり、Callback メンバーで定義されているコールバック関数が、Indication パラメーターに渡された IndicationFreeExtraOptionsINDICATION_CODE 通知 INDICATION_CODE 値で返されるまで、このメモリを解放しないでください。
必要条件
要件 | 価値 |
---|---|
サポートされる最小クライアント | Windows Vista 以降のバージョン:_Supported。 |
ヘッダー | bthddi.h (Bthddi.h を含む) |
関連項目
BRB_L2CA_OPEN_CHANNEL_RESPONSE
L2CAP コールバック関数 の