【发布时间】:2015-06-04 05:08:53
【问题描述】:
我正在尝试在用户进程和内核之间使用共享内存。
选项一 - 让内核创建部分并让用户模式应用程序通过名称“Global\my_mem”打开内存。它仅在只读模式下工作。当我尝试使用 FILE_MAP_WRITE 打开部分时,它会拒绝访问(5)。不确定如何授予访问权限或修改 DACL。
选项二 - 通过 IOCTL 传回句柄。这个是有问题的,因为在 KERNEL 中打开的部分的句柄是 0xFFFFFFFF80001234。我的理解是设置了任何高位的句柄不能在用户模式下使用。特别是如果应用程序是 32 位的 :) 最初我预计节句柄会有点类似于内核文件句柄,我将能够使用它。
在内核和用户模式之间建立共享内存通道的正确方法是什么?
【问题讨论】:
-
微软发布了this文档,详细描述了选项#1。