假设:
函数a如下
void a(void)
{
  CoInitialize(NULL);
  ...//执行添加用户操作
  CoUnitialize();
}
函数b如下
void b(void)
{
  CoInitialize(NULL);
  ...//执行枚举用户的操作
  a()
  CoUnitialize();
}
这样函数b执行时会不会有问题,即
嵌套CoInitialize(NULL)和CoUnitialize()函数对
会不会产生问题?

解决方案 »

  1.   

    为什么在每个函数里面初始化和反初始化??在整个程序初始化处理CoInitialize(NULL);结束处理CoUnitialize()
      

  2.   

    在com文档中规定,每次使用都要按照这样的方式。
      

  3.   

    CoInitialize只是初始话套间模型,如果你的线程中用到了COM/OLE相关东东,只需要初始化一次就够了:)
      

  4.   

    不会有问题,但不建议在每个函数中都加入CoInitialize(NULL)和CoUnitialize()函数,按COM的要求,在每个线程(包括主线程)的入口点调用CoInitialize,出口点处调用CoUnitialize(),总的原则是CoInitialize(NULL)和CoUnitialize()必须成对.
      

  5.   

    那哪位能否告知CoInitialize(NULL)和CoUnitialize()具体做了那些工作?
    这样才好具体判断CoInitialize()/CoUnitialize()函数嵌套会不会迷惑操作系统,呵呵