c++ - 获取当前进程中所有句柄的名称

标签 c++ winapi handles

我需要列出当前进程中所有打开的句柄。 由于我找不到任何像“EnumHandles”这样的函数,我正在考虑从 0 到 1000 进行循环。问题是我如何检索每个句柄的名称? 我正在使用 C++,操作系统是 Win7 32 位 编辑: 我需要名称的句柄是一个 Mutex。 通过比较互斥量的名称,我想得到句柄ID 我似乎找到了使用 OpenMutex 的解决方案,但我不知道在第三个参数上传递什么,

最佳答案

我相信您必须使用 NTDLL.DLL。据我所知,这是所有监视进程、句柄和其他系统信息的工具最终必须在 Windows 下使用的工具。我在一个小型 Win32 工具中使用它,但从来不需要列出句柄。

在此处查看该库的良好介绍以及与您的问题相关的信息。 http://forum.sysinternals.com/howto-enumerate-handles_topic18892.html

还有http://forum.sysinternals.com/enumerate-opened-files_topic3577.html第一篇的GetObjectName函数

在 Windows 中访问此类信息可能看起来工作量很大而且看起来很可怕,因为 Microsoft 不想支持它,但是您会看到,当“简单”的 API 不能满足您的需求时,您必须挖到NTDLL。这就是像 ProcessExplorer 这样的工具最终使用的东西。使用起来并不难:加载 DLL,获取正确的函数指针以使用您在网上找到的内容填充您自己声明的结构。

关于c++ - 获取当前进程中所有句柄的名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8719252/

相关文章:

c++ - DC C++ Windows 句柄

c++ - 跨线程使用事件句柄 - C++

c++ - 从 Objective-C 函数调用 C++ 函数不起作用

c++ - 约束白名单类型模板函数的更好方法,SFINAE?

c++ - 如何将断言宏实现为一种方法?

python - 如何在 Python 中处理 PyCapsule 类型

c++ - 如何在 C++ 中打开特定应用程序后关闭它?

c++ - cpp中的字符串引用处理

c++ - 使用 System::AnsiString 类

c++ - 有关闭多个句柄的简单方法吗?