IGraphBuilder :: RenderFile () завершается с ошибкой с VFW_E_BAD_KEY - 0x800403f2 - PullRequest
1 голос
/ 26 декабря 2009

Продолжаем расследование по встроенной проблеме WindowsMediaPlayer , я пытаюсь выполнить простое воспроизведение файла через обрабатывающий сервер DirectShow:

::CoInitializeEx(0, COINIT_MULTITHREADED);

CComPtr<IGraphBuilder> spGraph;
spGraph.CoCreateInstance(CLSID_FilterGraph, 0, CLSCTX_INPROC_SERVER);
CComQIPtr<IMediaControl> spMediaControl(spGraph);

// ... later:
spGraph->RenderFile(L"c:\\foo.wav", 0); // fails with VFW_E_BAD_KEY
spMediaControl->Run();

Интересно, что это работает нормально на обеих системах, на которых я тестировал (Windows XP 32 и x64), когда делал это в автономном приложении.
Однако в моем реальном случае он не работает, плагин для браузера на основе NPAPI - то есть DLL, загруженная в Firefox / Chrome / Opera.

Кто-нибудь имеет представление, что здесь может пойти не так?
Или идеи, что еще попробовать?

Обновление: также запрашивается на форумах Microsoft .

Update2:
IGraphBuilder::AddSourceFilter(path,path,&base) уже завершается ошибкой со следующими вызовами реестра (как видно из монитора процессов):

"RegOpenKey","HKCU\Software\Classes\c","NAME NOT FOUND","Desired Access: Query Value, Maximum Allowed" 
"RegOpenKey","HKCU\Software\Classes\Media Type\Extensions\.wav","NAME NOT FOUND","Desired Access: Read" 
"RegOpenKey","HKCU\Software\Classes\Media Type","NAME NOT FOUND","Desired Access: Read"

1 Ответ

2 голосов
/ 26 декабря 2009

Это чтение ключа из неправильного улья. Следует использовать HKLM, а не HKCU. Наиболее вероятной причиной этого является виртуализация реестра.

...