Udostępnij przez


Dodawanie drenu do modułu zapisującego

[Funkcja skojarzona z tą stroną, windows Media Format 11 SDK, jest starszą funkcją. Został zastąpiony przez Odtwarzacz Źródłowy i Pisarza Ujścia . czytnika źródeł i składników zapisywania ujścia zostały zoptymalizowane pod kątem systemów Windows 10 i Windows 11. Firma Microsoft zdecydowanie zaleca, aby nowy kod używał czytnika źródeł i modułu zapisywania ujścia zamiast zestawu SDK windows Media Format 11, jeśli jest to możliwe. Firma Microsoft sugeruje, że istniejący kod, który używa starszych interfejsów API, należy przepisać go do korzystania z nowych interfejsów API, jeśli to możliwe.]

Węzły zapisywania są odrębnymi obiektami od modułu zapisywania i należy je dodać do modułu, aby mogły być używane. Jeśli piszesz do pliku, możesz po prostu wywołać IWMWriter::SetOutputFilename, co spowoduje automatyczne skonfigurowanie ujścia pliku. W przeciwnym razie, aby dodać odbiornik do modułu zapisywania, wywołaj metodę IWMWriterAdvanced::AddSink. AddSink wymaga wskaźnika do interfejsu IWMWriterSink sinku.

Po zakończeniu korzystania z ujścia należy go zamknąć, wywołując odpowiednią metodę w zależności od typu ujścia, a następnie usunąć go z modułu zapisywania, wywołując IWMWriterAdvanced::RemoveSink.

Poniższy przykładowy kod pokazuje, jak utworzyć ujście pliku zapisywania i dodać go do składnika zapisywania. Aby uzyskać więcej informacji na temat korzystania z tego kodu, zobacz Using the Code Examples.

HRESULT AddFileSink(IWMWriterFileSink** ppFileSink, IWMWriter* pWriter)
{
    HRESULT hr = S_OK;
    IWMWriterSink*     pSinkBase       = NULL;
    IWMWriterAdvanced* pWriterAdvanced = NULL;

    hr = CreateWriterFileSink(ppFileSink);
    GOTO_EXIT_IF_FAILED(hr);

    hr = *ppFileSink->QueryInterface(IID_IWMWriterSink, 
                                     (void**) &pSinkBase);
    GOTO_EXIT_IF_FAILED(hr);

    hr = pWriter->QueryInterface(IID_IWMWriterAdvanced,
                                 (void**) &pWriterAdvanced);
    GOTO_EXIT_IF_FAILED(hr);

    hr = pWriterAdvanced->AddSink(pSinkBase);
    GOTO_EXIT_IF_FAILED(hr);

Exit:
    SAFE_RELEASE(pSinkBase);
    SAFE_RELEASE(pWriterAdvanced);
    return hr;
}

otrzymywanie komunikatów o błędach z ujścia

Interfejs IWMWriterAdvanced

Praca z Writer Sinks