【问题标题】:Get list of DLLs loaded in current process with their reference counts获取当前进程中加载​​的 DLL 列表及其引用计数
【发布时间】:2015-04-21 14:03:58
【问题描述】:

我知道如何获取这些信息。 (来自 _PEB_LDR_DATA。)

问题是,我如何从同一进程中原子地获取这些信息? (为了从不同的进程中获取这些信息,我会暂停它。)

我应该暂停当前进程的所有其他线程吗?还是有更简单的方法?

【问题讨论】:

  • 这里描述了如何获取进程模块列表:stackoverflow.com/questions/1553603/…
  • 您应该使用Tool Help Functions 而不是PEB。工具帮助函数自然是原子的。
  • 嗨@gomons,你确定你提供了正确的链接吗?我没有看到任何与我的问题相关的内容
  • @my_stk_oflw_account,您可以使用EnumProcessModules()函数获取已加载模块的列表,您可以使用GetCurrentProcess()获取第一个参数。您可以在 MSDN 上找到功能说明。是你需要的吗?
  • 嗨@Harry,看起来这就是我需要的。您能否确认 MODULEENTRY32 为动态链接模块(DELAYLOAD、COM DLL 服务器等)提供了正确的引用计数?从参考文献中所写的内容来看,它似乎为静态链接的 DLL 提供了 0xFFFF,否则为“通常没有意义”的值。

标签: c++ windows


【解决方案1】:

答案是使用Tool Help Functions。它以原子方式提供运行时链接 dll 的正确引用计数。

感谢@Harry 的评论。

【讨论】:

    猜你喜欢
    • 2016-07-25
    • 1970-01-01
    • 2013-11-12
    • 2016-01-20
    • 1970-01-01
    • 2013-06-24
    • 1970-01-01
    • 2023-03-24
    • 1970-01-01
    相关资源
    最近更新 更多