我编写了一个简单的测试代码,将我的挂钩 dll 注入到一些 Windows 应用程序(explorer.exe
等notepad.exe
)中,并且在这些目标应用程序中,我使用 EasyHook 库挂钩了 Win32 API 函数CopyFileEx
,例如。CreateFile
例如Hooked_CopyFileExW
,在我的挂钩函数中,我需要从目标进程向我的应用程序发送一条事件消息(包含源文件路径、目标进程的 pid 等)。在收到我的应用程序的消息后,根据文件的内容,我将决定完成复制操作或阻止它。我还需要用于记录目的的源路径和目标路径。我决定使用内存映射文件来发送这些文件名信息,因为它是一种有效的方法。
我的目的是在内存映射文件中创建一个队列来组织事件。这是一种生产者消费者问题。
如何使用内存映射文件中的链表实现这样的队列?
我知道如何使用数组来做到这一点,但我想使用链表来做到这一点。我觉得链表是一种更好的方法,因为它可以在每次入队和出队操作时动态地增长和收缩。哪种方法更方便?如果它是链表,将不胜感激。我对处理每个链表节点中的指针一无所知,因为内存映射文件中的内存块是连续的,它只有一个起始地址。或者除了所有这些,您是否推荐任何其他方式来完成此任务?