_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

如果 响应 等于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模式的选项。 如果仅在 标志 成员中指定了CM_BASIC,则此结构必须为零。

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

ConfigOut.Fcs

指定是否应将 FCS 用于增强的 L2CAP 通道。 仅当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 BR 一起使用。
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 期间,响应成员设置为CONNECT_RSP_RESULT_PENDING,则此成员有效并包含以下值之一:

  • CONNECT_RSP_STATUS_AUTHENTICATION_PENDING
  • CONNECT_RSP_STATUS_AUTHORIZATION_PENDING
  • CONNECT_RSP_STATUS_NO_INFORMATION

言论

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

要求

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