提升进程间message_queue和COM

时间:2011-08-04 15:23:57

标签: winapi boost com message-queue interprocess

我正在使用boost :: interprocess :: message_queue进行进程间的通信。在其中一个我使用

::CoInitializeEx( 0, COINIT_MULTITHREADED );

设置COM调用。我无法访问在此调用之后从其他进程创建的任何队列,或者在CoInit调用之前访问相同的进程。

我对COM和他们的线程模型并不十分熟悉,CoInit调用是由同事添加的。我该怎么做才能解决这个问题?

这是一个简短的片段来说明:

boost::interprocess::message_queue m_queue1( boost::interprocess::open_or_create, "testqueue", 256, sizeof(int) );
::CoInitializeEx( 0, COINIT_MULTITHREADED );
boost::interprocess::message_queue m_queue2( boost::interprocess::open_only, "testqueue" );

在此示例中,第二个队列的构造函数将抛出异常,因为它认为队列不存在。如果我删除CoInit调用它可以正常工作。

编辑: Boost版本是1.46.1。上面代码段中对CoInit的调用返回S_OK。

0 个答案:

没有答案