Windows Mobile的驱动程序程序实际是一个树状结构。Device.exe
负责加载几乎所有的驱动程序,而驱动程序的各种信息是存在于注册表里面。在系统启动?
锥危琩evice.exe是不知道有多少驱动是要加载的。他只是找到bus driver
,然后由它继续加载所有的驱动,所以bus driver是很重要的驱动程序,是桥梁驱动。
注册表中,HKEY_LOCAL_MACHINE\Drivers的键值RootKey指示了bus driver
的位置,一般你会看到Drivers\BuiltIn。那么HKEY_LOCAL_MACHINE\Drivers\BuiltIn下
Dll说明的是bus driver的名称。
微软的Ak中是默认有个驱动的BusEnum.dll(在public下有源代码)。这个驱动会枚举
BuiltIn下的所有键值,将这些驱动都加载进device.exe。
bus driver OEM是可以替换的。你此时可能回想既然已经有现成的,为什么还要自己写?
在很多时候,SOC的许多module的clock
开关都会放在一个统一的寄存器组里,那么驱动程序在想开/关这些寄存器时,都要操作?
桓黾拇嫫髯椋庵止蚕碜试吹姆梦适强赡芤鸪逋坏摹?
每个驱动要访问这个寄存器组,他们也就需要映射这个物理空间。如果每个驱动都映射,?
驮斐尚槟饪占涞募罄朔选?
那么如何完成自定义的bus driver
?微软为我们提供了很完善的类库,使我们很容易做到。Class DefaultBusDriver 和
Class DeviceFolder就是这样基础类。详细的代码细节自己看吧。Bus driver
是也是标准的流驱动。它需要在xxx_Init中引发一系列枚举动作,将驱动加载进来。
没有评论:
发表评论