使用EnumProcessModules会返回一个含有当前进程所有句柄的数组.可我使用时返回的句柄并不是都是有效的.
HMODULE hMods[1024];
EnumProcessModules(hProcess, hMods, sizeof(hMods), &cbNeeded)
这里cnNeeded返回数组长度,用它除sizeof(HMODULE)就应得句柄数量.
可我返回的cnNeeded是84.就是说有21个句柄,可我查看hMods中只有15个有效的句柄,这是怎么回事?
如何得到有效句柄的数量呢,用VirtualQuery一个个的测?

解决方案 »

  1.   

    你说hMods中只有15个有效的句柄,你是怎么查看的呢?EnumProcessModules返回的是当前进程所包含所有模块的句柄,这些句柄并不一定都是实句柄,你也并不一定都有权限打开。
      

  2.   

    EnumProcessModules返回的是一个数组啊.我一个一个成员看不就行了.无效的句柄值都是0xcccccccc.一下就看出来了.至于权限问题,我认为不存在.其它工具显示的句柄数也就是15个