Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Трассировка событий для Windows (ETW) определяет несколько простых и сложных типов для использования в функциях трассировки. Эти типы объявляются в файле Defaultwpp.ini. Однако вы можете создать собственные пользовательские типы данных.
Вы используете пользовательский тип данных, если вы хотите объявить переменные и использовать значимые термины вместо целых чисел, чтобы описать значение переменных.
Например, переменная DiskState содержит состояние диска. Ниже приведены значения DiskState:
DiskOffline = 0
DiskOnline = 1
DiskFailed = 2
DiskStalled = 3
Вместо того чтобы читать "DiskState=2" в сообщении трассировки и затем искать значение 2, можно определить пользовательский тип DiskState, чтобы получить сообщение трассировки, которое говорит "DiskState имеет значение 'Failed'."
Создание пользовательского типа данных
Чтобы создать пользовательский тип данных, выполните следующие действия.
Создайте локальный файл конфигурации с расширением имени файла .ini, например localwpp.ini. Нельзя добавить пользовательский тип в заголовок или исходный файл.
Используйте константу TYPEMACRO для определения пользовательского типа данных.
Определите данные конфигурации в источниках или файле заголовков.
Добавьте параметр -ini в макрос RUN_WPP в исходном файле.
Используйте пользовательский тип данных в сообщениях трассировки.
Определение константы TYPEMACRO
Определите константу TYPEMACRO, которая имеет следующий формат. Значения определяются как список строк.
TYPEMACRO(Type,{ItemListLong | ItemListShort | ItemListByteShort | ItemListByteLong},(Value1,Value2...));
где:
ItemListShort
Подписанное 16-разрядное целое число.
ItemListLong
Подписанное или неподписанное 32-разрядное целое число.
ItemSetByteShort
Подписанное 16-разрядное значение.
ItemSetByteLong
Подписанное или неподписанное 32-разрядное значение.
Рассмотрим пример.
TYPEMACRO(DiskState,ItemListLong(DiskOffline,DiskOnline,DiskFailed,DiskStalled));
Определение данных конфигурации
Если вы добавили пользовательский тип данных в файл, содержащий иной код, например исходный файл или файл заголовка, используйте инструкции begin_wpp config и end_wpp для идентификации данных конфигурации в файле. Рассмотрим пример.
// begin_wpp config
//TYPEMACRO(DiskState,ItemListLong(DiskOffline,DiskOnline,DiskFailed,DiskStalled));
// end_wpp
Если вы добавили пользовательский тип данных в локальный файл конфигурации, то инструкции конфигурации begin_wpp и end_wpp не требуются.
Добавление параметра -ini
При создании локального файла конфигурации для пользовательского типа необходимо добавить параметр -ini в инструкцию RUN_WPP, которая вызывает препроцессор WPP.
Параметр -ini направляет ETW искать данные конфигурации в конфигурационных файлах (.ini), помимо использования Defaultwpp.ini. Рассмотрим пример.
RUN_WPP -km -ini:localwpp.ini
Это важно
Параметр -km не должен указываться в директиве RUN_WPP для приложений в пользовательском режиме или библиотек динамического канала (DLL).
Использование пользовательского типа данных
После определения пользовательского типа данных его можно использовать в сообщениях трассировки. Поставьте перед именем типа знак процента (%) и обрамите его восклицательными знаками (!). Рассмотрим пример.
DoTraceMessage(INFO,"Disk State is %!diskstate!",DiskState);
Полученное сообщение трассировки использует константу, определенную для представления значения:
DiskState is Offline.