[总结]libusb相关概念及技术的介绍

简介: [总结]libusb相关概念及技术的介绍

libusb发展及衍生驱动技术

libusb相关技术

libusb

原始项目在2010年已经停止更新了

libusbx

2012年基于libusb进行开发 然后合入libusb了

后续都是基于libusbx。

说明: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-1.x

是libusbx的一个分支

libusb-0.x(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了。

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文件。

inf文件和sys文件

WDM和WDF驱动文件扩展名为:.sys。

Zadig/inf-wizard

NT,WDM,WDF,KMDF,UMDF

NT驱动

NT驱动是最简单的驱动模型。

是不支持即插即用功能的驱动程序。

NT驱动在windows中以服务的形式存在。

WDM驱动

WDM式驱动支持即插即用(PNP)

WDM 模型与操作系统密切相关。 驱动程序通过调用系统服务例程和操作操作系统结构,直接与操作系统交互。 由于 WDM 驱动程序是受信任的内核模式组件,因此系统对驱动程序输入提供有限的检查。

面向过程。

WDF驱动(包含KMDF,UMDF)

WDF是微软提出的全新驱动程序模型,它提供了面向对象、事件驱动的驱动程序开发框架,对它的研究是设计高效稳定设备驱动程序的基础。

注意理解WDF模型的特点,对象模型,以及基本结构。

wdf 驱动框架对WDM进行了一次封装,WDF框架就好像C++中的基类一样,且这个基类中的model,IO model,pnp和电源管理模型;且提供了一些与操作系统相关的处理函数,这些函数好像C++中的虚函数一样,WDF驱动中能够对这些函数进行override;特别是Pnp管理和电源管理!基本上都由WDF框架做了,而WDF的功能驱动几乎不要对它进行特殊的处理

KMDF内核模式驱动程序框架
UMDF用户模式驱动程序框架

Windows 驱动程序框架 (WDF) 包含 UMDF,这是一个用于创建用户模式驱动程序的框架。

DDK,WDK

都是驱动开发工具包

DDK是WDM的开发包,适用xp之前的驱动开发。

WDK是WDF驱动模型的开发包,WDF是Vista及以后版本OS所采用的驱动模型。WDK包含了以前的DDK和IFS,和驱动验证等等,XP下也可以使用WDK,它能编译Win2000-win2008的各种driver。

libusb0,libusbK,WinUsb,USB Serial

libusb0

WinUSB

WinUSB.sys是windows自带的USB驱动框架

usbfs文件系统

libusb相关网站

libusb github 官网

libusb (官方版本,2014.06.14)

新网站:http://libusb.info/

新代码:http://sourceforge.net/projects/libusb/ (新的1.0.19-2014.06.14)

新开发:http://github.com/libusb/ (貌似开发进度都在这个上面显示了)

旧网站:http://www.libusb.org/ (基于Trac的,已经废弃了)

旧网站:http://libusbx.org/

旧代码:http://sourceforge.net/projects/libusbx/ (到1.0.18-2014.01.26为止)

目前Windows下只是用户态的驱动

支持libusbK、WinUSB、libusb-win32的内核驱动访问。

如果要使用libusb-win32的话,需要安装libusbK!

libusbK(支持windows,2014.04.27)

新网站:http://sourceforge.net/projects/libusbk/

旧网站:http://code.google.com/p/usb-travis/

包含内核态和用户态驱动

libusb-win32(libusb-0.1版本的windows移植,2012.01.17)

网站:http://www.libusb.org/wiki/libusb-win32

网站:http://sourceforge.net/projects/libusb-win32/

包含内核态和用户态驱动

相关文章
|
1月前
|
虚拟化 iOS开发 Docker
虚拟文件系统之争:VirtioFS、gRPC FUSE、osxfs (Legacy)大比拼
虚拟文件系统之争:VirtioFS、gRPC FUSE、osxfs (Legacy)大比拼
97 1
|
编解码 Ubuntu Linux
linux/鸿蒙开发(基于IMX6ULL)开发 (十三)Framebuffer应用编程
linux/鸿蒙开发(基于IMX6ULL)开发 (十三)Framebuffer应用编程
240 2
linux/鸿蒙开发(基于IMX6ULL)开发 (十三)Framebuffer应用编程
|
Linux 内存技术
Linux ALSA驱动之三:PCM创建流程源码分析(基于Linux 5.18)下
Linux ALSA驱动之三:PCM创建流程源码分析(基于Linux 5.18)下
Linux ALSA驱动之三:PCM创建流程源码分析(基于Linux 5.18)下
|
编解码 Linux API
Linux ALSA驱动之三:PCM创建流程源码分析(基于Linux 5.18)上
Linux ALSA驱动之三:PCM创建流程源码分析(基于Linux 5.18)上
Linux ALSA驱动之三:PCM创建流程源码分析(基于Linux 5.18)上
|
编解码 Linux 索引
Linux ALSA驱动之四:Control设备创建流程源码分析(5.18)下
Linux ALSA驱动之四:Control设备创建流程源码分析(5.18)下
Linux ALSA驱动之四:Control设备创建流程源码分析(5.18)下
|
编解码 缓存 Linux
Linux ALSA音频驱动之一:框架概述
Linux ALSA音频驱动之一:框架概述
Linux ALSA音频驱动之一:框架概述
|
Linux
Buildroot系列开发(三)嵌入式linux组成系统简述
Buildroot系列开发(三)嵌入式linux组成系统简述
94 0
Buildroot系列开发(三)嵌入式linux组成系统简述
|
编解码 Linux API
Linux ALSA驱动之四:Control设备创建流程源码分析(5.18)上
Linux ALSA驱动之四:Control设备创建流程源码分析(5.18)上
|
Linux 数据处理
GStreamer 简化 Linux 多媒体开发
<div class="mod-top" id="card-container" style="margin-bottom: 18px; font-family: arial, 宋体, sans-serif; font-size: 14px; line-height: 24px;"><div class="card-summary nslog-area clearfix" data-nslog
2926 0