Общие сведения о ведении журнала ошибок
[Функция, связанная с этой страницей DirectShow, является устаревшей функцией. Он был заменен MediaPlayer, IMFMediaEngine, и аудио/ видео захвата в Media Foundation. Эти функции оптимизированы для Windows 10 и Windows 11. Корпорация Майкрософт настоятельно рекомендует, чтобы новый код использовал MediaPlayer, IMFMediaEngine и аудио- и видеозахват в Media Foundation вместо DirectShow, когда это возможно. Корпорация Майкрософт предлагает переписать существующий код, использующий устаревшие API, чтобы по возможности использовать новые API.]
[Этот API не поддерживается и может быть изменен или недоступен в будущем.]
Чтобы предоставить приложениям максимальную гибкость в обработке ошибок, в Службах редактирования DirectShow используется механизм обратного вызова. Приложение реализует метод для ведения журнала ошибки. Во время выполнения, если возникает ошибка, DES вызывает указанный вами метод. Метод принимает параметры, описывающие ошибку. Что делает метод с этой информацией, за вас. (Однако он должен возвращаться как можно быстрее, иначе это может помешать выполнению программы.)
Метод обратного вызова журнала ошибок содержится в COM-интерфейсе IAMErrorLog. Приложение должно реализовать этот интерфейс. Как и все COM-интерфейсы, IAMErrorLog наследует интерфейс IUnknown , поэтому приложение также должно реализовать его.
Существует несколько вариантов реализации этих COM-интерфейсов. Можно использовать библиотеку активных шаблонов (ATL), которая предоставляет стандартные реализации методов IUnknown . DirectShow также предоставляет базовый класс C++ CUnknown, который упрощает реализацию COM-интерфейса. Сведения об использовании CUnknown см. в статье Реализация IUnknown.
В примере кода в этой статье определяется автономный класс C++, который реализует как IUnknown , так и IAMErrorLog. Результат не является истинным COM-объектом, так как он не поддерживает CoCreateInstance. Однако этот подход подходит для целей примера.
Связанные темы