CoCreateInstance зависает при вызове из OnThreadCreate
У меня проблема с CoCreateInstance, которая никогда не возвращается после вызова. Он вызывается из замещающего метода CSourceStream::OnThreadCreate
Я думаю, проблема в том, что я пытаюсь использовать COM внутри отдельного потока, но я не уверен. Как мне использовать COM в другом потоке? Вот стек вызовов и то, как я все равно вызываю функцию. Я проверил, что CoInitialiseEx возвращает S_FALSE, поэтому com работает в этом потоке.
HRESULT hr = CoCreateInstance(CLSID_FilterGraph, NULL,
CLSCTX_INPROC_SERVER, IID_PPV_ARGS(&pGraph));
Я обнаружил, что если я использую CoCreateInstance в другом методе (CSourceStream::FillBuffer), который работает в том же потоке, он работает, но я не знаю почему.
Когда CoCreateInstance зависает, он застревает на WaitForMultipleObjectsEx, например:
1 ответ
Как сказал Саймон в комментариях, меняя
CLSID_FilterGraph
к
CLSID_FilterGraphNoThread
убрал тупик.