我对 CoCreateInstance 有一个问题,它在被调用后永远不会返回。它从 CSourceStream::OnThreadCreate 的重写方法调用
我认为问题在于我尝试在单独的线程中使用 COM,但我不确定。如何在另一个线程中使用 COM?这是调用堆栈以及无论如何我如何调用该函数。我检查了 CoInitialiseEx 返回 S_FALSE,所以 com 正在那个线程上运行。
HRESULT hr = CoCreateInstance(CLSID_FilterGraph, NULL,
CLSCTX_INPROC_SERVER, IID_PPV_ARGS(&pGraph));
我发现如果我在另一个运行在同一线程上的方法(CSourceStream::FillBuffer)中使用 CoCreateInstance,它可以工作,但我不知道为什么。
当 CoCreateInstance 挂起时,它会卡在 WaitForMultipleObjectsEx 上,如下所示: