2011-05-13 130 views
1

我將報告大小設置爲64個字節,並希望將單個報告(現在稱爲2)傳送給主機。我的理解是有一個ReadFile緩衝區,可以放置這些報告。在主機上,我有一個64字節的緩衝區,用於讀取單個報告。如果我從設備發送一份報告,主機讀取它很好。如果我在循環中使用兩個ReadFile,則第二個ReadFile會超時。該設備正在發送兩個報告。我不知道他們是否正在同時訪問ReadFile緩衝區,所以當主機讀取第一個報告的終點時,緩衝區會被清除,並且會丟失第二個報告?如果ReadFile緩衝區確實有2個報告,我是否需要一次讀取它們?我怎麼知道緩衝區上有多少個報告?閱讀多個HID報告

回答

1

ReadFile讀取的報告數量與HID驅動程序環形緩衝區中的報告數量相同,最多爲numberOfBytesToRead參數。

0

相應的HID驅動程序將根據需要實施一切。您不必擔心這些數據包是否「同時」到達。他們不會。

第一個數據包應該告訴你報告的長度(即數據包的集合),這反過來應該讓你確定你是否有完整的報告。

當然,您將不得不從報告中保留數據的內部表示,因爲根據規範,數據包緩衝區的大小最多隻能爲64個字節。因此,要收集完整報告,您必須親自處理或使用WDK中描述的Hid_*例程。