Вход

помогите разобраться с IMediaControl и IGraphBuilder

Научись общаться с машиной и научи других. Все вопросы связанные с программированием и разработкой программ.

Модератор: AxeL

Пишу регулярно

СообщениеПишу регулярно lpn_com lpn_com 0
Оставил 231 сообщений с 10 мар 2006
ФР: 9847
ICQ
7 июля 2007 в 22:02

в плагине для winamp'а проигрываю файл
[code:1]CoInitialize(NULL);
IGraphBuilder* m_objGraphBuilder=0;
IMediaControl* m_objMediaControl=0;

CoCreateInstance(CLSID_FilterGraph,NULL,CLSCTX_INPROC_SERVER,IID_IGraphBuilder,(void**)& m_objGraphBuilder);
m_objGraphBuilder->QueryInterface (IID_IMediaControl, (void**)&m_objMediaControl);
m_objGraphBuilder->RenderFile(MusicFileName,NULL);
m_objMediaControl->Run();[/code:1]
потом слежу когда файл проиграется до конца и отпускаю интерфейсы
[code:1]m_objMediaControl->Release();
m_objGraphBuilder->Release();
CoUninitialize();[/code:1]

так вот, после этого отпускания, при воспроизведении звука самим winamp'ом происходит ошибка (access violation, т.е. как я понимаю какойто указатель (не мой) показывает в никуда) и windows закрывает winamp.
как правильно закончить работу с IMediaControl и IGraphBuilder когда они больше не нужны ?
0

Сообщение sleeps_x 13 июня 2011 в 20:18

1. Проверить что возвращает CoInitialize и вызывать CoUninitialize только если CoInitialize не был вызван ранее (может еще где нужен COM, а ты его закрываешь).
2. Попробовать вызвать IMediaControl::Stop, но должен и так завершаться.
0



Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4