Microsoft DirectX 9.0 |
The Backout method undoes steps taken in the IStreamBuilder::Render method. This includes disconnecting and removing any filters that were added inside Render.
Syntax
HRESULT Backout(
IPin *ppinOut,
IGraphBuilder *pGraph
)
Parameters
ppinOut
[in] Pointer to this pin's IPin interface.
pGraph
[in] Pointer to the filter graph manager's IGraphBuilder interface.
Return Value
Returns an HRESULT value. A return code of S_OK indicates to the graph builder that the disconnect was successful.
Remarks
The following example shows how a filter would reverse the steps that are shown in the code example for the IStreamBuilder::Render method:
STDMETHODIMP CMyOutputPin::BackOut(IPin *pPin, IGraphBuilder *pGraph)
{
CheckPointer(pPin, E_POINTER);
CheckPointer(pGraph, E_POINTER);
HRESULT hr = S_OK;
if (m_Connected != NULL) // Pointer to the pin we're connected to.
{
// Find the filter that owns the pin connected to us.
FILTER_INFO fi;
hr = m_Connected->QueryFilterInfo(&fi);
if (SUCCEEDED(hr))
{
if (fi.pFilter != NULL)
{
// Disconnect the pins.
pGraph->Disconnect(m_Connected);
pGraph->Disconnect(pPin);
// Remove the filter from the graph.
pGraph->RemoveFilter(fi.pFilter);
fi.pFilter->Release();
}
else
{
hr = E_UNEXPECTED;
}
}
}
return hr;
}
See Also