如何从使用NT的QueueUserWorkItem创建的工作线程调用COM?

时间:2011-10-18 17:14:59

标签: c++ com queueuserworkitem

我有一组使用QueueUserWorkItem从属于NT线程池的任务。我需要从这些单独的线程中调用COM来访问WMI中的数据。但是,我不确定如何正确调用CoInitializeEx

基本上,CoInitializeEx文档说每个线程应该调用一次。但我不拥有这些线程--NT确实如此。我不知道它们何时被创造或销毁,或者任何具有这种性质的东西。我是否基本上在线程例程的开头调用::CoInitializeEx()(带COINIT_MULTITHREADED),然后在我的线程例程结束时调用::CoUninitialize()

1 个答案:

答案 0 :(得分:1)

您可以多次嵌套CoInitCoUninit,他们只需要保持平衡。您在线程过程开始和结束时提出的解决方案是合理的。只需确保您没有任何早退退出CoUninit来电,如果CoUninit失败,请不要致电CoInit