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