_BRB_L2CA_OPEN_ENHANCED_CHANNEL 结构 (bthddi.h)

_BRB_L2CA_OPEN_ENHANCED_CHANNEL结构用于向远程设备打开增强型 L2CAP 通道,或发送响应以接受/拒绝远程设备发起的传入增强型 L2CAP 连接请求。

语法

struct _BRB_L2CA_OPEN_ENHANCED_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;
    struct {
      ULONG                                 Flags;
      L2CAP_RETRANSMISSION_AND_FLOW_CONTROL RetransmissionAndFlow;
    } ModeConfig;
    USHORT                   Fcs;
    L2CAP_EXTENDED_FLOW_SPEC ExtendedFlowSpec;
    USHORT                   ExtendedWindowSize;
  } ConfigOut;
  struct {
    ULONG                    Flags;
    L2CAP_CONFIG_VALUE_RANGE Mtu;
    L2CAP_CONFIG_RANGE       FlushTO;
  } ConfigIn;
  ULONG                                   CallbackFlags;
  PFNBTHPORT_INDICATION_CALLBACK_ENHANCED Callback;
  PVOID                                   CallbackContext;
  PVOID                                   ReferenceObject;
  CHANNEL_CONFIG_RESULTS_ENHANCED         OutResults;
  CHANNEL_CONFIG_RESULTS_ENHANCED         InResults;
  UCHAR                                   IncomingQueueDepth;
  PVOID                                   Reserved;
};

成员

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值之一。

如果 BRB 返回状态为STATUS_REQUEST_NOT_ACCEPTED,则 响应 将包含来自远程主机的负面响应。

ResponseStatus

如果 Response 等于 CONNECT_RSP_RESULT_PENDING,则此字段有效。 使用CONNECT_RSP_STATUS_XXX值之一。

Psm

协议/服务多路复用器 (通道用于连接到远程设备的 PSM) 。 与 BRB_L2CA_OPEN_ENHANCED_CHANNEL 请求一起使用时,此成员将设置为输入字段。 与 BRB_L2CA_OPEN_ENHANCED_CHANNEL_RESPONSE 请求一起使用时,此成员将用作输出字段。

ChannelFlags

指定打开通道的要求的标志。 下表中列出了有效的标志值:

标志 描述
CF_LINK_AUTHENTICATED 必须对链接进行身份验证。
CF_LINK_ENCRYPTED 必须对链接进行加密。 设置此标志还会设置CF_LINK_AUTHENTICATED标志。
CF_LINK_SUPPRESS_PIN 配置文件驱动程序指示其首选项,即不会提示用户输入 PIN。

BtAddress

要进行连接的设备的蓝牙地址。

ConfigOut

包含发送到远程设备的 BRB_L2CA_OPEN_ENHANCED_CHANNEL BRB 的参数设置的子结构。

ConfigOut.Flags

指定打开通道的要求的标志。 下表中列出了有效的标志值:

标志 描述
CF_LINK_AUTHENTICATED 必须对链接进行身份验证。
CF_LINK_ENCRYPTED 必须对链接进行加密。 设置此标志还会设置CF_LINK_AUTHENTICATED标志。
CF_LINK_SUPPRESS_PIN 配置文件驱动程序指示其首选项,即不会提示用户输入 PIN。
CFG_ENHANCED 指定 ModeConfig 结构有效。
CFG_FCS 指定 Fcs 值有效。

ConfigOut.Mtu

消息传输单位的范围 (MTU) ,用于协商通道出站一半的大小。

ConfigOut.FlushTO

要用于通道出站一半的刷新超时的可能值的范围。

ConfigOut.Flow

保留供将来使用。 请勿使用。

ConfigOut.LinkTO

链接管理器链接超时。

ConfigOut.NumExtraOptions

ExtraOptions 成员中包含的数组项数。 对于大多数客户端,此值应为零。

ConfigOut.ExtraOptions

其他选项。 对于大多数客户端,此值应为零。

ConfigOut.LocalQos

保留供将来使用。 请勿使用。

ConfigOut.LocalQos.ServiceType

保留供将来使用。 请勿使用。

ConfigOut.LocalQos.Latency

保留供将来使用。 请勿使用。

ConfigOut.ModeConfig

指定要打开的 L2CAP 通道的类型。 仅当指定了CFG_ENHANCED标志时,此结构才有效。

