windows - 在windows中查找内存映射对象的列表

标签 windows memory shared

我计划将 CreateFileMapping() 函数与 hFile 的 INVALID_HANDLE_VALUE 一起使用,以便存储由分页文件支持。可能有多个进程正在创建这些映射对象。我还需要运行另一个进程,它只能从这些映射对象中读取。有没有办法让这个进程以编程方式获取内存映射对象的列表?即使它是进程可以运行然后解析以找出句柄列表的系统命令,它也会起作用。

我在堆栈溢出上看到了一些类似的问题,但找不到具体的答案。任何见解表示赞赏。

最佳答案

虽然技术上可以获取 list of handles在一个进程中,然后尝试找出哪些句柄是内存映射文件,您很快就会不得不调用未记录的函数,并且还必须处理 named pipe hang issue .

我建议您采取不同的方法:

  • 为映射命名,以便您可以按名称打开它们。这可能需要一个已知名称的映射,其中仅包含其他名称的列表。

  • 使用句柄继承或DuplicateObject将句柄获取到其他进程中。使用命名管道或窗口消息将重复句柄的句柄值发送到其他进程。

  • 只需使用普通文件即可。 FILE_ATTRIBUTE_TEMPORARYFILE_FLAG_DELETE_ON_CLOSE 可能会有所帮助。

关于windows - 在windows中查找内存映射对象的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42521092/

相关文章:

linux - 从本地工作站到远程服务器的代码库复制

xml - 如何在 Windows 中解压缩 .xml.gz?

windows - 在内存中绘制 16 位灰度位图

java - 分析/追踪 JVM 中潜在的 native 内存泄漏

objective-c - 使用从 UIImagePickerController 保存的图像进行内存管理

.net - 在 Windows 中以编程方式重启 USB 设备

java - 如何验证/强制类被垃圾收集

C++ 引用计数在析构对象时发生变化

java - 使用两个线程和一个共享变量进行广播和应答

C 信号量同步