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 убрал тупик.

Другие вопросы по тегам