Чтение нескольких HID отчетов - PullRequest
1 голос
/ 13 мая 2011

Я установил размер своего отчета в 64 байта и хочу направить отдельные отчеты (скажем, 2 пока) на хост. Насколько я понимаю, существует буфер ReadFile, в котором могут храниться эти отчеты. На хосте у меня есть 64-байтовый буфер, который я использую для чтения отдельных отчетов. Если я отправляю один отчет с устройства, хост читает его нормально. Если я использую два ReadFile в цикле, второй ReadFile истекает. Устройство отправляет два отчета. Я не знаю, попадают ли они одновременно в буфер ReadFile, поэтому, когда хост считывает конечную точку для первого отчета, буфер очищается, и я теряю второй отчет? Если в буфере ReadFile действительно есть 2 отчета, нужно ли читать их оба одновременно? Как узнать, сколько отчетов в буфере?

Ответы [ 2 ]

1 голос
/ 22 ноября 2011

ReadFile считывает столько отчетов, сколько имеется в кольцевом буфере драйвера HID, вплоть до параметра numberOfBytesToRead.

0 голосов
/ 17 ноября 2011

Соответствующий драйвер HID будет реализовывать все по мере необходимости. Вам не нужно беспокоиться о том, поступают ли эти пакеты «одновременно». Они не будут.

Первый пакет должен сообщать вам длину отчета (т. Е. Набор пакетов), который, в свою очередь, должен позволить вам выяснить, есть ли у вас полный отчет.

Конечно, вам придется сохранять внутреннее представление данных из отчета, поскольку в соответствии со спецификацией размер буферов пакетов может быть не более 64 байт. Таким образом, чтобы собрать полный отчет, вам придется справиться с этим самостоятельно или использовать процедуры Hid_*, описанные в WDK.

...