c++ - Windows x64 上 32 位和 64 位应用程序之间的进程间通信

标签 c++ winapi interprocess

我们希望支持一些最近停产的硬件。硬件驱动程序是一个普通的 32 位 C DLL。我们没有源代码,并且(出于法律原因)对驱动程序的反编译或逆向工程不感兴趣。

硬件快速发送大量数据,因此通信协议(protocol)需要非常高效。

我们的软件是 native 64 位 C++ 应用程序,但我们希望通过 32 位进程访问硬件。 32 位和 64 位应用程序相互通信的高效、优雅的方式是什么(理想情况下,不涉及发明新协议(protocol))?

解决方案应该是 C/C++。

更新:一些受访者要求澄清这是用户模式还是内核模式驱动程序。幸运的是,它是一个用户模式驱动程序。

最佳答案

如果这是一个真正的驱动程序(内核模式),你就是 SOL。 Vista x64 不允许安装未签名的驱动程序。这只是一个用户模式 ​​DLL,您可以使用任何标准 IPC 机制来修复。管道、套接字、进程外 COM,大致按此顺序。这一切都以总线速度运行,因此只要您可以缓冲足够的数据,上下文切换开销就不会造成太大伤害。

关于c++ - Windows x64 上 32 位和 64 位应用程序之间的进程间通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/505647/

相关文章:

c++ - 存储和重新使用 decltype 值?

java - 在 RMI 服务器中执行 start rmiregistry 是个好主意吗?

c++ - 即使在派生和添加宏后也无法连接

c++ - C++模板错误: ‘=’ token 之前缺少模板参数

delphi - CreateWindow 不再存在于 user32.dll 中

c++ - 如何使用鼠标钩子(Hook)让当前窗口永远看不到特定的鼠标消息?

delphi - DrawText with DT_CALCRECT - 有没有办法计算矩形的高度而不修改宽度(使用大字符串)?

java - C++ 和 Java 应用程序之间的 NamedPipe 交互进程

java - 使用 Java 在服务器应用程序和 Matlab 客户端之间进行套接字通信

c++ - boost 语言环境转换?