执行属于其他进程的外部功能
Execute External function belonging to other process
我需要帮助解决一个问题。我有两个进程在运行,一个是看门狗,另一个是简单的测试进程。我需要进程2从看门狗调用代码,我这样做的原因是为了减少进程2的大小。例如,进程2必须从看门狗调用一个名为"IsSafe"的函数。IsSafe函数依赖于属于Watchdog进程的其他代码,为进程2重写此代码是不可用的。我想到了一些主意,你能告诉我哪个是最好的解决方案,或者给我一些建议吗?
想法一个
使用命名管道在进程之间通信,并传递参数和返回值。
想法两个
使用共享内存共享参数和返回值
想法三
使用windows消息,我真的认为这是行不通的
想法四
以某种方式创建共享内存的可执行部分,并使用far jmp执行此代码。
请告知。
RPC是很久以前发明的。然后是COM。在我看来,最好忘记你的想法,但如果你必须,使用COM。
顺便说一下,要在同一台Windows机器上不使用COM的进程之间进行通信,请使用邮件槽。
似乎你把他们忘在你的名单里了。
干杯,hth。
虽然将代码放在需要调用它的进程中通常是一个好建议,但在看门狗(也包括调试器和任何其他形式的错误处理程序)的特殊情况下,使用单独的进程是正确的。您不希望看门狗由于主代码中的错误而失败,因此它需要是一个单独的进程。
在这种情况下,命名管道是理想的,TransactNamedPipe
函数就是为此而设计的。
DLL是idea 4的标准实现。它在两个地址空间中加载,但在物理RAM中共享。你不需要特别的技巧;它可以在任何地方工作,Windows将为你处理任何安全问题。
它也可以移植到大多数其他操作系统,尽管它们通常被称为其他东西,例如Linux上的so。
您真正需要的是一些IPC。对于轻量级和简单的解决方案,只需使用WM_APP定义一个特定于应用程序的消息,并从wParam/lParam中映射参数。如果您发现您需要超过8个字节,您可以使用WM_COPYDATA代替。
- C++:函数外部的超时功能
- NASM 调用外部C++功能
- C |声明类外部功能
- 当用作模板参数时,功能指针是否需要指向具有外部链接的函数
- 是否有一种方法可以让公共成员在班级外部无法解码,而无需访问包装器功能
- 如何在我的指针和阵列功能中修复未解决的外部错误-LNK2019和LNK1120
- 使用JNI访问外部本机功能
- 在外部功能中具有一个变量初始化或内部功能中的多个初始化是最有效的
- 错误LNK2019:未解决的外部符号-MSVC调试构建功能模板
- C 常数和骨料内部功能主体与外部
- 类功能中未解决的外部符号
- 如何在C 中调用外部模板功能
- 如何从窗口功能外部访问wm_command
- 主外部功能的C++ "unresolved external symbol"
- 从班级外部超载成员功能
- C++对 C 语言以外的语言的外部"C"功能
- 使用无功能的外部"C"
- 当它是指向类功能的指针时,如何正确调用函数,但在该类外部
- 将成员功能实现为外部功能
- 执行属于其他进程的外部功能