rookie_cn
驱动牛犊
驱动牛犊
  • 注册日期2002-11-28
  • 最后登录2004-02-08
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1271回复:2

高手请进:handle在内核态和用户态传输的问题

楼主#
更多 发布于:2003-05-16 12:22
我在programming wdm 2nd上看到
**********************************************************
case IOCTL_REGISTER_EVENT:
。。。。。

HANDLE hevent = *(PHANDLE) Irp->AssociatedIrp.SystemBuffer;
PKEVENT pevent;
if (hevent)
status = ObReferenceObjectByHandle(hevent, EVENT_MODIFY_STATE, *ExEventObjectType,
Irp->RequestorMode, (PVOID*) &pevent, NULL);
else
pevent = NULL;
******************************************************
hevent是用户态程序传过来的句柄,要是进程切换了,ObReferenceObjectByHandle怎么可以用它来做参数?????

最新喜欢:

flyfoxflyfox
rookie_cn:相信我,我会让你成为世界上第2幸福的人 girl:那谁是第一幸福的人 rookie_cn:拥有了你,还有谁比我幸福
lu0
lu0
论坛版主
论坛版主
  • 注册日期2001-06-10
  • 最后登录2016-04-05
  • 粉丝2
  • 关注0
  • 积分-6311分
  • 威望21111点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-05-16 13:43
KERNEL需要的是与进程无关的OBJECT地址. ObReferenceObjectByHandle就是干这个事情的.
获得的地址是KERNEL地址空间的地址. 这样, 在其他进程中也能访问.
Regards, Lu Lin Webmaster of Inside Programming http://www.lu0s1.com
robin_wxg
驱动小牛
驱动小牛
  • 注册日期2003-02-10
  • 最后登录2009-09-21
  • 粉丝0
  • 关注0
  • 积分60分
  • 威望6点
  • 贡献值0点
  • 好评度6点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-05-16 14:43
这个句柄可以用这种方式共享吗?看起来好象是个事件的句柄,只当作很普通的内存访问,是不同进程共享事件的一种方法吧。不知用户态和内核态能不能用这种方法传递?
游客

返回顶部