DirectShow DirectShow 의 사용법 GraphEdit 에 의한 그래프 생성의 시뮬레이션 프로그램에 의한 GraphEdit 파일의 로드 [목차열람] [주소복사] [슬롯비우기] |
Microsoft DirectX 9.0 |
애플리케이션으로 IPersistStream 인터페이스를 사용해, GraphEdit (. grf) 파일을 로드할 수 있다. 다음 코드를 사용한다.
HRESULT LoadGraphFile(IGraphBuilder *pGraph, const WCHAR* wszName)
{
IStorage *pStorage = 0;
if (S_OK != StgIsStorageFile(wszName))
{
return E_FAIL;
}
HRESULT hr = StgOpenStorage(wszName, 0,
STGM_TRANSACTED | STGM_READ | STGM_SHARE_DENY_WRITE,
0, 0, &pStorage);
if (FAILED(hr))
{
return hr;
}
IPersistStream *pPersistStream = 0;
hr = pGraph->QueryInterface(IID_IPersistStream,
reinterpret_cast<void**>(&pPersistStream));
if (SUCCEEDED(hr))
{
IStream *pStream = 0;
hr = pStorage->OpenStream(L"ActiveMovieGraph", 0,
STGM_READ | STGM_SHARE_EXCLUSIVE, 0, &pStream);
if(SUCCEEDED(hr))
{
hr = pPersistStream->Load(pStream);
pStream->Release();
}
pPersistStream->Release();
}
pStorage->Release();
return hr;
}
GraphEdit 파일은 테스트와 디버그에만 사용하도록(듯이) 주의 해야 한다. 최종 사용자전용 애플리케이션에서의 사용은 상정되지 않다.
StgIsStorageFile 함수와 StgOpenStorage 함수의 더 자세한 정보는, Platform SDK 의 문서를 참조할것.