XIVN1987 发表于 2019-2-25 00:21:28

发现一篇非常好的讲解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。

eliterxzgxu 发表于 2019-2-25 08:21:53

感谢楼主分享

creep 发表于 2019-2-25 08:26:12

感谢分享

Jmhh247 发表于 2019-2-25 08:48:22

感谢楼主分享

heikewang2018 发表于 2019-2-25 08:58:15

很好,感谢分享

DCJ 发表于 2019-2-25 09:03:34

多谢楼主分享!

68336016 发表于 2019-2-25 09:07:17

我之前简单用途的上位机用的libusb-win32,看了下libusb 1.0,接口函数风格差异太大,完全蒙逼了

security 发表于 2019-2-25 09:15:52

感谢楼主分享 +1

weiwei4 发表于 2019-2-25 09:32:45

感谢楼主分享

a105 发表于 2019-2-25 10:58:14


感谢楼主分享

huangqi412 发表于 2019-2-25 14:23:35

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的组合。

chenxin2015 发表于 2019-2-25 14:54:25

好资料, 感谢楼主分享

dreambox 发表于 2019-2-26 10:43:34

很好,感谢分享

xjtyOnly51 发表于 2019-2-26 14:14:16

扫盲了, thanks

wwkkww 发表于 2019-2-26 14:31:36

很好,感谢分享

hyper320 发表于 2019-2-26 14:37:26

感谢楼主分享

swortering 发表于 2019-4-3 22:19:08

傻傻分不清,搞这么多版本.

bad_fpga 发表于 2019-4-3 22:23:04

感谢分享USB libusb知识

dgdzas 发表于 2019-4-11 19:08:12

usb驱动似乎比较难搞

llysc 发表于 2019-4-11 19:21:15

收藏了,顶一个!

love_zjb 发表于 2019-4-11 19:30:54

简单说,就是不要去管libusb-win32和libusbK项目,目前不管是windows还是Linux都是使用libusb项目,主页是libusb.info。

bitvi 发表于 2019-4-11 22:41:06

mask,标记

chenxin2015 发表于 2019-4-11 22:59:22

感谢楼主分享

miaoguoqiang 发表于 2019-4-12 13:25:26

WIN10 VS2017:
Hotplug capabilites are not supported on this platform
页: [1]
查看完整版本: 发现一篇非常好的讲解libusb、winusb、libusbk关系的文章