2012-05-07 18 views
2

私はネイティブC++で書かれたWindowsアプリケーションにSNMPエージェントを統合しようとしています。Windowsとメインアプリケーションから呼び出されるDLL間の通信方法は?

このエージェントをWindows SNMPエージェントのサブエージェントにするには、Windows SNMPサービスによって呼び出される特定のルーチンをエクスポートするDLLを作成する必要があります。これまでのところは正常に動作しています。

このDLLはアプリケーションから実際の情報を取得する必要があります。私の最初のアイデアは、アプリケーションとDLLが両方の側からアクセスする共有メモリブロックを使用するようにすることでしたが、情報が常にslighly staleになり、SNMP要求が入ったときに最新の値をフェッチする方が良いでしょう。側面は情報を読み書きします。

アプリケーションにはすでにTCPベースのコンソールインターフェイスがありますが、SNMPクライアントからの非常に頻繁な要求に対しては、接続、照会、切断は少し重いかもしれません。

DLLがアプリケーションと直接通信できるようにする私のオプションは何ですか?

答えて

2

名前付きパイプは非常に扱いやすく、ファイアウォールに干渉せず、(共有メモリのように)追加同期を必要としません。詳細については、MSDNを参照してください。

+0

私はオプションを収集しようとしています。名前付きパイプと共有メモリだけが軽量オプションですか? –

+1

@Gene:はい。 DLLがメモリにロードされたままで、データチャンクが大きくなく、COMでの経験がある場合、アプリケーションをプロセス外のCOMサーバーにすることができます。 –

関連する問題