chapter 4.3: KMDF介绍

来源:互联网 发布:js如何让超链接不跳转 编辑:程序博客网 时间:2024/06/03 14:53

KMDF:kernel mode编程模型,支持filter, function, bus driver的开发。

framework本身提供了可重入的库函数

driver在运行时动态绑定这些库函数,所以可以提供framework版本支持。

可开发的驱动:

  1. PnP device的function driver
  2. PnP device的filter driver
  3. PnP device stack的Bus driver
  4. miniport driver:NDIS-WDM, NDIS protocol, smartcard
  5. legacy devices的none-PnP drivers:不属于PnP stack-similar to legacy Windows NT 4.0-style drivers的一部分

driver在构建设备栈时调用framework方法告知framework 驱动类型。

function,filter,bus driver实现了不同回调函数集合。

bus driver通常支持枚举子bus driver的回调函数

function driver通常支持管理I/O 请求及设备power state的回调函数。

KMDF DDI支持所有类别的驱动,而一些DDI主要关注的是function,filter,bus driver

KMDF在不同类型驱动上有不同的默认处理,尤其是对I/O请求的默认处理。

filter driver不处理request时,framework自动把请求传递给栈的下一层驱动

function driver不处理request时,framework自动把请求置为失败


KMDF object

KMDF驱动实现了callback functions,而不是callback objects(UMDF)

KMDF的framework object创建:

framework创建object并且把object handle传给driver:framework接收到I/O request时,它创建I/O request object并把handle传给driver的EvtIoXxx callback routine

driver通过调用framework object创建函数创建一个object:WdfDeviceCreate创建framework device object

both:I/O request object

framework object导出的两种函数:

Methods perform an action

Properties provide access to data(naming convention)

KMDF的目标:起先是为了演化driver model来让问题分解成一系列小步骤,后来由于两个功能让KMDF成为一个革命:

清晰的cleanup和free资源的方式:由于object之间通信的设计

PnP和power,power policy的state machine:分化几乎所有object的设计来管理hardware而不是周围的operating system


KMDF callback functions

driver为了处理某一事件,需要实现一个对应的Callback function,把他注册在framework上

命名callback function:Evt[Object][Event] [object]是对应的framework object,[event]是对应的event

    设备接入了D0 power state,framework会调用driver的EvtDeviceD0Entry回调函数

    但是,函数命名只是一个规范而已。


原创粉丝点击