我试图用USB设备communicatate在Windows 7上我发现使用供应商和产品ID我用下面的命令的WriteFile写入USB
dev->device_handle = CreateFile(path, (GENERIC_WRITE | GENERIC_READ),
(FILE_SHARE_READ|FILE_SHARE_WRITE),
(LPSECURITY_ATTRIBUTES)NULL,
OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED, NULL);
打开设备后,当出现错误代码87失败
然后我做写入到使用该设备
res = WriteFile(dev->device_handle, buf, length, &bytes_written, &ol);
其中长度为64
我的设备可以读取和在此界面中写入64个字节的数据,这已经在测试林在Windows中使用另一个工具(我没有工具的来源)。
WriteFile函数给我一个错误代码87.这是无效的参数。
有没有人请指出我犯的错误。
P.S.我已经分析了问题 WriteFile returning error code 87
我已经取得了一些调试日志
--------------------------------------------------
Before write call
dev_handle:152
buf:2293463
length:65
bytes_written:0
overlap:0
--------------------------------------------------
--------------------------------------------------
After write call
dev_handle:152
buf:2293463
length:65
bytes_written:0
overlap:259
--------------------------------------------------
Last Error: 87
我认为你的“重叠”不打印正确。它有不少成员。不过,这些信息有助于排除“INVALID_HANDLE_VALUE”。 – MSalters 2014-12-04 12:09:05
为什么你认为重叠是259? – 2014-12-04 12:13:43
因为你打印错了。它不是259,因为259是一个整数值,“OVERLAPPED”不是整数类型。 – MSalters 2014-12-04 12:15:10