Используя C ++ / Win32 API, я сам создаю сеанс трассировки событий. Мое приложение должно поддерживать NT5, поэтому я не могу использовать более новые API.
Я использую флаги кругового режима и флаги реального времени.
У меня все работает, кроме одной ловушки, когда я перезагружаю машину, сеанс ETW не сохраняется, моя служба запускается и воссоздает сеанс ETW (так как перезагрузка стерла его), что приводит к перезаписи файла журнала.
В соответствии с MSDN я должен использовать «глобальный» регистратор на NT5, которого может быть только один, или «AutoLogger» на NT6, которого может быть много. Однако MSDN говорит:
http://msdn.microsoft.com/en-us/library/windows/desktop/aa363687(v=vs.85).aspx
Сеансы AutoLogger увеличивают время загрузки системы и должны быть
используется экономно. Сервисы, которые хотят получать информацию во время
Процесс загрузки должен рассмотреть возможность добавления логики контроллера к себе
использования сессии AutoLogger.
Звучит как излишнее за то, что я пытаюсь сделать. Действительно, мой сервис содержит саму логику «контроллера».
Так как же заставить ETW сохранить мой сеанс трассировки для следующей перезагрузки? Или, в качестве альтернативы, как заново создать сеанс ETW при следующей перезагрузке, не перезаписывая файл ETW, если он уже существует?
Задача ещё не решена.