对于使用WinUSB的用户应用程序(而不是驱动程序),我使用WinUsb_ControlTransfer与重叠I/O相结合异步发送控制消息。是否可以取消异步操作?WinUsb_AbortPipe适用于所有其他端点,但在传递控制端点(0x00或0x80作为管道地址)时会出现“无效参数”错误。我也尝试过CancelIo和CancelIoEx,但是在WinUSB句柄上都出现了一个“无效句柄”错误。我能找到的唯一相关信息是在http://www.winvistatips.com/winusb-bugchecks-t335323.html上,但没有提供任何解决方案。这是不可能的吗?
发布于 2020-01-10 09:11:38
可能对原始请求者不再有用,但是如果其他人遇到这种情况,您可以在最初传入的文件句柄中使用CancelIo()
或CancelIoEx()
。
这与WinUsb_GetOverlappedResult
文档中的内容类似:
这个函数就像Win32 API例程GetOverlappedResult,有一个不同之处--调用者传递的不是从CreateFile返回的文件句柄,而是传递从WinUsb_Initialize返回的接口句柄。如果传递了适当的句柄,调用方可以使用任何一个API例程。WinUsb_GetOverlappedResult函数从接口句柄中提取文件句柄,然后调用GetOverlappedResult.
。
https://stackoverflow.com/questions/2037004
复制相似问题