zoukankan      html  css  js  c++  java
  • 33、WDM驱动程序框架

        在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

    wps_clip_image-11945

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

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

  • 相关阅读:
    视频直播技术-视频-编码-传输-秒开等<转>
    弹出框JBox实例
    Dijkstra in python
    oracle 修改索引现有表空间
    WIN7 如何关闭Aero
    不再打酱油
    Android 开机默认横竖屏
    cocos2d-x 3.0 开发(一) Hello_New_World
    PHOTOSHOP 中画笔工具和铅笔工具的一个小小差别
    一种从JSON数据创建Java类的高效办法
  • 原文地址:https://www.cnblogs.com/mydomain/p/1897184.html
Copyright © 2011-2022 走看看