Если приложение работает при его запуске в одном направлении, но не в другом, то это может быть связано с доступом к каталогу, из которого он выполняется, например с проблемой разрешений. Например, возможно, у вас есть файловый приемник, который пытается записать в текущий каталог? Если файловый приемник не может записать свой выходной файл, он вернет ошибку, например E_ACCESSDENIED
, когда вызывается IMediaControl->Run()
. Итак, проверьте свои пути вывода и убедитесь, что вы можете создавать файлы и записывать их в этот каталог.
Как отмечает Роман, систематическое удаление фильтров один за другим, вероятно, является лучшим способом для изоляции ошибки. Может быть очень полезно либо сохранить созданный граф в файле GRF
, либо проверить его с помощью GraphEdit, где вы можете поэкспериментировать с ним, или зарегистрировать объекты во время выполнения и динамически играть с графиком. Оба эти метода описаны в документации DirectShow на MSDN.
Я попытался удалить звуковой фильтр. после этого он начинает давать E_FAIL. Если что-то проблематично с фильтром, то как я могу запустить exe, находящийся в папке с выпуском, без каких-либо проблем. Вы пытались запустить его? Можете ли вы помочь мне? – Darshan