2012-05-07 167 views
2

我正试图将SNMP代理集成到用本地C++编写的Windows应用程序中。如何在Windows和主应用程序之间进行通信?

要使此代理成为Windows SNMP代理的子代理,必须编写一个DLL,该DLL可导出由Windows SNMP服务调用的某些例程。到目前为止,事情工作正常。

现在这个DLL需要从应用程序中获取实际的信息。我的第一个想法是让应用程序和DLL使用双方均可访问的共享内存块,但这会使信息始终略显陈旧,并且在SNMP请求进入时运行某些代码以获取最新值会更好。双方将读写信息。

该应用程序已经有一个基于TCP的控制台界面,但连接,查询,断开连接对于来自SNMP客户端的非常频繁的请求可能有点重。

我的选择是让DLL直接与应用程序通信吗?

回答

2

命名管道很容易处理,不会干扰防火墙,也不需要addtional同步(就像共享内存一样)。有关更多信息,请参见MSDN

+0

我正试图收集选项。命名管道和共享内存是您看到的唯一轻量级选项吗? –

+1

@Gene:是的。如果DLL保持加载到内存中并且数据块不够大,并且您有使用COM的经验,则可以使您的应用程序成为进程外COM-Server。 –

相关问题