阅读:1235回复:2
为什么我在XP下无法映射内存地址?
我正在学习开发XP的驱动,最近碰到这个问题始终无从下手。
我先在DriverEntry中使用ExAllocatePoolWithTag从非分页池 中分配了两个64K的存储空间,再分别使用IoAllocateMdl和 MmBuildMdlForNonPagedPool分配并建立了相关的MDL。最后 通过响应IOCTL在用户线程环境中使用MmMapLockedPagesSpecifyCache( mdl,UserMode,MmNonCached,NULL,FALSE,HighPagePriority)函数 将锁定的页面映射至进程的用户地址空间中。 如此编译的驱动在我的开发机上可正常的采数,只是同时运行其他程序时,系统 响应奇慢(暂时不管)。我再换其他同类型的机器试驱动,却总在执行地址映射时机器 重新启动。后来在其他机器上安装DriverStudio后(我的开发机上有),驱动又可正常工作。 我继续在联想的开天(P4,2.4GCPU)机上测试,竟然不需安装DriverStudio也可 使用驱动.这些电脑都安装相同的Windows XP.实在令人费解!! 我的开发平台是:联想815G的主板,C700的CPU,Windows XP 专业版及DDK,MS VC++6.0. 不知各位大侠碰到类似问题没?还望多多赐教,小生万般感谢先!! |
|
沙发#
发布于:2003-08-18 14:49
自己顶一下,各位可以谈谈自己的看法嘛。
|
|
板凳#
发布于:2003-08-20 13:49
难道是我的地址映射函数使用不正确吗?我也是在用户线程环境下使用的呀。 :(
|
|