|
|
1
1
要同步写入共享部分的多个进程,您需要某种IPC,例如Windows事件、互斥体、套接字。每个模块调用 CreateMutex 并传递所有模块共享的固定名称。然后,模块调用waitforsingleobject来等待并声明互斥体-当其中一个获得互斥体时,它可以在其他模块等待时读/写共享部分。完成后,它调用releasemutex让另一个模块运行。 我个人已经说过了,我会坚持使用日志文件。我猜您的问题是,对于DLL,您的日志文件名是基于父进程的exe名称,而不是基于DLL自己的名称? 通过存储在dllmain中传递的dll实例句柄,然后将其与getmodulefilename一起使用,可以获得dll自己的名称。注意,如果您将实例句柄保留为空,这也适用于exes。
|
|
|
2
0
在dll(带有rws标志的部分)中使用共享部分并不能真正解决您的主要问题。如果需要共享内存以便在进程之间进行快速通信,则可以使用内存映射文件(请参见 http://msdn.microsoft.com/en-us/library/ms810613.aspx 例如)对共享内存的创建和使用有更多的控制。
要了解加载DLL的进程的更多信息,您可以另外记录应用程序的命令行。(
要查看有关呼叫过程的更多信息,可以
|