我打算对hFile使用带有INVALID_HANDLE_VALUE的CreateFileMapping()函数,以便存储由分页文件支持。可能有几个进程正在创建这些映射对象。我还需要运行另一个可以从这些映射对象中读取的进程。这个过程有没有办法以编程方式获取内存映射对象列表?即使它是一个系统命令,该进程可以运行,然后解析以找出句柄列表,它将工作。
我在堆栈溢出时看到了类似的一些问题,但找不到具体的答案。任何见解都表示赞赏。
答案 0 :(得分:1)
虽然在技术上可以在进程中获取list of handles然后尝试找出哪些句柄是内存映射文件,但是您很快就必须调用未记录的函数,而且还必须处理{ {3}}
我建议你采取不同的方法:
为映射指定名称,以便按名称打开它们。这可能需要使用已知名称的映射,该名称仅包含其他名称的列表。
使用句柄继承或DuplicateObject
将句柄移入其他进程。使用命名管道或窗口消息将重复句柄的句柄值发送到另一个进程。
只需使用普通文件即可。 FILE_ATTRIBUTE_TEMPORARY
和FILE_FLAG_DELETE_ON_CLOSE
可能会有所帮助。