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


Настройка и запуск сеанса AutoLogger

В сеансе трассировки событий AutoLogger записываются события, возникающие на ранней стадии загрузки операционной системы. Приложения и драйверы устройств могут использовать сеанс AutoLogger для записи трассировок перед входом пользователя. Обратите внимание, что некоторые драйверы устройств, такие как драйверы дискового устройства, не загружаются во время начала сеанса AutoLogger.

AutoLogger отличается от глобального средства ведения журнала следующими способами:

  • Можно указать один или несколько сеансов AutoLogger (глобальный журнал был одним сеансом, в котором регистрировались все события).
  • AutoLogger отправляет уведомление о включении поставщикам при запуске сеанса (глобальный средство ведения журнала не отправляло уведомление о включении поставщикам, поэтому поставщики должны были полагаться на другие средства, чтобы узнать, запущен ли сеанс глобального средства ведения журнала, чтобы начать ведение журнала событий).
  • AutoLogger не поддерживает ведение журнала событий nt Kernel Logger (см. элемент EnableFlags EVENT_TRACE_PROPERTIES). Чтобы регистрировать события ведения журнала ядра NT, необходимо использовать глобальный средство ведения журнала.

Дополнительные сведения о просмотре глобального средства ведения журнала см. в разделе "Настройка и запуск сеанса глобального средства ведения журнала".

Примечание.

ETW поддерживает autoLogger в Windows Vista и более поздних версиях. Используйте глобальный журнал в более ранних операционных системах.

Вы используете реестр для настройки сеанса AutoLogger. Добавьте следующий раздел реестра, если он еще не присутствует:

HKEY_LOCAL_MACHINE
   \SYSTEM
      \CurrentControlSet
         \Control
            \WMI
               \Autologger

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

HKEY_LOCAL_MACHINE
   \SYSTEM
      \CurrentControlSet
         \Control
            \WMI
               \Autologger
                  \Logger Session A
                  \Logger Session B
                  \Logger Session C

Для каждого сеанса создайте ключ для каждого поставщика, который требуется включить в сеанс. Используйте GUID поставщика в качестве ключа.

HKEY_LOCAL_MACHINE
   \SYSTEM
      \CurrentControlSet
         \Control
            \WMI
               \Autologger
                  \Logger Session A
                     \{ProviderGuid1}
                     \{ProviderGuid2}
                  \Logger Session B
                  \Logger Session C

В следующей таблице описываются значения, которые можно определить для каждого сеанса AutoLogger. Для указания этих значений реестра необходимо иметь права администратора. Значение Start и Guid — это единственные значения, необходимые для запуска сеанса AutoLogger. Все остальные значения имеют параметры по умолчанию, которые используются, если значение отсутствует в реестре. Как правило, следует использовать значения по умолчанию. Если указать значение, которое не поддерживается, ETW переопределит значение.

Значение Тип Описание
BufferSize REG_DWORD Размер каждого буфера в килобайтах. Должно быть меньше одного мегабайта. ETW использует размер физической памяти для вычисления этого значения.
ClockType REG_DWORD Таймер, используемый при регистрации метки времени для каждого события.
  • 1 = значение счетчика производительности (высокое разрешение)
  • 2 = системный таймер
  • 3 = счетчик цикла ЦП
