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


Заголовок traceloggingprovider.h

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;
}

Дополнительные сведения см. в разделе:

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 с указанными идентификаторами действий.