WDF object模型表示了通用的驱动结构:设备,内存,队列,I/O请求,驱动。
WDF object具有良好的生命周期和约定,以及与WDF driver交互的接口
WDF object实现:
UMDF object由COM object实现
KMDF object由“透明”的句柄和对句柄操作的函数组成
*在概念级,两者是相似的
WDF object产生:framework和client WDF driver
1.如file object,由framework产生,传递给WDF driver
2.如device object,由WDF driver产生
3.如I/O request或memory object,可以由两者产生
编程接口
编程接口的组成:
1.属性:对象的特征,关联get方法和相关的set方法
2.方法:对对象执行动作或指引对象执行动作
3.事件:WDF driver可以选择响应,比如I/O请求的到达和电源状态的转换
WDF实现回调函数和在WDF中注册它来处理事件:
UMDF驱动实现了COM-based 回调对象
KMDF驱动实现了回调函数
*原理相同
当一个事件发生:
若驱动注册了回调函数,则WDF调用它来处理事件
若否,则WDF调用默认事件处理
对象层次
对象以层次形式组织,用来管理:生命周期,对象清理,同步范围。
比如:当一个对象删除时,所有子对象删除
*对象层次不是基于继承关系,而是基于对象范围和对象的销毁顺序
定义对象层次:
1. framework driver ovject必须是根,其他为后代
2.如:队列对象,必须是设备对象的后代或后代的后代
3.如:内存对象,可以有多个父母
同步和并行
WDF简化了问题:
当framework调用一个回调时,驱动可以指挥framework来获得锁
WDF对象层次机制支持了 同步范围(locking constraint):当framework调用了驱动的I/O时间回调函数时,WDF driver可以指明需要获得哪个对象的锁。