我计划将 CreateFileMapping() 函数与 hFile 的 INVALID_HANDLE_VALUE 一起使用,以便存储由分页文件支持。可能有多个进程正在创建这些映射对象。我还需要运行另一个进程,它只能从这些映射对象中读取。有没有办法让这个进程以编程方式获取内存映射对象的列表?即使它是进程可以运行然后解析以找出句柄列表的系统命令,它也会起作用。
我在堆栈溢出上看到了一些类似的问题,但找不到具体的答案。任何见解表示赞赏。
最佳答案
虽然技术上可以获取 list of handles在一个进程中,然后尝试找出哪些句柄是内存映射文件,您很快就会不得不调用未记录的函数,并且还必须处理 named pipe hang issue .
我建议您采取不同的方法:
为映射命名,以便您可以按名称打开它们。这可能需要一个已知名称的映射,其中仅包含其他名称的列表。
使用句柄继承或
DuplicateObject
将句柄获取到其他进程中。使用命名管道或窗口消息将重复句柄的句柄值发送到其他进程。只需使用普通文件即可。
FILE_ATTRIBUTE_TEMPORARY
和FILE_FLAG_DELETE_ON_CLOSE
可能会有所帮助。
关于windows - 在windows中查找内存映射对象的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42521092/