为什么EnumProcessModules会返回很多无效的句柄?

drgnmvpn 2004-04-30 09:48:23
使用EnumProcessModules会返回一个含有当前进程所有句柄的数组.可我使用时返回的句柄并不是都是有效的.
HMODULE hMods[1024];
EnumProcessModules(hProcess, hMods, sizeof(hMods), &cbNeeded)
这里cnNeeded返回数组长度,用它除sizeof(HMODULE)就应得句柄数量.
可我返回的cnNeeded是84.就是说有21个句柄,可我查看hMods中只有15个有效的句柄,这是怎么回事?
如何得到有效句柄的数量呢,用VirtualQuery一个个的测?
...全文
161 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
drgnmvpn 2004-05-04
  • 打赏
  • 举报
回复
drgnmvpn 2004-05-04
  • 打赏
  • 举报
回复
drgnmvpn 2004-04-30
  • 打赏
  • 举报
回复
EnumProcessModules返回的是一个数组啊.我一个一个成员看不就行了.无效的句柄值都是0xcccccccc.一下就看出来了.至于权限问题,我认为不存在.其它工具显示的句柄数也就是15个
icanfeeling 2004-04-30
  • 打赏
  • 举报
回复
同意
fzd999 2004-04-30
  • 打赏
  • 举报
回复
你说hMods中只有15个有效的句柄,你是怎么查看的呢?

EnumProcessModules返回的是当前进程所包含所有模块的句柄,这些句柄并不一定都是实句柄,你也并不一定都有权限打开。

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