• Windows 7驱动开发系列(四)WDM模型介绍


        有关WINDOWS DRIVER的模式还有一个很重要的概念就是WDM模型,一般来说内核模式的驱动都要遵守WDM(除了某些需要支持WIN2000的驱动以外)那么什么是WDM呢?它是一套规则:

    1.需要在头文件当中包含wdm.h而不是ntddk.h

    2.一般来说WDM的驱动就被为(也就层级的概念)总线驱动,filter驱动,和功能驱动。(后面会说到他们之间的关系)

    3.按WDM的规则来声明WDM OBJECT和DEVICE STACK。

    4.支持PNP

    5.支持电源管理

    接下来就是什么时候使用WDM的问题了,这里面微软说的很清楚,一般来说新开发的驱动都要遵守WDM的规则。除非某些历史遗留的问题。当然我们后面讨论内核模式的驱动默认都是WDM的。NTDDK的就不说了,用得已经太少了。

        下面咱们来介绍一下三种类型的WDM的驱动

    1.BUS DRIVER(总线驱动)总线驱动是要直接面对IO和卡曹的。也需要检测子设备的接入也就是枚举BUS上的设备,另外还要对PNP的请求进行响应。

    2.FUNCTION DRIVER(功能驱动)这是一个驱动的主要部分也就是主要实现功能的部分了。对设备进行读写操作和电源管理。

    3.FILTER DRIVER这个比较难翻译,但是他的功能比较明显就是过滤分发和加工请求的。

    我们来看这个架构图。

    首先这个图当中返回用虚线画的圈都不是必备的层,在这里我们看到最底层就是BUS层了,它负责与IO打交道,上面对他的BUS请求进行过滤加工,然后给到底层的FILTER进行加工与过滤接下来给FUNCTION DRIVER进行功能实现。然后再发给更上层的FILTER进行处理。

    接下来咱们举一个例子看一下。

    比如这个例子当中在USB HUB上接入了N个设备,那么按照咱们上面说的,USB的HUB就需要枚举它上面的设备属于BUS DRIVER,而PCI BUS驱动也肯定属于BUS DRIVER。而USB上面的设备那个JOYSTICK它属于HID设备(HUMAN INPUT DEVICE)也就是人体输入设备他可以有现成的HID CLASS DRIVER的DLL来支持实现FUNCTION DRIVER的功能。

  • 相关阅读:
    【dp专题1】hdu1003 D
    #网络之宙斯盾航母#-----占位--------linux
    面向过程6-----#过程之王#----占个位-----汇编语言----(面向机器)
    面向过程5----c#
    高级语言学习总结
    js实现求二元一次方程的根
    小知识点总结
    js小案例,判断年龄是否成年
    js实现结婚吧小案例
    面向过程4-----perl
  • 原文地址:https://www.cnblogs.com/javawebsoa/p/2458381.html
Copyright © 2020-2023  润新知