Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
[De functie die is gekoppeld aan deze pagina, Windows Media Format 11 SDK, is een verouderde functie. Het is vervangen door Source Reader en Sink Writer. Bronlezer en Sink Writer zijn geoptimaliseerd voor Windows 10 en Windows 11. Microsoft raadt ten zeerste aan om nieuwe code te gebruiken bronlezer en Sink Writer- in plaats van Windows Media Format 11 SDK, indien mogelijk. Microsoft stelt voor dat bestaande code die gebruikmaakt van de verouderde API's, indien mogelijk opnieuw worden geschreven om de nieuwe API's te gebruiken.]
Het writer-object verzendt geen berichten naar de methode IWMStatusCallback::OnStatus callback-methode. U kunt echter schrijfsinks instellen om berichten naar OnStatus te verzenden. Elke sink moet zijn ingesteld om de status afzonderlijk te leveren, maar alle sinks kunnen rapporteren aan dezelfde callback.
Als u een sink wilt instellen voor het leveren van statusberichten aan OnStatus, roept u de methode IWMRegisterCallback::Advise aan.
In de volgende voorbeeldcode ziet u hoe u alle sinks instelt om statusberichten te leveren aan een OnStatus callback. In dit voorbeeld wordt de index van elke sink gebruikt als contextparameter, zodat de methode OnStatus onderscheid kan maken tussen berichten van de verschillende sinks. Voor meer informatie over het gebruik van deze code, zie Gebruik van de codevoorbeelden.
HRESULT SetSinksForStatus (IWMWriter* pWriter, IWMStatusCallback* pStatus)
{
HRESULT hr = S_OK;
DWORD cSinks = 0;
DWORD dwSinkIndex = 0;
IWMWriterAdvanced* pWriterAdvanced = NULL;
IWMWriterSink* pSink = NULL;
IWMRegisterCallback* pRegisterCallbk = NULL;
// Get the advanced writer interface.
hr = pWriter->QueryInterface(IID_IWMWriterAdvanced,
(void**)&pWriterAdvanced);
GOTO_EXIT_IF_FAILED(hr);
// Get the number of sinks that are added to the writer object.
hr = pWriterAdvanced->GetSinkCount(&cSinks);
GOTO_EXIT_IF_FAILED(hr);
// Loop through all of the sinks.
for(dwSinkIndex = 0; dwSinkIndex < cSinks; dwSinkIndex++)
{
// Get the base interface for the next sink.
hr = pWriterAdvanced->GetSink(dwSinkIndex, &pSink);
GOTO_EXIT_IF_FAILED(hr);
// Get the callback registration interface for the sink.
hr = pSink->QueryInterface(IID_IWMRegisterCallback,
(void**)&pRegisterCallbk);
GOTO_EXIT_IF_FAILED(hr);
// Register the OnStatus callback.
hr = pRegisterCallbk->Advise(pStatus, (void*) &dwSinkIndex);
GOTO_EXIT_IF_FAILED(hr);
// Release for the next iteration.
SAFE_RELEASE(pSink);
SAFE_RELEASE(pRegisterCallbk);
} // end for dwSinkIndex
Exit:
SAFE_RELEASE(pSink);
SAFE_RELEASE(pRegisterCallbk);
SAFE_RELEASE(pWriterAdvanced);
return hr;
}
Verwante onderwerpen