ConfigOut.ModeConfig.Flags

指定请求的 L2CAP 通道模式的类型。

标志 描述
CM_BASIC 打开基本模式通道。
CM_RETRANSMISSION_AND_FLOW 打开增强的重新传输模式通道。
CM_STREAMING 打开流模式通道。

ConfigOut.ModeConfig.RetransmissionAndFlow

指定CM_RETRANSMISSION_AND_FLOW和CM_STREAMING模式的选项。 如果在 Flags 成员中只指定了CM_BASIC,则此结构必须为零。

RetransmissionAndFlowMode 子成员应设置为 0。 使用 RetransmissionAndFlowModeConfig 子成员指定要打开的通道类型。

ConfigOut.Fcs

指定是否应将 FCS 用于增强型 L2CAP 通道。 仅当在 Flags 成员中指定CM_RETRANSMISSION_AND_FLOW或CM_STREAMING标志时,此值才有效。

ConfigOut.ExtendedFlowSpec

不支持。

ConfigOut.ExtendedWindowSize

不支持。

ConfigIn

包含参数设置的子结构,用于验证从远程设备发送的传入 BRB_L2CA_OPEN_ENHANCED_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_ENHANCED_CHANNEL_RESPONSE BRB 一起使用。
CALLBACK_CONFIG_EXTRA_OUT 如果已设置,当远程设备拒绝 来自BRB_L2CA_OPEN_ENHANCED_CHANNEL 请求的额外配置选项时,将调用回调例程。 如果未设置,并且远程设备因额外选项而拒绝配置请求,则连接将关闭。
CALLBACK_CONFIG_QOS 如果设置,当远程设备发送包含 QOS 值的配置请求时,将调用回调例程。 如果未设置此标志,并且远程设备在配置请求中发送 QOS 参数或拒绝配置文件驱动程序请求的 QOS 参数,则连接将断开连接。
CALLBACK_DISCONNECT 如果设置,当远程设备与增强型 L2CAP 通道断开连接时,将调用回调例程。
CALLBACK_RECV_PACKET 如果设置,当配置文件驱动程序收到传入的增强型 L2CAP 数据包时,将调用回调例程。

Callback

由配置文件驱动程序实现的 增强型 L2CAP 回调函数 ,蓝牙驱动程序堆栈应调用该函数,以通知配置文件驱动程序有关增强型 L2CAP 连接的任何更改。

CallbackContext

要传递给 Callback 成员中指定的 回调函数的上下文。 配置文件驱动程序定义此值。

ReferenceObject

指向要传递给 ObReferenceObjectObDereferenceObject 的对象的指针,该对象要为其保留引用计数。

OutResults

一个 CHANNEL_CONFIG_RESULTS_ENHANCED 结构,其中包含为出站请求协商的配置参数。

InResults

包含为入站请求协商的配置参数的CHANNEL_CONFIG_RESULTS_ENHANCED结构。

IncomingQueueDepth

指定传入队列长度(以消息传输单位 (MTU) )。

Reserved

保留成员。 请勿使用。

响应

此成员用作 BRB_L2CA_OPEN_ENHANCED_CHANNEL 请求的输入参数和 BRB_L2CA_OPEN_ENHANCED_CHANNEL_RESPONSE 请求的输出参数。

对于 BRB_L2CA_OPEN_ENHANCED_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_ENHANCED_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_ENHANCED_CHANNEL_RESPONSE BRB 期间,Response 成员设置为 CONNECT_RSP_RESULT_PENDING,则此成员有效且包含以下值之一:

  • CONNECT_RSP_STATUS_AUTHENTICATION_PENDING
  • CONNECT_RSP_STATUS_AUTHORIZATION_PENDING
  • CONNECT_RSP_STATUS_NO_INFORMATION

注解

配置文件驱动程序可以为 Flags 成员使用 CM_BASIC | CM_RETRANSMISSION_AND_FLOW、 或 CM_BASIC | CM_STREAMING 模式。 这表示打开增强的重新传输模式或流模式通道(如果可能),如果未回退到基本模式通道。 不支持 的值 CM_RETRANSMISSION_AND_FLOW | CM_STREAMING

要求

要求
最低受支持的客户端 版本:Windows 8及更高版本的 Windows 中的_Supported
标头 bthddi.h (包括 Bthddi.h)