Неизданный фильтр DirectShow CSource вызывает сбой программы при завершении процесса

Я разрабатываю фильтр захвата DirectShow CSource. Это работает нормально, но когда я закрываю программу, которая использует фильтр (в этом случае я тестирую с VLC, но то же самое происходит с другими программами), программа вылетает (если я отлаживаю ее в Visual Studio, то точка останова срабатывает).

Я уже некоторое время выискиваю эту проблему и обнаружил, что и мой исходный фильтр, и мой исходный поток не освобождаются; это значит, что их счетчик ссылок равен 1 в конце программы, функция DllCanUnloadNow () сообщает, что еще используются 2 объекта, и, когда вызывается CoUninitialize (), происходит сбой программы.

Я почти уверен, что счетчики ссылок обрабатываются правильно, поскольку я использую реализацию базовых классов. Единственная необычная вещь в моем программном обеспечении, о которой я могу думать, это то, что я использую свою собственную версию DllGetClassObject (): я настроил файл .DEF для экспорта MyDllGetClassObject () вместо DllGetClassObject (), так что я мог вставить некоторый код раньше вызывая реализацию по умолчанию. Я не думаю, что это проблема, так как я проверил, что счетчик ссылок всех объектов, которые я возвращаю в конце MyDllGetClassObject (), равен 1.

Я полагаю, что я что-то упустил в жизненном цикле фильтра, но не могу понять, что именно (это самый первый фильтр захвата, который я разрабатываю). Любое предложение?

Заранее спасибо,

Гильермо

Ответы на вопрос(1)

Ваш ответ на вопрос