Прочитать DirectShow графа Com объектом FilterGraph
От: Melamed Россия  
Дата: 30.07.22 18:18
Оценка:
Нужно, чтоб COM объект FilterGraph, входящего в DirectShow, прочитал ранее сохраненный в файле граф. Как я понимаю, это можно сделать с помощью интерфейса IPersistStream. Но для этого нужно связать с интерфейсом IStream c файлом.

Попытался написать следующий код:
    IStorage *pStorage = NULL;
    IStream *pStream = NULL;
    IPersistStream *pPersistStream = NULL;
    const WCHAR wszStreamName[] = L"SaveComObject";
    HRESULT hr = S_OK;
    if (m_pGraphBuilder == NULL)  // IGraphBuilder *m_pGraphBuilder
    {
        hr = E_NOINTERFACE;
    }
    if (SUCCEEDED(hr))
    {
        hr = StgOpenStorage(pszFileName, NULL,
            STGM_READ | STGM_DIRECT_SWMR | STGM_SHARE_EXCLUSIVE, NULL, NULL, &pStorage);
    }
    if (SUCCEEDED(hr))
    {
        hr = pStorage->CreateStream(wszStreamName, STGM_READ | STGM_SHARE_EXCLUSIVE, NULL, NULL, &pStream);
    }
    ...


В строке, написанной жирным шрифтом, возникает ошибка: "Отказано в доступе"
Подскажите, в чем ошибка.
Заранее благодарен
Проект пишется MSVS 2015 C++, WINAPI и stl
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.