我一直在研究幾個C++項目,其中涉及使用窗口消息來做一些簡單的IPC。在許多情況下,通過將數據放入共享內存段,然後通過調用SendMessage將指針傳遞到共享內存,會將一些額外數據與窗口消息一起傳遞。重新做這一切的時候很討厭,但通過發明又一IPC系統解決這個沉悶的重複之前,我想問:C/C++ for Windows中基於內存的輕量級IPC機制是什麼?
有一個現有的框架,滿足條件?:
- 用C或C++編寫(我們在這裏使用MSVC)
- 儘可能少依賴;在最好的情況下,它只是一些使用普通C++和Windows標準庫的源文件,並且可以直接編譯到應用程序/庫中。
- 適用於Windows XP和更新
- 是建立在窗口消息加一個共享內存段
- 正確的錯誤報告將是非常需要的(遠程過程不見了,遠程進程不理解給定的消息,參數不匹配,等等)
對於它的價值,COM對我們來說並不是一個真正的選擇,因爲使用它非常痛苦(除非你開始在它的頂部使用所有我們想要避免的封裝)。我並不需要界面和所有這些東西;只是一種方便的方式,通過一些錯誤處理(來自最佳情況下的任意)參數來回發送消息。此外,我放棄了比我需要的更多的DBUS。
boost :: interprocess? – karlphillip 2010-12-07 15:14:38
我不明白COM爲什麼會很痛苦,特別是當你有ATL的時候(就像你在MSVC++上做的那樣)。 – 2010-12-07 16:47:54
@Billy ONeal:ATL是我在編寫``時想到的COM之上的框架之一`,除非你開始在它的頂部使用我們想要避免的各種包裝。 – 2010-12-08 09:34:20