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