创建到远程设备的 L2CAP 客户端连接

L2CAP 客户端配置文件驱动程序是一个配置文件驱动程序,用于请求与远程设备的异步无连接无链接 (ACL) 连接。 如果设备接受连接,则会通知 L2CAP 客户端配置文件驱动程序对连接进行的任何更改。 例如,L2CAP 客户端配置文件驱动程序可以请求与远程打印机的连接,在打印机接受请求后,蓝牙驱动程序堆栈可以在关闭或移除打印机时通知配置文件驱动程序。

L2CAP 客户端配置文件驱动程序必须包含有关远程设备的信息,例如设备使用的协议/服务多路复用器 (PSM),才能请求与设备的连接。 客户端配置文件驱动程序可以通过服务发现协议 (SDP) DDI 或通过服务的固定 PSM 获取此信息。 有关如何获取此信息的详细信息,请参阅访问 SDP 服务信息

若要启动与远程设备的 L2CAP 连接,客户端配置文件驱动程序获得有关设备的所需信息后,应生成并发送BRB_L2CA_OPEN_CHANNEL 请求。

当客户端配置文件驱动程序生成请求时,它会在与该请求关联的 IRP 的 Parameters.Others.Argument1 成员中提供一个指向 _BRB_L2CA_OPEN_CHANNEL 结构的指针。 此结构包含远程设备的蓝牙地址、为设备注册的 PSM 和其他配置参数。

如果远程设备接受打开的通道请求,则 _BRB_L2CA_OPEN_CHANNEL 结构的 OutResultsInResults 成员包含有关新创建的连接的信息。 OutResults 成员指定通道的出站半部分的参数,InResults 成员指定通道入站半部分的参数。

在 _BRB_L2CA_OPEN_CHANNEL 结构(如 Mtu 成员)中传递的多个配置值用于与远程设备协商连接。 客户端配置文件驱动程序应尽可能广泛地提供,以提高成功进行通道协商的机会。 仅当绝对必要时,才应指定大于基本蓝牙最小 MTU 大小的最小消息传输单位 (MTU) 大小。 如果协商失败,连接将失败。

_BRB_L2CA_OPEN_CHANNEL 结构的 IncomingQueueDepth 成员指定蓝牙驱动程序堆栈在开始放弃 MTU 之前,在该连接上接收和排队的 MTU 数上限。 将此值设置为非常小的数会增加数据丢失的可能性,而将其设置为非常大的数会增加内存需求。 Microsoft 建议将此成员设置为 10。

当配置文件驱动程序不再需要与远程设备的 L2CAP 连接时,它应生成并发送BRB_L2CA_CLOSE_CHANNEL 请求。