Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
TraceLogging — это система для ведения журнала самоописанных событий, которые можно декодировать без манифеста. В Windows TraceLogging используется для создания трассировки событий Windows (ETW).
Заголовок TraceLoggingProvider.h в windows SDK содержит макросы и встроенные функции для создания событий трассировки событий Трассировки событий Windows в кодировке TraceLogging для кода ядра и пользовательского режима с помощью C или C++.
Примечание
TraceLoggingProvider.h требует постоянных значений времени компиляции для атрибутов событий, таких как имя поставщика, имя события и имена полей. Чтобы свести к минимуму затраты на среду выполнения, TraceLoggingProvider.h создает свои структуры данных во время компиляции и сохраняет информацию в памяти только для чтения. Если необходимо создать динамические события среды выполнения, необходимо использовать другую реализацию TraceLogging, например TraceLoggingDynamic.
Быстрое начало
- В C- или CPP-файле используйте макрос TRACELOGGING_DEFINE_PROVIDER для объявления дескриптора глобального поставщика. Дескриптор поставщика представляет подключение вашего компонента к трассировки событий Windows.
- При запуске компонента (например
main,wmainDllMainилиDriverEntry) используйте функцию TraceLoggingRegister, чтобы открыть подключение компонента к etw. - При завершении работы компонента используйте функцию TraceLoggingUnregister , чтобы закрыть подключение компонента к etw.
- Во время выполнения компонента используйте макрос TraceLoggingWrite для создания событий трассировки событий Трассировки событий Windows в кодировке TraceLogging.
- При необходимости используйте макрос TRACELOGGING_DECLARE_PROVIDER в заголовках, чтобы переадресовать и объявить дескриптор поставщика, чтобы его можно было использовать в других частях компонента.
- Для сбора данных трассировки используйте такие средства, как WPR, tracelog или traceview .
- Для декодирования и просмотра трассировок используйте такие средства, как WPA, tracefmt или traceview .
Пример
#include <windows.h> // or <wdm.h> for kernel-mode.
#include <winmeta.h> // For event level definitions.
#include <TraceLoggingProvider.h>
TRACELOGGING_DEFINE_PROVIDER( // defines g_hProvider
g_hProvider, // Name of the provider handle
"MyCompany.MyComponent", // Human-readable name for the provider
// {ce5fa4ea-ab00-5402-8b76-9f76ac858fb5}
(0xce5fa4ea,0xab00,0x5402,0x8b,0x76,0x9f,0x76,0xac,0x85,0x8f,0xb5));
int main(int argc, char* argv[]) // or DriverEntry for kernel-mode.
{
TraceLoggingRegister(g_hProvider);
TraceLoggingWrite(
g_hProvider,
"MyEvent1",
TraceLoggingLevel(WINEVENT_LEVEL_WARNING), // Levels defined in <winmeta.h>
TraceLoggingKeyword(MyEventCategories), // Provider-defined categories
TraceLoggingString(argv[0], "arg0"), // field name is "arg0"
TraceLoggingInt32(argc)); // field name is implicitly "argc"
TraceLoggingUnregister(g_hProvider);
return 0;
}
Дополнительные сведения см. в разделе:
- TraceLogging
- Макросы-оболочки TraceLogging
- TraceLoggingWrite
- TRACELOGGING_DECLARE_PROVIDER
- TRACELOGGING_DEFINE_PROVIDER
traceloggingprovider.h содержит следующие программные интерфейсы:
Функции
|
TRACELOGGING_DECLARE_PROVIDER Переадресация объявляет дескриптор для поставщика TraceLogging. |
|
TRACELOGGING_DEFINE_PROVIDER Определяет дескриптор для поставщика TraceLogging. |
|
TRACELOGGING_DEFINE_PROVIDER_STORAGE Резервирует статическое хранилище для дескриптора поставщика TraceLogging, который будет определен пользователем. Предпочитать TRACELOGGING_DEFINE_PROVIDER вместо этого макроса. |
|
TraceLoggingBinary Макрос-оболочка TraceLogging, который добавляет в событие поле с двоичными данными. |
|
TraceLoggingChannel Макрос-оболочка TraceLogging, который задает канал для события. |
|
TraceLoggingCustom Макрос-оболочка TraceLogging, который добавляет в событие поле, упакованного с помощью пользовательского сериализатора. |
|
TraceLoggingCustomAttribute Макрос-оболочка TraceLogging, который добавляет пользовательские сведения о событии в PDB. |
|
TraceLoggingDescription Макрос-оболочка TraceLogging, который задает описание события. |
|
TraceLoggingEventTag Макрос-оболочка TraceLogging, который задает тег события для события. |
|
TraceLoggingKeyword Макрос-оболочка TraceLogging, который задает ключевое слово для события. |
|
TraceLoggingLevel Макрос-оболочка TraceLogging, который задает уровень для события |
|
TraceLoggingOpcode Макрос-оболочка TraceLogging, который задает код операции для события |
|
TraceLoggingOptionGroup Макрос TraceLogging для использования в TRACELOGGING_DEFINE_PROVIDER для указания группы поставщиков. |
|
TraceLoggingProviderEnabled Макрос TraceLogging для определения того, прослушивает ли какой-либо потребитель трассировки событие от этого поставщика. |
|
TraceLoggingProviderId Возвращает идентификатор поставщика TraceLogging. |
|
TraceLoggingRegister Регистрирует поставщик TraceLogging, чтобы его можно было использовать для регистрации событий. |
|
TraceLoggingRegisterEx Регистрирует поставщик TraceLogging, чтобы его можно было использовать для регистрации событий, указывая обратный вызов включения трассировки событий Windows. |
|
TraceLoggingSetInformation Настраивает поставщик TraceLogging, вызывая EventSetInformation. |
|
TraceLoggingSocketAddress Макрос-оболочка TraceLogging, который добавляет в событие поле с адресом сокета. |
|
TraceLoggingStruct Макрос-оболочка TraceLogging, который добавляет в событие поле, содержащее другие поля. |
|
TraceLoggingUnregister Отменяет регистрацию поставщика TraceLogging. |
|
TraceLoggingValue Макрос-оболочка TraceLogging для C++, который добавляет в событие поле с автоматически выводимым типом. |
|
TraceLoggingWrite Создает событие TraceLogging. |
|
TraceLoggingWriteActivity Создает событие TraceLogging с указанными идентификаторами действий. |