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


макрос TRACELOGGING_DEFINE_PROVIDER_STORAGE (traceloggingprovider.h)

Резервирует статическое хранилище для дескриптора поставщика TraceLogging, который будет определен пользователем. Предпочитать TRACELOGGING_DEFINE_PROVIDER вместо этого макроса.

Синтаксис

void TRACELOGGING_DEFINE_PROVIDER_STORAGE(
  [in]            storageVariable,
  [in]            providerName,
  [in]            providerId,
  [in, optional]  __VA_ARGS__
);

Параметры

[in] storageVariable

Имя, используемое для переменной хранения статического поставщика, например MyStaticProviderStorage.

[in] providerName

Строковый литерал с именем поставщика TraceLogging. Это имя должно быть специфичным для вашей организации и компонента, чтобы не конфликтовать с поставщиками из других компонентов. Эта строка имени будет включена в каждое событие трассировки событий Windows, созданное поставщиком, поэтому попробуйте использовать относительно короткое имя. Например, можно использовать такое имя, как "MyCompany.MyComponent" или "MyCompany.MyOrganization.MyComponent".

Это должен быть строковый литерал. Не используйте переменную.

[in] providerId

GUID элемента управления ETW для поставщика, указанный в виде разделенного запятыми списка из 11 целых чисел в круглых скобках. Например, GUID {ce5fa4ea-ab00-5402-8b76-9f76ac858fb5} будет выражен как (0xce5fa4ea,0xab00,0x5402,0x8b,0x76,0x9f,0x76,0xac,0x85,0x8f,0xb5).

Хотя для идентификатора поставщика можно использовать любой уникальный ИДЕНТИФИКАТОР GUID, корпорация Майкрософт рекомендует использовать GUID, созданный из имени поставщика, с помощью алгоритма хэширования имен трассировки событий Windows. Сведения о создании идентификатора поставщика см. в разделе TRACELOGGING_DEFINE_PROVIDER .

[in, optional] __VA_ARGS__

Необязательные параметры для поставщика. Большинству поставщиков не требуется указывать необязательные параметры.

Если вы хотите, чтобы поставщик был связан с группой поставщиков etW, добавьте макрос TraceLoggingOptionGroup , чтобы указать GUID группы поставщика. В противном случае не указывайте никаких __VA_ARGS__ параметров.

Возвращаемое значение

None

Remarks

В большинстве случаев вместо этого макроса используется TRACELOGGING_DEFINE_PROVIDER . В некоторых необычных сценариях может потребоваться использовать этот макрос для выделения статического хранилища для поставщика TraceLogging без объявления переменной дескриптора. Затем код объявит переменную дескриптора соответствующим образом.

TRACELOGGING_DEFINE_PROVIDER_STORAGE объявит статическую переменную с данными, необходимыми для поставщика. Затем можно создать дескриптор, взяв адрес этой переменной. TRACELOGGING_DEFINE_PROVIDER_STORAGE(storageVar, ...) Вызов может рассматриваться как похожий на код, например:

static TraceLoggingProviderState storageVar = { ... };

Пример использования:

TRACELOGGING_DEFINE_PROVIDER_STORAGE( // defines static storageVar
    storageVar, // Name of the storage variable
    "MyCompany.MyComponent", // Human-readable name for the provider
    // {ce5fa4ea-ab00-5402-8b76-9f76ac858fb5}
    (0xce5fa4ea,0xab00,0x5402,0x8b,0x76,0x9f,0x76,0xac,0x85,0x8f,0xb5));

const TraceLoggingHProvider g_hMyProvider = &storageVar; // Make a handle

Требования

Требование Значение
Минимальная версия клиента Windows Vista [классические приложения | Приложения UWP]
Минимальная версия сервера Windows Server 2008 [классические приложения | Приложения UWP]
Целевая платформа Windows
Header traceloggingprovider.h

См. также раздел

TRACELOGGING_DECLARE_PROVIDER

TRACELOGGING_DEFINE_PROVIDER

TraceLoggingWrite