Описание каждого типа часов см. в элементе ClientContext WNODE_HEADER.
Значение по умолчанию — 1 (значение счетчика производительности) в Windows Vista и более поздних версиях. До Windows Vista значение по умолчанию равно 2 (системный таймер).
DisableRealtimePersistence REG_DWORD Чтобы отключить сохраняемость в режиме реального времени, задайте для этого значения значение 1. Значение по умолчанию — 0 (включено) для сеансов в режиме реального времени.
Если включена сохраняемость в режиме реального времени, события реального времени, которые не были доставлены во время завершения работы компьютера, будут сохранены. Затем события будут доставлены потребителю при следующем подключении потребителя к сеансу.
FileCounter REG_DWORD Не устанавливайте или не изменяйте это значение. Это значение является серийным номером, используемым для увеличения имени файла журнала при указании FileMax . Если значение недопустимо, предполагается, что 1.
FileName REG_SZ Полный путь к файлу журнала. Путь к этому файлу должен существовать. Файл журнала — это последовательный файл журнала. Путь ограничен 1024 символами.
Если имя файла не указано, события записываются в %SystemRoot%\System32\LogFiles\WMI< sessionname.etl>.
FileMax REG_DWORD Максимальное количество экземпляров файла журнала, который создает ETW. Если файл журнала, указанный в FileName , существует, ETW добавляет значение FileCounter к имени файла. Например, если используется имя файла журнала по умолчанию, форма — %SystemRoot%\System32\LogFiles\WMI< sessionname.etl>. NNNN.
При первом запуске компьютера имя файла — <sessionname.etl.0001>, во второй раз имя файла — <sessionname.etl.0002> и т. д. Если Значение FileMax равно 3, на четвертом перезапуске компьютера ETW сбрасывает счетчик до 1 и перезаписывает <имя> сеанса.etl.0001, если он существует.
Максимальное количество экземпляров поддерживаемого файла журнала — 16.
Не используйте эту функцию с режимом файла журнала EVENT_TRACE_FILE_MODE_NEWFILE .
FlushTimer REG_DWORD Как часто буферы трассировки в секундах принудительно очищаются. Минимальное время очистки составляет 1 секунду. Это принудительное очистка в дополнение к автоматическому сбросу, который возникает при заполнении буфера и при остановке сеанса трассировки.
В случае средства ведения журнала в режиме реального времени значение нуля (значение по умолчанию) означает, что время очистки будет равно 1 секунде. Средство ведения журнала в режиме реального времени — если для LogFileMode задано значение EVENT_TRACE_REAL_TIME_MODE.
Значение по умолчанию равно 0. По умолчанию буферы сбрасываются только в том случае, если они заполнены.
Guid REG_SZ Строка, содержащая ИДЕНТИФИКАТОР GUID, который однозначно идентифицирует сеанс. Это значение обязательно.
LogFileMode REG_DWORD Укажите один или несколько режимов журнала. Возможные значения см. в разделе "Константы режима ведения журнала". Значение по умолчанию — EVENT_TRACE_FILE_MODE_SEQUENTIAL. Вместо записи в файл журнала можно указать EVENT_TRACE_BUFFERING_MODE или EVENT_TRACE_REAL_TIME_MODE.
Указание EVENT_TRACE_BUFFERING_MODE позволяет избежать затрат на очистку содержимого сеанса на диск, когда файловая система становится доступной.
Обратите внимание, что при использовании EVENT_TRACE_BUFFERING_MODE система будет игнорировать значение MaximumBuffers, так как размер буфера является продуктом MinimumBuffers и BufferSize.
Сеансы AutoLogger не поддерживают режим EVENT_TRACE_FILE_MODE_NEWFILE ведения журнала.
Если указана EVENT_TRACE_FILE_MODE_APPEND, буферSize должен быть явно указан и должен быть одинаковым как в средстве ведения журнала, так и в добавляемом файле.
Maxfilesize REG_DWORD Максимальный размер файла журнала в мегабайтах. Сеанс закрывается при достижении максимального размера, если вы не находитесь в режиме циклического файла журнала. Чтобы указать ограничение, задайте значение 0. Значение по умолчанию — 100 МБ, если не задано. Поведение, возникающее при достижении максимального размера файла, зависит от значения LogFileMode.
MaximumBuffers REG_DWORD Максимальное количество выделенных буферов. Как правило, это значение — минимальное количество буферов плюс двадцать. ETW использует размер буфера и размер физической памяти для вычисления этого значения. Это значение должно быть больше или равно значению для MinimumBuffers.
МинимальныеBuffers REG_DWORD Минимальное количество буферов, выделяемых при запуске. Минимальное количество буферов, которые можно указать, — это два буфера на процессор. Например, на одном процессоре минимальное количество буферов составляет два.
Начало REG_DWORD Чтобы сеанс AutoLogger запускался при следующем перезапуске компьютера, задайте для этого значения значение 1; в противном случае задайте для этого значения значение 0.
Состояние REG_DWORD Состояние запуска автолога. Если автолог не удалось запустить, значение этого ключа является соответствующим кодом ошибки Win32. Если автолог успешно запущен, значение этого ключа ERROR_SUCCESS (0).
Загрузки REG_DWORD Эта функция не должна использоваться вне сценариев отладки.
Если этот раздел реестра имеет значение 1, автоматический журнал будет запущен раньше, чем обычно во время инициализации ядра, что позволяет ему записывать события во время инициализации многих важных подсистем ядра. Однако включение этого параметра негативно влияет на время загрузки и накладывает дополнительные ограничения для автолога. Если эта функция включена, идентификатор GUID сеанса автолога должен быть заполнен, и многие другие параметры автолога могут не работать.
Этот ключ поддерживается в Windows Server 2022 и более поздних версиях.

В следующей таблице описаны значения, которые можно определить для каждого поставщика, который требуется включить в сеанс. Для указания этих значений реестра необходимо иметь права администратора. Если указать значение, которое не поддерживается, ETW переопределит значение.

