次の方法で共有


_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_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