对于使用WinUSB的用户应用程序(不是驱动程序),我将WinUsb_ControlTransfer与重叠的I / O结合使用,以异步方式发送控制消息。是否可以取消异步操作? WinUsb_AbortPipe适用于所有其他端点,但在传递控制端点时会产生“无效参数”错误(管道地址为0x00或0x80)。我也尝试过CancelIo和CancelIoEx,但两者都在WinUSB句柄上给出了“无效句柄”错误。我能找到的唯一相关信息是http://www.winvistatips.com/winusb-bugchecks-t335323.html,但没有提供解决方案。这不可能吗?
答案 0 :(得分:0)
对于原始的问询者来说可能不再有用,但是如果其他人遇到这种情况:您可以将CancelIo()
或CancelIoEx()
与您最初传递给{{3}的文件句柄一起使用}。
这类似于WinUsb_Initialize()
的文档中的说法:
此函数类似于Win32 API例程GetOverlappedResult,但有一个区别-调用程序传递的是WinUsb_Initialize返回的接口句柄,而不是传递从CreateFile返回的文件句柄。如果传递了适当的句柄,则调用者可以使用任一API例程。 WinUsb_GetOverlappedResult函数从接口句柄中提取文件句柄,然后调用GetOverlappedResult。