Windows下USB音视频类驱动程序堆栈架构
2021-10-22
622
0
一个USB接口的UVC摄像头接入Windows系统后,Windows会使用系统自带的驱动进行硬件设备驱动,从而实现“免驱”的效果。
所以看着很简单的一件事,其实并不简单。这种表现的简单是由于Windows给我们做了大量的工作,从而使一个复杂的USB视频类设备在应用层实现方便的应用。
Windows视频类USB摄像头驱动程序栈架构如下:
从上面的图可以看到,厂商只提供硬件和固件,并且这个固件应该满足UVC规范。而其余的由Windows系统包圆了。
- usbport.sys : USB控制器驱动程序
- usbhub.sys : USB集线器驱动程序
- usbccgp.sys : Windows通用驱动程序,使用于USB复合设备。
- usbvideo.sys : 将 usb类转成通用视频类的驱动程序。
- usbaudio.sys : USB音频类驱动程序,和usbvideo功能类似,只是一个服务于音频,一个是视频。
- ks.sys:微软内核流kernel stream驱动程序,是音频视的通用驱动程序
avstream 即audio video stream
ks.sys与avstream、portclass.sys之间的关系
- avstream是ks.sys中的一部分,而ks.sys是其上层驱动。
- ks.sys的下层可以是portclass.sys实现的音频类,也可以是USB实现的音视频类。
- ks.sys文件中包含了全部的ks功能和avstream功能
参考资料:
https://docs.microsoft.com/zh-cn/windows-hardware/drivers/stream/usb-video-class-driver-stack
https://docs.microsoft.com/zh-cn/windows-hardware/drivers/stream/avstream-overview
HID人机交互QQ群:564808376
UAC音频QQ群:218581009
UVC相机QQ群:331552032
BOT&UASP大容量存储QQ群:258159197
STC-USB单片机QQ群:315457461
USB技术交流QQ群2:580684376
USB技术交流QQ群:952873936