Share via


_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 を送信する前にサーバーで入力する必要があります。 割り当てられる値は、 INDICATION_PARAMETERS::ConnectionHandle IndicationRemoteConnect 中に渡された 値である必要があります。

Response

BRB_L2CA_OPEN_CHANNEL_RESPONSEでのみ使用されます。 CONNECT_RSP_RESULT_Xxx値の 1 つが使用されます。

BRB が STATUS_REQUEST_NOT_ACCEPTED の状態で を返す場合、 Response にはリモート ホストからの否定応答が含まれます。

ResponseStatus

Response が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 BLOB を検証するためのパラメーター設定を含むサブ構造体。

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 BLOB と共に使用されます。
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) で指定します。

Response

このメンバーは、 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 パラメーターに渡された値INDICATION_CODE IndicationFreeExtraOptions通知を返すまで、このメモリを解放しないでください。

_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応答を受信すると、接続クライアントは接続タイマーをリセットし、更新された接続応答メッセージを待つ必要があります。 応答メンバーが CONNECT_RSP_RESULT_PENDING に設定されているBRB_L2CA_OPEN_CHANNEL_RESPONSE BRB を呼び出すプロファイル ドライバーは、更新された接続値を持つ追加の BRB_L2CA_OPEN_CHANNEL_RESPONSE BRB をすぐに発行する必要があります。 更新された値には、 応答 メンバーに記述されている状態コード (CONNECT_RSP_RESULT_PENDING値の再送信を含む) のいずれかを指定できます。

プロファイル ドライバーは、ExtraOptions メンバーに格納されている配列を格納するメモリを割り当てる必要があります。Callback メンバーで定義されているコールバック関数が、Indication パラメーターに渡された値INDICATION_CODE IndicationFreeExtraOptions 通知を返すまで、このメモリを解放しないでください。

要件

要件
サポートされている最小のクライアント バージョン:Windows Vista 以降の_Supported。
Header bthddi.h (Bthddi.h を含む)

こちらもご覧ください

BRB_HEADER

BRB_L2CA_OPEN_CHANNEL

BRB_L2CA_OPEN_CHANNEL_RESPONSE

BRB_L2CA_REGISTER_SERVER

CHANNEL_CONFIG_RESULTS

INDICATION_CODE

INDICATION_PARAMETERS

L2CAP コールバック関数

L2CAP_CONFIG_OPTION

ObDereferenceObject

ObReferenceObject