今天我都usb了

我只是一个虾纸丫 提交于 2020-03-20 18:08:29

CE下usb驱动的加载流程
当一个usb设备一插上主机,主机上的 the USB driver module中有个检测线程,event被set了。所以得到了通知之后.此时the USB driver module只知道有个usb设备连上了,但并不知道这 usb 是什么class,所以需要去注册表中查找能和该设备匹配的驱动程序。(查找的顺序算法?)
在HKEY_LOCAL_MACHINE\Drivers\USB\LoadClients 中如果这设备不是第一次连接上,(肯定?)有该设备驱动的一个注表项;如果是第一次,the USB driver module查找失败,弹出一个对话框,要求用户输入该设备驱动的dll名。the USB driver 然后就去加载这个dll,并调用其中的USBInstallDriver 函数。这个只是安装,还要attach.
USB driver 加载完驱动的dll之后就调用驱动的USBDeviceAttach 函数。这函数主要做了下面一些事情:驱动决定是否能控制该设备。如果可以就返回true并接受控制,如果拒绝就返回false,继续搜索别的驱动。

当设备与主机断开时,the USB driver module调用注册好的回调函数。然后回调函数可以选择调用USBUnInstallDriver(那不选择调用的话。。。。什么时候选择调用呢)。USB驱动从不会直接调用USBUnInstallDriver函数的。USBUnInstallDriver干了下面一些事情:删除所有USBInstallDriver函数里创建的注册表项,并释放所有驱动占有的其他资源。

当然这里说的usb驱动是指client driver.

The universal serial bus (USB) host mass storage client 也实现了client driver所必需的3个函数:The USB host mass storage client driver is implemented as a USB client driver. It exposes the USBInstallDriver, USBDeviceAttach, and USBUnInstallDriver entry points to support Plug and Play functionality.

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!