首页
社区
课程
招聘
ZwQuerySystemInformation调用然后调用GetLastError提示126指定的模块没有被找到是啥问题
发表于: 2013-1-7 07:02 4475

ZwQuerySystemInformation调用然后调用GetLastError提示126指定的模块没有被找到是啥问题

2013-1-7 07:02
4475
ERROR_MOD_NOT_FOUND
126 (0x7E)
The specified module could not be found.

ZwQuerySystemInformation调用然后调用GetLastError提示126指定的模块没有被找到是啥问题
具体帖子我发在这里了 也有源码
http://bbs.pediy.com/showthread.php?t=160776

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (6)
雪    币: 155
活跃值: (20)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
ZwQuerySystemInformation不会设置LastError的,它的调用状态是在返回值里。
2013-1-7 09:55
0
雪    币: 40
活跃值: (40)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
3
大哥有吧 不然我咋能获取到
2013-1-8 11:44
0
雪    币: 2105
活跃值: (424)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
4
Zw不会设置LastError
你获取到的 是前面其他API设置的
2013-1-8 12:20
0
雪    币: 40
活跃值: (40)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
5
大哥 前面获取的都是零 表示没有错误
2013-1-8 13:31
0
雪    币: 291
活跃值: (213)
能力值: ( LV12,RANK:210 )
在线值:
发帖
回帖
粉丝
6
大哥,Zw/Nt系列函数是系统调用的封装,User Mode部分实现在ntdll.dll里面
; __stdcall NtQuerySystemInformation(x, x, x, x)
public _NtQuerySystemInformation@16
_NtQuerySystemInformation@16 proc near
mov     eax, 0ADh       ; NtQuerySystemInformation
                        ; RtlGetNativeSystemInformation
mov     edx, 7FFE0300h
call    dword ptr [edx]
retn    10h
_NtQuerySystemInformation@16 endp

你看看,哪里来的LastError?你又没调用RtlNtStatusToDosError。
它的返回值是NTSTATUS,已经代表了成功和失败的状态信息,没必要再搞个LastError来多此一举。
2013-1-8 17:32
0
雪    币: 257
活跃值: (67)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
7
LZ的逻辑很混乱
GetLastError是用户层的API
而ZwQuerySystemInformation是系统功能调用,其返回值代表调用状态
还是先理清思路再说,是写驱动?还是写App?
驱动里面无法直接调用用户层的GetLastError
并且调用了ntdll.dll里面的ZwQuerySystemInformation之后,也不会立刻设置LastError
所以LZ调用ZwQuerySystemInformation之后再调用GetLastError本身就是一个严重的低级错误
2013-1-8 17:56
0
游客
登录 | 注册 方可回帖
返回
//