Включение ведения журнала

Диспетчер устройств Windows Media предоставляет объект ведения журнала, который может сохранять сведения в текстовый файл во время выполнения. Разработчики приложений и поставщиков услуг могут использовать этот объект для хранения сообщений в файле журнала во время выполнения приложения или поставщика услуг. Этот объект особенно полезен при обработке файлов, защищенных DRM, так как диспетчер устройств Windows Media не позволит подключить отладчик к процессу, который обрабатывает файлы, защищенные DRM.

Средство ведения журнала — это COM-объект с идентификатором класса CLSID_WMDMLogger, предоставляющим один интерфейс, IWMDMLogger. Компоненты не нуждаются в сертификате для использования объекта ведения журнала.

По умолчанию диспетчер устройств Windows Media поддерживает файл журнала независимо от того, использует ли приложение IWMDMLogger. Этот файл журнала является простым текстовым файлом, и каждая запись включает запись, предшествуемую меткой времени в формате YYYYMMDDDHHMMSS, используя 24-часовое локальное время. Диспетчер устройств Windows Media регистрирует все вызовы API, а также любые записи, которые пользователь добавляет с помощью вызова сообщений IWMDMLogger. Все записи файлов журнала добавляются к файлу до вызова команды сброса или пока файл не превышает своего максимального размера. Файл закрывается автоматически после каждой операции ведения журнала. Тот же файл журнала используется для записей приложения и системных записей.

Ниже показано, как использовать объект ведения журнала:

  1. Включите wmdmlog.h в проект.
  2. Создайте объект для ведения журнала, вызвав CoCreateInstance(CLSID_WMDMLogger) и запросив интерфейс IWMDMLogger. Назначьте указатель интерфейса глобальной переменной.
  3. Убедитесь, что ведение журнала включено путем вызова IWMDMLogger::IsEnabled; Если это не так, включите его, вызвав IWMDMLogger::Enable.
  4. Укажите имя и размер настраиваемого файла журнала. Это делается путем вызова IWMDMLogger::SetLogFileName и IWMDMLogger::SetSizeParams.
  5. На точках кода, в котором требуется сделать запись в журнале, вызовите либо IWMDMLogger::LogDword для журналов строк, содержащих переменные (этот метод аналогичен wsprintf так, как он позволяет форматировать строку, содержащую значение переменной), или вызывать IWMDMLogger::LogString для записи строк констант.

Пример кода см. на справочных страницах методов IWMDMLogger.

задачи, распространенные для приложений и поставщиков услуг