如何使用内存映射文件中的链表创建队列并从另一个进程读取它?

问题描述

我编写了一个简单的测试代码,将我的挂钩 dll 注入到某些 Windows 应用程序(explorer.exenotepad.exe 等)中,并且在这些目标应用程序中,我挂钩了 Win32 API 函数,例如 {{1 }},CopyFileEx 使用 EasyHook 库。例如,在我的挂钩函数 CreateFile 中,我需要从目标进程向我的应用程序发送事件消息(包含源文件路径、目标进程的 pid 等)。收到来自我的应用程序的消息后,根据文件的内容,我将决定完成复制操作或阻止它。此外,我还需要源路径和目标路径来进行日志记录。我决定使用内存映射文件来发送这些文件名信息,因为这是一种有效的方法。

我的目的是在内存映射文件中创建一个队列来组织事件。这是一个生产者消费者问题。

如何在内存映射文件中使用链表实现这样的队列?

我知道如何使用数组来做,但我想使用链表来做。我觉得链表是一种更好的方法,因为它可以在每个入队和出队操作中动态增长和缩小。哪种方法更方便?如果是链表,将不胜感激。我不知道如何处理每个链表节点中的指针,因为内存映射文件中的内存块是连续的,只有一个起始地址。或者除此之外,您有没有推荐其他方法来完成这项任务?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)