阅读:2144回复:1
请问驱动程序如何与应用程序共享内存?
我想利用虚拟磁盘技术,写一个pdr驱动,但是文件数据是从应用程序提供的一块共享内存中取回.问题是,我如何与APPLICATION共享内存,
WINDOWS的IPC提供共享内存机制吗?对编写*.PDR的语言有要求吗? 谢谢 |
|
沙发#
发布于:2001-07-20 09:45
SysBuffer = ExAllocatePoolWithTag (NonPagedPool,MAXMODNUM*sizeof(*SysBuffer),0x206B6444);
if(!SysBuffer) KdPrint( ("HookTdi: Allocate SysBuffer fail!\n") ); else { //Map into Userspace pMDL = ExAllocatePoolWithTag(NonPagedPool, MmSizeOfMdl(SysBuffer,MAXMODNUM*sizeof(*SysBuffer)), 0x206B6444); if(!pMDL) KdPrint( ("HookTdi: No enough Mem for MDL!\n") ); else { pMDL = MmCreateMdl (pMDL,SysBuffer,MAXMODNUM*sizeof(*SysBuffer)); MmBuildMdlForNonPagedPool(pMDL); UserBuffer = MmMapLockedPages(pMDL,1); } } 地方太窄了,贴不下代码!各位凑活看吧。将SysBuffer映射到用户空间(SysBuffer&UserBuffer系指向同一物理页面,但访问权限不同),前者在2G以上且仅对系统可见,后者则对用户可读写。 |
|