2011-05-13 3 views
1

보고서 크기를 64 바이트로 설정하고 호스트에 단일 보고서 (현재는 2)를 스트리밍하려고합니다. 내 이해는 이러한 보고서가 앉아 수있는 ReadFile 버퍼가 있다는 것입니다. 호스트에서 단일 보고서를 읽는 데 사용하는 64 바이트 버퍼가 있습니다. 장치에서 하나의 보고서를 보내면 호스트에서 정상적으로 읽습니다. 루프에서 두 개의 ReadFile을 사용하면 두 번째 ReadFile이 시간 초과됩니다. 기기에서 두 개의 보고서를 전송 중입니다. 나는 그들이 동시에 ReadFile 버퍼에 들어가는 지 모르겠다. 그래서 호스트가 첫 번째 보고서의 끝점을 읽을 때 버퍼가 제거되고 두 번째 보고서가 손실됩니까? 실제로 ReadFile 버퍼에 대해 2 개의 보고서가있는 경우이를 모두 한 번에 읽어야합니까? 얼마나 많은 보고서가 버퍼에 있는지 어떻게 알 수 있습니까?다중 HID 보고서 읽기

답변

1

ReadFile은 numberOfBytesToRead 매개 변수까지 HID 드라이버의 링 버퍼에있는 수만큼 보고서를 읽습니다.

0

각 HID 드라이버는 필요에 따라 모든 것을 구현합니다. 이러한 패킷이 "동시에"도달하는지 여부에 대해 걱정할 필요가 없습니다. 그들은하지 않을 것이다.

첫 번째 패킷에는 보고서의 길이 (즉, 패킷 모음)가 표시되어야하며, 전체 보고서가 있는지 여부를 파악할 수 있어야합니다.

패킷 버퍼는 사양에 따라 최대 64 바이트까지만 가능하기 때문에 보고서에서 데이터의 내부 표현을 유지해야합니다. 따라서 전체 보고서를 수집하려면 직접 처리하거나 WDK에 설명 된 Hid_* 루틴을 사용해야합니다.

관련 문제