前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >CmRegisterCallbackEx 函数功能详解

CmRegisterCallbackEx 函数功能详解

作者头像
我与梦想有个约会
发布2023-10-21 14:40:22
2270
发布2023-10-21 14:40:22
举报
文章被收录于专栏:jiajia_deng

Windows 内核开发市面上流传的教程基本上都在写 CmRegisterCallback 函数的功能,而 CmRegisterCallbackEx 几乎没有(本人没有见到有描述比较清晰的)。看任何人写的教程都不如看一眼 MSDNExample,跟着微软的例子我详细记录一下这个函数的每个参数,希望可以帮到后面要使用该函数的人,如果大家看到有什么不对的地方请指证,以免我误导他人。

函数原型

代码语言:javascript
复制
NTSTATUS CmRegisterCallbackEx(
  _In_       PEX_CALLBACK_FUNCTION Function,
  _In_       PCUNICODE_STRING      Altitude,
  _In_       PVOID                 Driver,
  _In_opt_   PVOID                 Context,
  _Out_      PLARGE_INTEGER        Cookie,
  _Reserved_ PVOID                 Reserved
);

参数详解

Function

这个参数不用多说,是回调的函数地址,根据微软的例子直接自己写一份函数把函数名传给这个参数就可以了,与 CmRegisterCallback 函数没什么区别。

Altitude

这是 CmRegisterCallbackEx 函数新增的参数,这个参数在 MSDN 中描述如下:

代码语言:javascript
复制
The Altitude parameter defines the position of the minifilter driver relative to other minifilters in the I/O stack when the minifilter is loaded. Allocation of altitudes to minifilters is managed by Microsoft. For more information about altitudes, see Load Order Groups and Altitudes for Minifilter Drivers.

大致意思是该参数决定了在内核中调用的优先级顺序,我们看微软的 Example 中使用了三个级别(级别的定义),分别是高、中、低:

代码语言:javascript
复制
#define CALLBACK_LOW_ALTITUDE      L"380000"
#define CALLBACK_ALTITUDE          L"380010"
#define CALLBACK_HIGH_ALTITUDE     L"380020"

然后分别以三个级别创建了三个回调函数,目的就是让大家可以看清对注册表监控时的拦截顺序。

Driver

这个参数就是驱动对象的指针,直接传入即可。

Context

该参数可以当作是给回调函数的一个参数指针,可以在外部随意构造,然后在创建回调函数的时候传递进去即可。传递进去后转为 PVOID,在回调函数中再转移成你自己的结构就可以了。

Cookie

CmRegisterCallback 函数一样,都是记录了回调函数的传递句柄信息,用一个全局变量保存下来,取消回调时使用。

Reserved

微软保留,这个参数暂时无用,设置为 NULL 即可。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016-08-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 函数原型
  • 参数详解
    • Function
      • Altitude
        • Driver
          • Context
            • Cookie
              • Reserved
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档