Поделиться через


Использование модели событий Media Foundation

[Функция, связанная с этой страницей, Windows Media Format 11 SDK, является устаревшей функцией. Он был заменен средством чтения исходного кода и модуля записи приемника. Средство чтения исходного кода и модуль записи приемника оптимизированы для Windows 10 и Windows 11. Корпорация Майкрософт настоятельно рекомендует, чтобы новый код по возможности использовал средство чтения исходного кода и модуль записи приемника вместо пакета SDK для Windows Media Format 11. Корпорация Майкрософт предлагает переписать существующий код, в котором используются устаревшие API, чтобы по возможности использовать новые API.]

Асинхронные методы, поддерживаемые расширенными API клиента DRM Windows Media, используют ту же модель событий, которая используется пакетом SDK Media Foundation. Каждый объект, поддерживающий асинхронные методы, реализует интерфейс IWMDRMEventGenerator , который можно использовать для извлечения события после завершения асинхронной операции.

Интерфейс IWMDRMEventGenerator наследуется от интерфейса IMFMediaEventGenerator , который описан в документации по пакету SDK Media Foundation.

В примере кода в примере индивидуализации DRM используется метод IMFMediaEventGenerator::GetEvent для извлечения событий из очереди по одному за раз. Использовать GetEvent проще, чем использовать IMFMediaEventGenerator::BeginGetEvent и IMFMediaEventGenerator::EndGetEvent с обратным вызовом, что упрощает понимание примеров кода. Независимо от того, используете ли вы GetEvent в коде или реализуете IMFAsyncCallback и BeginGetEvent и EndGetEvent, логика обработки события после его получения будет одинаковой.

Некоторые из асинхронных методов создают события, содержащие ссылки на объекты, которые можно использовать для получения более подробных сведений о состоянии. В таких случаях созданное событие имеет в качестве значения указатель IUnknown , который можно запросить для получения интерфейса состояния. В следующем списке перечислены связи между асинхронными вызовами, созданными событиями и другими интерфейсами.

Пример индивидуализации DRM

начало работы

Документация по пакету SDK Для Media Foundation