关于USB复合设备CompositeDevice的交待
2023-07-10
794
0
USB设备按复合的实现机制,分为组合设备和复合设备。关于他们之间的区分可详见:USB复合设备Compoite Device与组合设备Compound Device https://www.usbzh.com/article/detail-1175.html
为了便于区分,本站定义为:
在windows系统中,USB复合设备是通过驱动usbccgp.sys来驱动的。通过该驱动分析USB设备的配置描述符中的多个接口描述符,拆分出不同的设备功能,并创建这些逻辑子设备。
我们在学习USB,除了看USB规范,调试等,更多的是看一些源代码的实现。不过不幸的是Windows是闭源的,我们无码可查,但幸运的是我们可以查看ReactOS相关的代码来帮助我们学习和理解。
ReactOS(React Operating System)是一个开源的免费操作系统,旨在实现与微软的Windows NT兼容。它的目标是提供一个具有与Windows操作系统相似外观和功能的操作系统,同时提供兼容性和可靠性。ReactOS是一个完全独立的项目,它不是基于Linux或Unix内核,而是使用自己的内核实现。
在ReactOS中提供了大量USB相关驱动的实例,虽然他们代码并不全面,也并等于Windows源码,但至少让我们有迹可寻。
K:\module\ReactOS-0.4.8-src\ReactOS-0.4.8\drivers\usb 的目录
2018/04/05 19:22 <DIR> .
2018/04/05 19:22 <DIR> ..
2018/04/05 19:22 296 CMakeLists.txt
2018/04/05 19:22 <DIR> usbaudio
2023/07/10 11:37 <DIR> usbccgp
2018/04/05 19:22 <DIR> usbd
2018/04/05 19:22 <DIR> usbehci
2018/04/05 19:22 <DIR> usbhub
2018/04/05 19:22 <DIR> usbhub_new
2018/04/05 19:22 <DIR> usbohci
2018/04/05 19:22 <DIR> usbohci_new
2018/04/05 19:22 <DIR> usbport
2018/04/05 19:22 <DIR> usbstor
2018/04/05 19:22 <DIR> usbstor_new
2018/04/05 19:22 <DIR> usbuhci
1 个文件 296 字节
14 个目录 138,395,648,000 可用字节
而关于USB复合设备逻辑的代码实现,本人以前也做了一个粗略的分析,可详见:https://www.usbzh.com/article/detail-587.html
其实如果有条件的同学,能拿到XP泄露的源代码的,可以通过其源代码来查看实现细节,而通过reactos来查看大的实现逻辑。
HID人机交互QQ群:564808376
UAC音频QQ群:218581009
UVC相机QQ群:331552032
BOT&UASP大容量存储QQ群:258159197
STC-USB单片机QQ群:315457461
USB技术交流QQ群2:580684376
USB技术交流QQ群:952873936