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