Uso del modelo de eventos de Media Foundation

[La característica asociada a esta página, WINDOWS Media Format 11 SDK, es una característica heredada. Se ha reemplazado por lector de origen y escritor receptor. Lector de origen y escritor receptor se han optimizado para Windows 10 y Windows 11. Microsoft recomienda encarecidamente que el nuevo código use lector fuente y escritor receptor en lugar del SDK de Windows Media Format 11, siempre que sea posible. Microsoft sugiere que el código existente que usa las API heredadas se reescriba para usar las nuevas API si es posible.

Los métodos asincrónicos admitidos por las API extendidas del cliente DRM de Windows Media usan el mismo modelo de eventos que usa el SDK de Media Foundation. Cada objeto que admite métodos asincrónicos implementa la interfaz IWMDRMEventGenerator , que se puede usar para recuperar un evento cuando se completa una operación asincrónica.

La interfaz IWMDRMEventGenerator hereda de la interfaz IMFMediaEventGenerator , que se documenta en la documentación del SDK de Media Foundation.

El código de ejemplo del ejemplo de individualización drm usa el método IMFMediaEventGenerator::GetEvent para recuperar eventos de la cola de uno en uno. El uso de GetEvent es más sencillo que usar IMFMediaEventGenerator::BeginGetEvent y IMFMediaEventGenerator::EndGetEvent con una devolución de llamada, lo que facilita la comprensión de los ejemplos de código. Tanto si usa GetEvent en el código como si implementa IMFAsyncCallback y usa BeginGetEvent y EndGetEvent, la lógica para controlar el evento una vez recibido es el mismo.

Varios de los métodos asincrónicos generan eventos que contienen referencias a objetos que se pueden usar para obtener información de estado más detallada. En estos casos, el evento generado tiene un puntero IUnknown como su valor, que se puede consultar para recuperar la interfaz de estado. En la lista siguiente se resumen las relaciones entre llamadas asincrónicas, eventos generados y otras interfaces.

Ejemplo de individualización de DRM

Introducción

Documentación del SDK de Media Foundation