阅读:2241回复:3
请教个问题,应用程序和驱动之间共享内存
下面是一部分代码,
//分配共享内存 systemvirtualaddress = ExAllocatePool(NonPage,1024); if(!systemvirtualaddress) { ..... } else { //NdisZeroMemory(SystemVirtualAddress,1024); Mdl = IoAllocateMdl(systemvirtualaddress,1024,FALSE,FALSE,NULL); if(!Mdl) { ... } else { MmBuildMdlForNonPagedPool(Mdl); } } //应用程序请求获取共享内存得操作 ...... UserVirtualAddress = MmMapLockedPages(Mdl,UserMode); *(PVOID *)(Irp->AssociateIrp.SystemBuffer) = UserVirtualAddress; ....... //下面是写共享内存 ..... memset(SystemVirtualAddress,0 ,1024); memcpy(SystemVirtualAddress,pLogItem, sizeof(LogData)); ..... 问题: 用windbg查看内存,SystemVirtualAddress中已经写入了,但是应用程序读出得值确不对。 用户空间和实际得系统空间得内存没有关联起来嘛? |
|
沙发#
发布于:2008-06-26 11:30
MmMapLockedPagesSpecifyCache
用此接口看看 |
|
|
板凳#
发布于:2008-06-27 09:21
谢谢,楼上的。自己解决了。
|
|
地板#
发布于:2010-04-10 11:28
|
|