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


Использование пользовательских приемников

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

Если у вас есть особые потребности в написании, вы можете создать собственные приемники записи. Модуль записи поддерживает односторонний обмен данными с приемником, выполняя вызовы методов IWMWriterSink. Чтобы создать собственный приемник, реализуйте интерфейс IWMWriterSink в классе в приложении. Этот процесс очень похож на реализацию любого другого интерфейса обратного вызова, используемого объектами пакета SDK для формата Windows Media. Дополнительные сведения о обратных вызовах см. в разделе Использование методов обратного вызова.

Буфер, полученный в IWMWriterSink::OnHeader , должен быть записан в начало файла, а все буферы, полученные в OnDataUnit , должны быть записаны последовательно. OnHeader будет вызываться в начале, но может вызываться и в другое время, и если это так, вы должны, по возможности, перезаписать исходный заголовок. Если приложение по какой-либо причине не может сделать это, просто пропустите последующие вызовы OnHeader .

Пользовательский приемник должен сообщать о своем состоянии приложению для записи путем вызовов метода обратного вызова IWMStatusCallback::OnStatus . Если приемник реализуется как COM-объект, может потребоваться предоставить интерфейс IWMRegisterCallback . Однако вы можете передать адрес обратного вызова OnStatus в приемник и задать контекст любым способом.

Работа с приемниками модуля записи