发现一篇非常好的讲解libusb、winusb、libusbk关系的文章
一直搞不懂libusb、winusb、libusbK、libusb-win32、Zadig、inf-wizard.exe有什么联系和区别,,今天发现一篇文章讲解的非常清晰、易懂,,
原文:关于libusb,libusbx,libusbK,libusb-win32,WinUSB的关系
转载:
刚开始接触USB驱动编程,一般是利用现成的库来做,但是网上一搜索,发现一大堆各种各样的lib把人搞的很头疼,这边总结一下。
== libusb ==
说明:libusb是一个跨平台的usb驱动框架。libusb原始项目在2010年后基本没有更新,曾有libusbx项目2012年从libusb分出来,2014年1月26日又合并回libusb了。当时的libusbx-1.0.18和libusb-1.0.18其实完全一样,相当于libusbx替换了libusb的代码!后续的版本其实都是基于libusbx的代码了!
包含两个主要分支1.x和0.1.x。
1.x和0.1.x并不兼容,可以同时存在,如果要在1.x基础上兼容0.1.x需要libusb-compat转换层。所以0.1.x和libusb-compat不能同时装上!
内核:目前1.x分支的驱动只有用户态,linux下支持usbfs,windows下支持WinUSB.sys。
也可以支持libusbK和libusb-win32(通过libusbK支持)。
工具:通过Zadig支持生成基于libusb0、libusbK、WinUSB的inf文件。
https://github.com/pbatard/libwdi/wiki/Zadig
== libusb-win32 ==
说明:libusb-win32是从libusb-0.1.x分支衍生的,
主要是针对Windows做优化,所以接口风格和libusb-0.1.x一致。
内核:WDM框架的libusb0.sys驱动。
工具:自带inf-wizard.exe生成基于libusb0.sys的inf文件。
注意:目前建议是新的项目尽可能使用libusb,而不是这个libusb-win32了。我在这个上面花了很多时间,一直报错,坑爹了,要注意libusb-win32已经废弃,目前使用的是libusb+Zadig的组合。
== libusbK ==
说明:libusbK主要是想做一个WinUSB接口风格的开源usb库,
支持基于KMDF的libusbK.sys和系统自带的WinUSB.sys。参考libusb-win32做的开发,部分工具是从libusb-win32整合而来的。因为源代码里也包含了libusb0.dll的加载功能和转换层,所以也可以支持WDM框架的libusb0.sys(libusb-win32)。
内核:基于KMDF框架的libusbK.sys、WDM的libusb0.sys、系统的WinUSB.sys
工具:自带libusbK-inf-wizard.exe(基于libusb-win32的工具改的)
生成基于libusb0、libusbK、WinUSB的inf文件。
简单说,就是不要去管libusb-win32和libusbK项目,目前不管是windows还是Linux都是使用libusb项目,主页是libusb.info。
在Windows上使用libusb时是调用微软的WinUSB接口,在Linux上是usbfs。用Zadig工具统一安装驱动,不用理什么inf-wizard.exe。 感谢楼主分享 感谢分享 感谢楼主分享 很好,感谢分享 多谢楼主分享! 我之前简单用途的上位机用的libusb-win32,看了下libusb 1.0,接口函数风格差异太大,完全蒙逼了 感谢楼主分享 +1
感谢楼主分享
感谢楼主分享 68336016 发表于 2019-2-25 09:07
我之前简单用途的上位机用的libusb-win32,看了下libusb 1.0,接口函数风格差异太大,完全蒙逼了 ...
+1024啊。 一直是用libusb-win32还疑惑这个东西为什么万年不更新啊。 刚才去下了个libusb1.0.22, 接口风格完全不同了,懵逼啊。如果要改,相当于重新来了。
libusb-win32 的头文件是lusb0_usb.h dll是libusb0 libusb1.0.22头文件是libusb.h dll是Libusb-1
== libusb-win32 ==
说明:libusb-win32是从libusb-0.1.x分支衍生的,
主要是针对Windows做优化,所以接口风格和libusb-0.1.x一致。
内核:WDM框架的libusb0.sys驱动。
工具:自带inf-wizard.exe生成基于libusb0.sys的inf文件。
注意:目前建议是新的项目尽可能使用libusb,而不是这个libusb-win32了。我在这个上面花了很多时间,一直报错,坑爹了,要注意libusb-win32已经废弃,目前使用的是libusb+Zadig的组合。
好资料, 感谢楼主分享 很好,感谢分享 扫盲了, thanks 很好,感谢分享 感谢楼主分享 傻傻分不清,搞这么多版本. 感谢分享USB libusb知识 usb驱动似乎比较难搞 收藏了,顶一个! 简单说,就是不要去管libusb-win32和libusbK项目,目前不管是windows还是Linux都是使用libusb项目,主页是libusb.info。 mask,标记 感谢楼主分享 WIN10 VS2017:
Hotplug capabilites are not supported on this platform
页:
[1]