_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。 使用 RetransmissionAndFlow 的 ModeConfig 子成员指定要打开的通道类型。
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
指向要传递给 ObReferenceObject 和 ObDereferenceObject 的对象的指针,用于维护引用计数。
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_FLOW
或 CM_BASIC | CM_STREAMING
模式作为 标志 成员。 这表示可以打开增强的重新传输模式或流式传输模式通道(如果可能)以及如果不能回退到基本模式通道。
不支持 CM_RETRANSMISSION_AND_FLOW | CM_STREAMING
的值。
要求
要求 | 价值 |
---|---|
最低支持的客户端 | Windows 8 及更高版本中的版本:_Supported |
标头 | bthddi.h (包括 Bthddi.h) |