Нужно, чтоб 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