请问 IRP_MJ_CREATE 完成后如何获取 Ring3 应用程序即将得到的 HANDLE 值?

xixiaoliu 2009-11-20 10:44:58
如题,有办法吗?
...全文
119 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
xixiaoliu 2009-11-20
  • 打赏
  • 举报
回复
我就是想拿到句柄之后查句柄表改 GrantedAccess。
不然,就算遍历,怎么知道这个句柄是我要的那个句柄呢?
StarsunYzL 2009-11-20
  • 打赏
  • 举报
回复
我觉得还是先确定一下返回给Ring3的HANDLE是不是在IRP_MJ_CREATE例程被调用之前就已经创建好了的,如果是在之后才创建的,那估计就不好弄了。如果是在之前,遍历当前进程的句柄表(PsGetCurrentProcess()->ObjectTable),然后判断句柄类型,可能能得到这个句柄,不过这些都是没有文档的东西,估计也不大好弄,其它更简单的方法等后面的高手来解答咯。
xixiaoliu 2009-11-20
  • 打赏
  • 举报
回复
虽然这样可以,但是这样应用程序就需要做这样一个特定的动作了。

我想写过滤驱动,在 Create 完成后应用程序得到 HANDLE 前对 HANDLE 进行一些操作,并且在任何(或指定的)应用程序中都能起作用。而不是自己编写特定的应用程序。
StarsunYzL 2009-11-20
  • 打赏
  • 举报
回复
不知道有啥办法,不过非得在IRP_MJ_CREATE时获取吗?Ring3调用CreateFile成功后再把HANDLE通过DeviceIoControl传到驱动不行么~
xixiaoliu 2009-11-20
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 tr0j4n 的回复:]
你这个是磁盘过滤驱动?
[/Quote]

我比较想做成文件系统过滤驱动
xixiaoliu 2009-11-20
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 starsunyzl 的回复:]
可以知道呀,先判断句柄类型是FileObject,然后判断ObjectName是不是等于你的驱动设备就行了\\Device\\xxx
[/Quote]

哦,这样子啊。。。不过看起来遍历句柄表似乎还是不太直观。。。
算了,看来不做成过滤驱动好了
StarsunYzL 2009-11-20
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 xixiaoliu 的回复:]
我就是想拿到句柄之后查句柄表改 GrantedAccess。
不然,就算遍历,怎么知道这个句柄是我要的那个句柄呢?
[/Quote]

可以知道呀,先判断句柄类型是FileObject,然后判断ObjectName是不是等于你的驱动设备就行了\\Device\\xxx
MoXiaoRab 2009-11-20
  • 打赏
  • 举报
回复
还是一个Hook函数中?
MoXiaoRab 2009-11-20
  • 打赏
  • 举报
回复
你这个是磁盘过滤驱动?

2,640

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 硬件/系统
社区管理员
  • 硬件/系统社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