阅读:1272回复:2
高手请进:handle在内核态和用户态传输的问题
我在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怎么可以用它来做参数????? |
|
最新喜欢:![]()
|
沙发#
发布于:2003-05-16 13:43
KERNEL需要的是与进程无关的OBJECT地址. ObReferenceObjectByHandle就是干这个事情的.
获得的地址是KERNEL地址空间的地址. 这样, 在其他进程中也能访问. |
|
|
板凳#
发布于:2003-05-16 14:43
这个句柄可以用这种方式共享吗?看起来好象是个事件的句柄,只当作很普通的内存访问,是不同进程共享事件的一种方法吧。不知用户态和内核态能不能用这种方法传递?
|
|