Freigeben über


Programmgesteuertes Laden einer GraphEdit-Datei

[Das dieser Seite zugeordnete Feature DirectShow ist ein Legacyfeature. Es wurde durch MediaPlayer, IMFMediaEngine und Audio/Video Capture in Media Foundation ersetzt. Diese Features wurden für Windows 10 und Windows 11 optimiert. Microsoft empfiehlt dringend, dass neuer Code nach Möglichkeit MediaPlayer, IMFMediaEngine und Audio/Video Capture in Media Foundation anstelle von DirectShow verwendet. Microsoft schlägt vor, vorhandenen Code, der die Legacy-APIs verwendet, um nach Möglichkeit die neuen APIs zu verwenden.]

Eine Anwendung kann die IPersistStream-Schnittstelle verwenden, um eine GraphEdit-Datei (GRF) zu laden. Verwenden Sie den folgenden Code:

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;
}

Hinweis

Der Aufruf von IPersistStream::Load im vorherigen Codebeispiel kann einen DirectShow-Fehler oder Erfolgscode zurückgeben. Eine Liste der möglichen Rückgabewerte finden Sie unter Fehler- und Erfolgscodes.

 

GraphEdit-Dateien sind nur zum Testen und Debuggen vorgesehen. Sie sind nicht für die Verwendung durch Endbenutzeranwendungen vorgesehen.

Simulieren der Grapherstellung mit GraphEdit

StgIsStorageFile

StgOpenStorage