Windows USB HID 报告长度

Windows USB HID Report Length

我正在使用 STMicro 微控制器开发 USB HID 设备。我从 STMicro 的 HID 示例开始,它运行良好。我在 Windows 7 64 位 PC 端使用 C++。我有一个适用于我的设备的应用程序。然而,有一件事我想不通。

示例固件一次只允许发送和接收2个字节,由HIDP_CAPS.OutputReportByteLength和InputReportByteLength决定。我想一次发送比这更多的数据,但我不知道如何增加报告的长度。我成功地更改了端点 wMaxPacketSize、VID 和 PID 以及其他一些内容,但我无法弄清楚 Windows 是如何计算进出报告长度的。我的报告或设备描述中似乎没有任何字段指示此长度,但我无法想象它可能来自其他地方。

谁能告诉我 Windows 是如何确定 HIDP_CAPS.OutputReportByteLength 和 HIDP_CAPS.InputReportByteLength 的?

如何增加这些长度?

我明白了。我想我会 post 在这里以防其他人需要知道。我不太确定我是否真的理解了所有内容,所以如果我犯了错误,请有人纠正我。

我必须更改固件中的报告描述。我有几种用法。 Windows 获取报告描述并找出哪种用法需要最长的长度并使用该长度。在我的一个输入报告中,我做了以下更改(输入报告只是固件中的一个字节数组):

0x27, 0xFF, 0xFF, 0xFF, 0xFF, //Logical maximum is 4 bytes long, and has a value of 0xFFFFFFFF 0x95, 0x01, //There is one report 0x75, 0x20, //There are 32 bits per report

我对输出做了类似的操作,但没有报告编号字段 (0x95)。

Windows 现在告诉我可以发送和接收 5 个字节,我认为这意味着终点加上报告编号乘以报告大小。