搜索
bottom↓
回复: 23

发现一篇非常好的讲解libusb、winusb、libusbk关系的文章

  [复制链接]

出0入25汤圆

发表于 2019-2-25 00:21:28 | 显示全部楼层 |阅读模式

一直搞不懂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。

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

发表于 2019-2-25 08:21:53 来自手机 | 显示全部楼层
感谢楼主分享

出0入0汤圆

发表于 2019-2-25 08:26:12 来自手机 | 显示全部楼层
感谢分享

出0入8汤圆

发表于 2019-2-25 08:48:22 | 显示全部楼层
感谢楼主分享

出0入0汤圆

发表于 2019-2-25 08:58:15 | 显示全部楼层
很好,感谢分享

出0入0汤圆

发表于 2019-2-25 09:03:34 | 显示全部楼层
多谢楼主分享!

出130入129汤圆

发表于 2019-2-25 09:07:17 | 显示全部楼层
我之前简单用途的上位机用的libusb-win32,看了下libusb 1.0,接口函数风格差异太大,完全蒙逼了

出0入8汤圆

发表于 2019-2-25 09:15:52 | 显示全部楼层
感谢楼主分享 +1

出0入13汤圆

发表于 2019-2-25 09:32:45 | 显示全部楼层
感谢楼主分享

出0入0汤圆

发表于 2019-2-25 10:58:14 | 显示全部楼层

感谢楼主分享

出0入0汤圆

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

出0入0汤圆

发表于 2019-2-25 14:54:25 | 显示全部楼层
好资料, 感谢楼主分享

出0入0汤圆

发表于 2019-2-26 10:43:34 | 显示全部楼层
很好,感谢分享

出0入0汤圆

发表于 2019-2-26 14:14:16 | 显示全部楼层
扫盲了, thanks

出0入0汤圆

发表于 2019-2-26 14:31:36 | 显示全部楼层
很好,感谢分享

出0入0汤圆

发表于 2019-2-26 14:37:26 | 显示全部楼层
感谢楼主分享

出0入0汤圆

发表于 2019-4-3 22:19:08 | 显示全部楼层
傻傻分不清,搞这么多版本.

出0入0汤圆

发表于 2019-4-3 22:23:04 | 显示全部楼层
感谢分享USB libusb知识

出0入0汤圆

发表于 2019-4-11 19:08:12 | 显示全部楼层
usb驱动似乎比较难搞

出0入17汤圆

发表于 2019-4-11 19:21:15 | 显示全部楼层
收藏了,顶一个!

出0入0汤圆

发表于 2019-4-11 19:30:54 来自手机 | 显示全部楼层
简单说,就是不要去管libusb-win32和libusbK项目,目前不管是windows还是Linux都是使用libusb项目,主页是libusb.info。

出0入0汤圆

发表于 2019-4-11 22:41:06 | 显示全部楼层
mask,标记

出0入0汤圆

发表于 2019-4-11 22:59:22 | 显示全部楼层
感谢楼主分享

出0入0汤圆

发表于 2019-4-12 13:25:26 | 显示全部楼层
WIN10 VS2017:
Hotplug capabilites are not supported on this platform
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-3-29 22:41

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表