WDM DRIVER的运作流程

作者:陆麟
转载请征得作者同意.
2000.1.10


WDM的流程始终是我困惑的一部份.最近终于找到了答案.
WDM本身的PNP管理器被抽象地提升到了ROOT的地位.PNP管理器负责所有的总线驱动程序的加载.总线驱动程序则负责历遍所有的位于总线上的设备枚举.并且为每个发现的设备创建一个设备对象.当PNP管理器发现一个设备对象,就查找该对象对应的DRIVER.并调用该DRIVER的ADD DEVICE例程.如果DRIVER不在内存中,就先加载,然后调用ADD DEVICE例程.
当然,总线本身并没有任何电气信号告诉PNP管理器自己的存在,所以,总线DRIVER是在NT的安装时设定的.这就是很多YES/NO选项的用处所在.由于ISA设备并没有规范,所以它是老式KMD存在的唯一理由.因为需要老式KMD自己检查硬件存在及状态.这也是MS极力在新规范里取消ISA总线的理由之一.
在目前情况下,正如我以前文章里写的一样,WDM是个懂PNP协议,POWER MANAGERMENT协议的驱动程序.而它的体现,仅仅是在MAJOR FUNCTION里加入一些对PNP和PM事件响应的例程.