WDK 8.1 Sample - ObCallback Callback Registration Driver 学习总结
2015-06-22 18:12
911 查看
概述
obcallback 这个 example 比较简单,粗糙,基本就是向我们展示了两种回调函数的用法。下面我们一方面说说这个 example 的总体思路;另一方面说说关于这两种回调函数文档中描述不太清楚,结合具体代码后才弄明白的地方。总体思路
这个 example 实现了两个功能,如下:* 保护特定名称的进程不被关闭 * 禁止特定名称的进程启动
不过这两个功能同时只能使用其中一个,而且就使用的这个功能来讲,也只能针对一个进程,毕竟是一个 example。
对于保护这个功能来讲,它是需要两种类型的回调函数配合完成的。PsSetCreateProcessNotifyRoutineEx 注册的回调函数负责在进程启动时保存要保护的进程的相关信息,这些信息用于 ObRegisterCallbacks 注册的回调函数,保护的实质性工作就在该函数注册的回调函数中进行。
对于禁止这个功能,只需要 PsSetCreateProcessNotifyRoutineEx 注册的回调函数。
文档中描述的不太清楚的地方
首先是 OB_PRE_OPERATION_INFORMATION structure 的 CallContext 成员,这个成员是用来和当前 ObjectPreCallback callback routine 配对的 ObjectPostCallback callback routine 之间传递信息的。当设置这个成员后,与当前 ObjectPreCallback callback routine 配对的 ObjectPostCallback callback routine 可以通过它的 OB_POST_OPERATION_INFORMATION structure 的参数的 CallContext 成员获取之前设置的值。然后是 ObjectPreCallback callback routine 和 ObjectPostCallback callback routine 被调用的上下文。下面是文档中的说法
This routine is called at PASSIVE_LEVEL in an arbitrary thread context with normal kernel APCs disabled。
更确切一点应该是运行在执行该操作的进程的任意线程上下文中。
相关源码
WDK 8.1 Sample - ObCallback Callback Registration Driver相关文章推荐
- ListView OnScrollListener详解
- 大数据环境下的数据仓库建设(转)
- Python套接字编程(1)——socket模块与套接字编程
- JAVA中的Random()函数
- 面向对象技术学习笔记4:用例建模
- 在 cmd 中利用 git 得到 vi
- poj 2251 Dungeon Master
- ubuntu14.10安装jdk
- FireBug使用总结
- 《你的灯还亮着吗》读后感3
- Magento订单取消的时候还原优惠券的使用次数(Single Coupon marked as used when payment pending)
- 【最大流】【HDU2883】【kebab】
- 【最大流】【HDU2883】【kebab】
- 属性readwrite,readonly,assign,retain,copy,nonatomic
- Autoconf/Automake工具简介
- 一个线程写完数据后,另外三个线程按顺序读取
- [转]Loadrunner随机生成15位数字串
- JAVA的Random类
- 《大道至简》3
- tcp异常断开的重连解决方法