chapter 4.6: KMDF子架构

来源:互联网 发布:wap淘宝流量来源安全吗 编辑:程序博客网 时间:2024/05/21 00:47

KMDF 子结构的组件

包括framework, KMDF drivers,其他drivers


The Framework

KMDF是一个runtime component

而UMDF有多个runtime components

若系统中有多个major version,则每个version一个实例。

每个KMDF driver告知framework创建它们的framework device object,framework反过来创建对应的WDM device object,加入设备栈中。

    为function driver创建FDO,并加入到栈中所有lower filter drivers之上

    所以device stack中WDF,WDM driver可以共存。

目的:管理IRP flow,支持KMDF DDI,支持object model,跟踪系统状态,默认事件处理


KMDF Driver

类似port-miniprot model:Framework为port,driver为miniport,(不同点:KMDF不限制对DDI的调用)


其他driver

如图,支持WDM driver

当为KMDF driver时,framework会创建framework request object


Fatal Error

framework产生bug check

WDF_VIOLATION错误码,四个参数,第一个为错误类线


典型的KMDF I/O request

应用程序通过device interface获得device symbolic link name,再调用Createfile获得device句柄

典型的KMDF I/O request:

    1.应用程序调用ReadFile/WriteFile发出I/O请求,Windows调用KM I/O 函数把请求传给I/O manager

    2.I/O manager创建IRP,传给顶层device stack

    3.若是KMDF driver,framework把IRP转换为framework request object,再传给KMDF driver

    4.driver把结果返回给framework:若完成失败,framework完成IRP请求,返回给I/O manager;否则,生成IRP传给I/O manager ,再传给下一级driver

    5.driver注册I/O completion callback函数

    6.当请求完成时framework调用driver的I/O completion callback