1
6
这是Windows的: 当USB设备插入系统时,会通知USB总线驱动程序。 总线驱动程序向设备发送一个标准的USB请求(USB设备描述符)。这样,设备就会报告其名称和类型。(BDeVICECSAS/BDEVICESUBStord/BDEVICE协议)。 根据这些信息,Windows在系统中创建一个设备条目。这就是硬件ID。系统现在试图找到一个可以处理设备(hid/uvc)的通用驱动程序,或者一个专门注册来支持这个硬件ID的驱动程序。 要将驱动程序注册为特定设备的处理程序,必须将该驱动程序安装到系统中,或者必须向Microsoft提供一个驱动程序,这些驱动程序可以在其服务器上提供。 |
2
7
对于操作系统X: 好吧,我想第一部分类似于窗户。但是,驱动程序(或者更确切地说是驱动程序堆栈)是由一个称为 driver matching . 每个驱动程序都与一个特殊的XML字典文件捆绑在一起,该文件描述了驱动程序所针对的设备。 字典中的一个键是ioproviderClass键,它大致告诉操作系统驱动程序的设备系列。已加载的驱动程序可以提供“nubs”,这是其他驱动程序可以附加到的接口。哪些驱动程序尝试附加到nubs由ioproviderClass键确定。 因此,例如,当您将USB驱动器插入Mac时,已经加载的USB控制器驱动程序会检测到这一点,并为设备提供一个nub。通过驱动程序匹配选择低级USB驱动程序-对照从设备获取的值(如供应商ID、设备类型等)检查字典中的键/值,并为右IO提供程序类的每个驱动程序派生得分。得分最高的一个附在NUB上。 这个新的驱动程序本身可能为其他驱动程序提供要附加的nub。例如,连接USB磁盘驱动器将导致USB堆栈为要连接的SCSI块设备驱动程序创建一个nub。通常,这将导致加载Apple的标准SCSI块设备驱动程序,进而为BSD驱动程序提供NUB(每个分区一个),进而在dev文件系统中创建BSD设备节点。 如果你想让你的驱动程序比其他的选择更高,你所需要做的就是为你的驱动程序所在的设备添加键值对,这会使你的驱动程序得到很高的分数。通常只需输入供应商ID/型号的密钥就足够了。但是,我认为您可以重写匹配方法(设备驱动程序是用C++的限制集编写的),以给您的驱动程序一个非常高的分数。 这是一个高层次的观点。但是,我已经有好几年没有做过这些了, 所以一定要阅读当前的苹果文档 . |
Forest Lam · 我应该怎么做才能在这里看到分布式驱动器段? 1 年前 |
Andrew · 我需要帮助为这个问题编写代码 2 年前 |
Gen Tan · 节点-v显示节点的旧版本 2 年前 |
xdavidliu · XCode项目对C++标准的选择没有得到尊重 2 年前 |
Yannick · Ruby(或FFI?)执行Jekyll命令时出错 2 年前 |
FreyGeospatial · 显示Mac终端中隐藏的文件和文件夹 2 年前 |
viedev · SwiftUI:macOS上文本字段中文本过长的问题 2 年前 |