能力值:
( LV2,RANK:10 )
|
-
-
2 楼
double map
app:
alloc a buffer
driver:
[probe and lock the buffer get an MDL
then map it to kernel address space
|
能力值:
( LV5,RANK:60 )
|
-
-
3 楼
[QUOTE=leftup;673090]double map
app:
alloc a buffer
driver:
[probe and lock the buffer get an MDL
then map it to kernel address space[/QUOTE]
我是按照这个方法,不过没有效果,还是和进程上下文有关,不是我指定的那个进程的共享内存:
PMDL pMdl = IoAllocateMdl(in_buffer, sizeof(MONIT_INFO), FALSE, FALSE, FALSE);
if(!pMdl)
{
ntStatus = STATUS_INSUFFICIENT_RESOURCES;
break;
}
MmProbeAndLockPages(pMdl, KernelMode,IoWriteAccess);
g_MonitBuffer = (PMONIT_INFO)MmGetSystemAddressForMdlSafe(pMdl, HighPagePriority);
其中in_buffer是通过IOCTL传递的,是应用程序中的一个全局的数组
不知道为什么不行?
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
使用缓冲区读写方式就行了。
|
能力值:
( LV3,RANK:20 )
|
-
-
5 楼
IOCTRL_CODE是怎么定义的?in_buffer传的对不对?
|
能力值:
( LV5,RANK:60 )
|
-
-
6 楼
谢谢各位关注,我已经换了另一种方法了,就是在驱动中分配内存然后映射到用户空间,然后把该地址传递给APP
|
|
|