Значение Тип Описание
Включено REG_DWORD Определяет, включен ли поставщик. Чтобы включить поставщик, задайте для этого значения значение 1. Чтобы отключить поставщика, задайте для этого значения значение 0. По умолчанию установлено значение 0.
EnableFlags REG_DWORD Определяемое поставщиком значение, указывающее класс событий, для которых поставщик создает события. Дополнительные сведения см. в параметре EnableFlags функции EnableTrace. Укажите это имя значения, если поставщик не поддерживает MatchAnyKeyword или MatchAllKeyword.
EnableLevel REG_DWORD Определяемое поставщиком значение, указывающее уровень детализации, включенный в событие. Например, это значение можно использовать для указания уровня серьезности событий (информационных, предупреждений, ошибок), создаваемых поставщиком. Список предопределенных уровней см. в параметре уровня функции EnableTraceEx.
EnableProperty REG_DWORD Используйте это значение для включения одного или нескольких следующих элементов в файл журнала:
  • EVENT_ENABLE_PROPERTY_SID (0x00000001) = включить в расширенные данные идентификатор безопасности пользователя.
  • EVENT_ENABLE_PROPERTY_TS_ID (0x00000002) = включить в расширенные данные идентификатора сеанса терминала.
  • EVENT_ENABLE_PROPERTY_STACK_TRACE (0x00000004) = включить в расширенные данные трассировку стека вызовов для событий, написанных с помощью EventWrite.
  • EVENT_ENABLE_PROPERTY_IGNORE_KEYWORD_0 (0x00000010) = фильтрует все события, которые не имеют ненулевых ключевое слово.
  • EVENT_ENABLE_PROPERTY_PROVIDER_GROUP (0x00000020) = Указывает, что этот вызов EnableTraceEx2 должен включать группу поставщиков, а не отдельный поставщик событий.
  • EVENT_ENABLE_PROPERTY_PROCESS_START_KEY (0x00000080) = включить ключ запуска процесса в расширенные данные.
  • EVENT_ENABLE_PROPERTY_EVENT_KEY (0x00000100) = включить ключ события в расширенные данные.
  • EVENT_ENABLE_PROPERTY_EXCLUDE_INPRIVATE (0x00000200) = фильтрует все события, помеченные как событие InPrivate, или из процесса, помеченного как InPrivate.
Дополнительные сведения об этих элементах см. в разделе EnableProperty структуры ENABLE_TRACE_PARAMETERS.
MatchAnyKeyword REG_QWORD Битовая маска ключевое слово, которая определяет категорию событий, которые требуется записать поставщику. Поставщик записывает событие, если любой из ключевое слово битов события соответствует любому из битов, заданных в этой маске. Чтобы указать, что поставщик записывает все события, задайте для этого значения нулевое значение. Пример см. в разделе "Примечания" функции EnableTraceEx.
MatchAllKeyword REG_QWORD Эта битовая маска является необязательной. Эта маска дополнительно ограничивает категорию событий, которые требуется записать поставщику. Если ключевое слово события соответствует условию MatchAnyKeyword, поставщик будет записывать событие только в том случае, если все биты в этой маске существуют в ключевое слово события. Эта маска не используется, если MatchAnyKeyword равно нулю. Пример см. в разделе "Примечания" функции EnableTraceEx.

После изменения реестра сеанс Автолога запускается при следующем перезапуске компьютера. Сеанс AutoLogger вызывает функцию EnableTraceEx , чтобы включить поставщиков.

Сеансы AutoLogger увеличивают время загрузки системы и должны использоваться кратно. Службы, которые хотят записывать данные во время загрузки, должны рассмотреть возможность добавления логики контроллера в себя вместо использования сеанса AutoLogger.

Чтобы остановить сеанс AutoLogger, вызовите функцию ControlTrace . Имя сеанса, передаваемое функции, — это имя раздела реестра, который использовался для определения сеанса в реестре.

Дополнительные сведения о запуске сеанса трассировки событий см. в разделе "Настройка и запуск сеанса трассировки событий".

Дополнительные сведения о запуске сеанса частного ведения журнала см. в разделе "Настройка и запуск сеанса частного средства ведения журнала".

Дополнительные сведения о запуске сеанса ведения журнала ядра NT см. в разделе "Настройка и запуск сеанса средства ведения журнала ядра NT".

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

Настройка и запуск сеанса SystemTraceProvider

Настройка и запуск сеанса трассировки событий

Настройка и запуск сеанса ведения журнала ядра NT

EnableTraceEx2

ENABLE_TRACE_PARAMETERS

EVENT_FILTER_DESCRIPTOR

PAYLOAD_FILTER_PREDICATE

TdhAggregatePayloadFilters

TdhCreatePayloadFilter

Обновление сеанса трассировки событий