首页
社区
课程
招聘
[求助] NtQueryVirtualMemory总是失败
发表于: 2016-4-21 21:53 4656

[求助] NtQueryVirtualMemory总是失败

2016-4-21 21:53
4656
很久没碰代码  之前写的NtQueryVirtualMemory查询模块代码在系统线程下运行很正常    但放到驱动的Ioctl函数里供RING3线程调用时  就无限返回-1073741819  这个好像是内存错误的代码

但内存都是提前申请的  读写测试都没问题  调试到函数前一步各参数也都正常  
不知道为何NtQueryVirtualMemory总失败  想不通   

没能力也没精力去单步跟     有碰过类似问题的坛友能指导下么  谢谢!

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 3574
活跃值: (4714)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
PreviousMode
2016-4-21 22:43
0
雪    币: 522
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
3
网上搜索了一下    无意中看到一篇文章    好像已经知道问题所在 。
系统线程下 NT函数不会再检测各参数      用户线程时则要检测各参数的正确性     

传递给函数的内存空间是在内核申请的高2G地址  过不了参数检查     所以报错了。
2016-4-22 10:18
0
雪    币: 2291
活跃值: (938)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
4
2楼都告诉你是PreviousMode的原因了啊
2016-4-22 13:22
0
雪    币: 522
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
5
我可能没说明白    我的描述已经说了   内核线程可以正常执行   而用户线程不行   
   想知道的是为什么会这样         

现在已经知道了答案了   是内核的NT系列函数 在用户线程时  会做参数检查。
2016-4-23 18:21
0
游客
登录 | 注册 方可回帖
返回
//