在与我的 HID 设备的数据传输会话结束时,我的软件有大约 20% 的机会在函数 WriteFile 上停止。
这是用 C# 编写的,我不知道为什么会这样。每个数据包 20% 的错误率根本无法接受,我很难深入了解它,我想知道这是否与我的声明或数据类型有关?
这是进口
[DllImport("kernel32.dll")]
static public extern int WriteFile(int hFile, ref byte lpBuffer, int nNumberOfBytesToWrite, ref int lpNumberOfBytesWritten, int lpOverlapped);
这是对正在停止的函数的调用
Result = USBSharp.WriteFile(hidHandle, ref outputReportBuffer[0], outputReportBuffer.Length, ref NumberOfBytesWritten, 0);
句柄被确认是有效的,其余的都是不言自明的......
该函数永远不会返回。我已经在几个不同的位置在线查找了这个问题,但几乎没有人的修复适用于我。如果它失败了,我只会线程化它并重新调用它,但是在数百个数据包上做这 20% 的时间简直是……糟糕。
我正在使用 Windows 7、C#、.NET 4.0,并且 HID 设备没有停止它仍然处于活动状态并正在运行 - 不仅如此,整个数据传输都正常进行,并且此调用发生在最后完成事务和然后停止(即使我已经拥有所有数据)。不幸的是,我不能忽略交易的最后一部分,因为这些数据需要 100% 维护,否则用户会发生糟糕、糟糕、糟糕的事情。