2014-01-28 71 views
1

我的應用程序進行通信以簡單的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

+0

它是什麼設備,它使用什麼驅動程序(.sys)文件?這可能會造成很大的變化。 –

回答

0

你可以嘗試DebugView。以admin身份運行。

轉到 「捕獲」,使 「捕獲內核」,使 「啓用詳細內核輸出」。

這可能有助於調查內核級別的錯誤(如果發生任何錯誤)。