DirectShow DirectShow 의 사용법 GraphEdit 에 의한 그래프 생성의 시뮬레이션 프로그램에 의한 GraphEdit 파일의 로드   [목차열람] [주소복사] [슬롯비우기]
프로그램에 의한 GraphEdit 파일의 로드
 
Microsoft DirectX 9.0

프로그램에 의한 GraphEdit 파일의 로드

애플리케이션으로 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 의 문서를 참조할것.

↑TOP