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

时间:2017-03-01 00:19:33

标签: windows memory shared

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

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

1 个答案:

答案 0 :(得分:1)

虽然在技术上可以在进程中获取list of handles然后尝试找出哪些句柄是内存映射文件,但是您很快就必须调用未记录的函数,而且还必须处理{ {3}}

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

  • 为映射指定名称,以便按名称打开它们。这可能需要使用已知名称的映射,该名称仅包含其他名称的列表。

  • 使用句柄继承或DuplicateObject将句柄移入其他进程。使用命名管道或窗口消息将重复句柄的句柄值发送到另一个进程。

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