我的應用程序進行通信以簡單的USB設備如下:調試間歇響應USB設備
該應用程序通過使用的WriteFile(KERNEL32.DLL)發送命令(每2或3個字節)連接到USB設備。
對於發送的每個命令,USB設備發送一個短響應,PC使用ReadFile(kernel32.dll)接收該響應。
讀取和寫入操作是異步完成的,使用GetOverlappedResult檢查操作的狀態。
對3臺PC中的2臺進行測試,應用程序和設備功能完美:所有響應均可100%可靠接收。
在第三臺PC上的相同測試下,大約50%的ReadFile請求不返回任何數據 - 狀態永遠保持爲掛起(ERROR_IO_INCOMPLETE)狀態。
換句話說,大約每發送兩個命令,都會收到一個響應。由於該設備與其他PC完全兼容,它使我相信這個問題可能發生在Windows內部,由ReadFile調用的底層代碼(我假定有一些較低級別的USB驅動程序代碼)。
問題: 請你能建議什麼調試工具是最有用的調查呢?用我目前的知識,ReadFile的內部工作是非常不透明的。
這是遇到問題的PC運行的是Windows 8.0
它是什麼設備,它使用什麼驅動程序(.sys)文件?這可能會造成很大的變化。 –