Как зарегистрироваться в качестве пользователя ETW в реальном времени для событий ядра NT? - PullRequest
3 голосов
/ 07 мая 2009

Мне удалось с некоторым успехом использовать logman для выгрузки некоторых трассировок ядра. Тем не менее, я хотел бы иметь возможность программно включать в реальном времени потребление событий ядра (главным образом, создание / удаление потоков / процессов и файловый ввод / вывод) в моем приложении. Как лучше всего подойти к этой задаче?

Ответы [ 2 ]

2 голосов
/ 04 декабря 2009

Вы включаете события ядра в StartTrace . В EVENT_TRACE_PROPERTIES , который вы передаете StartTrace, EnableFlags содержит различные флаги для разных поставщиков событий ядра. Установите LogFileMode в EVENT_TRACE_PROPERTIES на EVENT_TRACE_REAL_TIME_MODE , чтобы быть потребителем в реальном времени. Затем вы можете использовать события, используя ProcessTrace .

1 голос
/ 24 июня 2010

Обратите внимание, что StartTrace может завершиться с ошибкой ERROR_ALREADY_EXISTS, и в этот момент, если вам нужно изменить свойства сеанса, вам нужно использовать ControlTrace. Также обратите внимание, что вам придется запускать вашу программу как администратор, если у вас включен UAC; и что, если вы отлаживаете, вам также нужно запустить Visual Studio как администратор. Ваша программа также должна иметь манифест (если он у вас есть) установлен как «Администратор» для привилегий.

Если вы будете искать в MSDN OpenTrace, ProcessTrace и StartTrace, вы найдете ссылки на различные примеры, которые дадут вам то, что вы хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...