从Windows XP SP2开始,微软提供了一套API叫做WinUSB,从winusb.dll导入。
参考资料
XXXXXXXXXXXXXXXXXXXXXXXXXX/zh-cn/library/windows/hardware/ff540046(v=vs.85).aspx
XXXXXXXXXXXXXXXXXXXXXX/usb_article/usb_driver_app/winusb_XXXXXXXXml限制是不能直接发送URB,必须使用winusb.dll提供的方法与总线驱动程序交流。另外直到Windows 8.1才支持某些特定功能,比如isochronous transfer,之前一直只支持control transfer、bulk transfer和interrupt transfer。
直接发送URB是内核模式的功能,但是以后内核模式驱动必须在微软那边过审才能过SecureBoot,太麻烦,所以使用winusb.dll用户态操作USB以后是主流。