首页 > 解决方案 > 创建驱动程序以将 HID-USB 请求转换为 HCI 数据包

问题描述

所以这可能看起来有点奇怪,但我手头上的硬件相当有限。

我有一个由连接到 Silicon Labs CP2110 UART 到 USB-HID 桥的 TI CC2640R2 组成的设备。该设备的基本前提是从 TI 芯片向 CP2110 发送蓝牙 HCI 命令,CP2110 将 UART 数据转换为 HID 记录,可以通过主机上的应用程序代码读取,反之亦然。我想做的是将此设备连接到 Windows 10 中预定义的 HCI 堆栈,以便桌面可以将该设备用作标准蓝牙端点。

通常,这不是问题,因为设备的 USB 芯片会将其枚举为蓝牙设备,这会导致 Windows 中的 PnP 管理器将其附加到系统的蓝牙堆栈。然而,HID 设备使事情复杂化。

为了使其正常工作,我需要从目标设备截取 HID 记录,解压缩它们,然后将它们转发到 HCI 堆栈,以便 Windows 蓝牙知道该怎么做。我必须反其道而行之——采用 HCI 命令,将其打包到适当的 HID 记录中,然后将记录发送到目标设备。

我已经设法获取蓝牙串行 HCI 总线驱动程序的 KMDF 示例的源代码,但我不知道从 HID 类驱动程序获取目标设备的正确方法,或者我是否需要做一些事情使用 HID 微型驱动程序来桥接两个驱动程序堆栈。

是否可以从内核模式检索指向 HID 设备的指针,如果可以,我将如何去做?

如果不是,并且需要 HID 微型驱动程序来拦截和中继命令,那么将 HCI 驱动程序和 HID 微型驱动程序组合以允许两者干净地互操作的最佳方法是什么?

标签: c++bluetoothwindows-10driver

解决方案


推荐阅读