在WDM程序中,创建设备等功能都被转移到AddDevice例程中。AddDeviceWDM驱动与老式NT式驱动的重要区别。

当有设备插入电脑后,系统总线驱动(根总线)会枚举到有新设备被插入;这时会通知PNP管理器寻找需要加载的设备驱动。根据此种设备的总线,PNP管理器会加载相应的总线驱动设备,并得到这种物理设备对象(PDO)PNP管理器会根据ProductID,VendorID等信息加载这种设备的驱动,并将刚才创建好的PDO作为参数,传递给AddDevice例程,而AddDevice例程会将自己的设备对象挂载在PDO之上。至此设备栈创建完毕。

1、功能设备对象

是DEVICE_OBJECT数据结构,一般由AddDevice例程创建,然后加载在物理设备对象上。功能设备对象的驱动也会在DriverEntry里设置各个派遣函数的入口。

2、物理设备对象

可以用Device Object Viewer来观察一下。

当系统启动时,根总线驱动被加载,然后寻找挂载于根总线上的驱动设备。如果发现有PCI设备,就会加载PCI设备的PDO,然后寻找适合的FDO进行加载。如USB适配器等会被当做是PCI设备,被加载PDOFDO

33、WDM驱动程序框架

物理设备对象一般都是由总线驱动所创建的设备。WDM使人们都更多的精力放在FDO上。在PDOFDO之间可以加入一个或多个过滤驱动,过滤驱动可以从中截取并修改即插即用相关的IRP

WDM是基于分层驱动的概念发展而来的。WDM驱动一般分为总线驱动程序和功能驱动程序。功能驱动程序挂载于总线上,功能驱动程序处理一部分IRP,大部分的即插即用IRP和电源处理IRP被转发到总线驱动上处理。

相关文章:

  • 2022-12-23
  • 2021-12-02
  • 2021-07-20
  • 2022-12-23
  • 2021-12-03
  • 2021-12-05
  • 2021-12-30
猜你喜欢
  • 2022-12-23
  • 2021-11-18
  • 2021-10-01
  • 2021-10-22
  • 2021-07-21
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案