2013-12-10 2 views
0

Я пытаюсь понять прямое шоу и фильтры. Для этого я загрузил код (from here), и я могу запустить его .exe в папке с выпуском. Но теперь, когда я пытаюсь запустить, что с помощью Visual Studio 2010, следующая строкаimediacontrol-> run возвращает E_ACCESSDENIED при запуске графика в C++

hr = m_pMediaControl -> Run(); 

возвращается E_ACCESSDENIED. Я попытался найти ответ в Интернете, но ничего не получил.

ответ

0

Эта ошибка является нетипичной, и что происходит, Filter Manager Manager не может выполнить один раз из своих внутренних задач, а затем пересылает код ошибки из внутренней операции в вызывающего абонента (вы). Один из фильтров на графике может сообщить об отказе при его переходе состояния.

Чтобы устранить эту проблему, вам нужно проверить топологию графика фильтра и затем попытаться удалить часть фильтра, пока вы не избавитесь от ошибки. Вы выделите проблему для конкретного фильтра.

+0

Я попытался удалить звуковой фильтр. после этого он начинает давать E_FAIL. Если что-то проблематично с фильтром, то как я могу запустить exe, находящийся в папке с выпуском, без каких-либо проблем. Вы пытались запустить его? Можете ли вы помочь мне? – Darshan

0

Если приложение работает при его запуске в одном направлении, но не в другом, то это может быть связано с доступом к каталогу, из которого он выполняется, например с проблемой разрешений. Например, возможно, у вас есть файловый приемник, который пытается записать в текущий каталог? Если файловый приемник не может записать свой выходной файл, он вернет ошибку, например E_ACCESSDENIED, когда вызывается IMediaControl->Run(). Итак, проверьте свои пути вывода и убедитесь, что вы можете создавать файлы и записывать их в этот каталог.

Как отмечает Роман, систематическое удаление фильтров один за другим, вероятно, является лучшим способом для изоляции ошибки. Может быть очень полезно либо сохранить созданный граф в файле GRF, либо проверить его с помощью GraphEdit, где вы можете поэкспериментировать с ним, или зарегистрировать объекты во время выполнения и динамически играть с графиком. Оба эти метода описаны в документации DirectShow на MSDN.

Смежные вопросы