2010-10-27 160 views
1
[DllImport("winusb.dll", SetLastError = true)] 
internal static extern Boolean WinUsb_ReadPipe(IntPtr InterfaceHandle, Byte PipeID, 
ref Byte Buffer, UInt32 BufferLength, ref UInt32 LengthTransferred, IntPtr Overlapped); 

我使用API​​從USB設備讀取異步數據,它大部分時間都在32位操作系統中工作。但大部分時間在64位系統上失敗。使用libusb從USB設備讀取數據使用libusb從USB設備讀取數據

任何人都可以指導我,如果這是API定義,固件或其他問題?

+1

我在Windows上使用libusb時遇到了很多挑戰。我可能會建議使用[在C#/ .NET中更直接控制USB](http://www.developerfusion.com/article/84338/making-usb-c-friendly/)... – ewall 2010-10-27 15:16:47

回答

0

您顯示沒有代碼,但導入。我的直接問題是您是否在64位系統上鍊接到64位版本的winusb.dll?如果您的應用程序編譯爲Any CPU將在64位操作系統上以64位模式運行,並且無法將其調用到32位庫中。

+0

它使用AnyCPU選項進行編譯,有一段時間我得到LengthTransferred> 0,但有一段時間它卡在0長度。 – 2010-10-27 14:04:06