макрос 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 |