目标:对象用来表示内核中的数据结构和模式
主要是管理一系列属性和生命周期管理,内容管理,回调模式,对象层次
1.object是一个编译块,对驱动透明(通过接口管理)
2.object具有方法,属性和时间;回调机制
3.object层次化组织,生命周期管理
关于方法,属性和时间
方法:函数
属性:数据(get/set,Assin/Retrieve)
事件:默认/覆盖及注册
方法命名:
get/set总是成功,Assin/Retrieve返回错误值
关于事件回调
一个driver-specific callback可以处理多个events
KMDF,UMDF机制一样,实现不一样
UMDF:callback object->interfaces, framework使用COM的QueryInterface处理callback
KMDF:function pointer,位置在object-specific configuration structure
KMDF callback: 其实是函数表中的项
UMDF callback: 是callback object的interface
object attributes
object支持通过参数或者使用默认值创建
UMDF/KMDF都支持的参数:
1.object的parent object
2.I/O event callback的同步范围
3.object context area
4.一个在删除对象前用来释放引用的callback
UMDF参数:
为创建函数中的参数
KMDF参数:
参数保存在一个初始化的structure中,支持的额外参数如下:
1.maximum IRQL:callback的
2.context area的一些信息:包括大小和类型
3.object destroyed时的callback函数,用来释放资源
Object层次和生命周期
只有driver object没有parent,其它都有
一些对象可以在创建时指示其parent,而另一些不行。
通过层次管理和callback来管理object的生命周期、清理和状态
Object context
driver定义的对于某个object的存储数据区域
UMDF通常通过callback object存储
KMDF的Object context则是object的一部分
driver会定义context的大小和layout
主要是管理一系列属性和生命周期管理,内容管理,回调模式,对象层次
1.object是一个编译块,对驱动透明(通过接口管理)
2.object具有方法,属性和时间;回调机制
3.object层次化组织,生命周期管理
关于方法,属性和时间
方法:函数
属性:数据(get/set,Assin/Retrieve)
事件:默认/覆盖及注册
方法命名:
get/set总是成功,Assin/Retrieve返回错误值
关于事件回调
一个driver-specific callback可以处理多个events
KMDF,UMDF机制一样,实现不一样
UMDF:callback object->interfaces, framework使用COM的QueryInterface处理callback
KMDF:function pointer,位置在object-specific configuration structure
KMDF callback: 其实是函数表中的项
UMDF callback: 是callback object的interface
object attributes
object支持通过参数或者使用默认值创建
UMDF/KMDF都支持的参数:
1.object的parent object
2.I/O event callback的同步范围
3.object context area
4.一个在删除对象前用来释放引用的callback
UMDF参数:
为创建函数中的参数
KMDF参数:
参数保存在一个初始化的structure中,支持的额外参数如下:
1.maximum IRQL:callback的
2.context area的一些信息:包括大小和类型
3.object destroyed时的callback函数,用来释放资源
Object层次和生命周期
只有driver object没有parent,其它都有
一些对象可以在创建时指示其parent,而另一些不行。
通过层次管理和callback来管理object的生命周期、清理和状态
Object context
driver定义的对于某个object的存储数据区域
UMDF通常通过callback object存储
KMDF的Object context则是object的一部分
driver会定义context的大小和layout