Разделы справки использовать WPP в статических библиотеках?
Трассировку WPP можно использовать в статической библиотеке таким образом, чтобы обеспечить отдельный контроль над трассировкой статической библиотеки (.lib) и двоичной (.exe, .dll или .sys), которая ее использует.
Двоичный файл и библиотека имеют собственный GUID элемента управления. Это позволяет включить трассировку в статической библиотеке, двоичном файле или и в том, и
Доступ к LIB-файлу можно получить с помощью WPP в нескольких точках, как показано в следующем примере кода. Имейте в виду, что не важно определять фактическое значение GUID элемента управления, так как статическая библиотека не вызывает макрос WPP_INIT_TRACING, который выполняет фактическую регистрацию с помощью трассировки событий Windows.
#define WPP_CONTROL_GUIDS \
WPP_DEFINE_CONTROL_GUID(mylib,(0,0,0,0,0), \
WPP_DEFINE_BIT(Error) \
WPP_DEFINE_BIT(Unusual) \
WPP_DEFINE_BIT(Noise) \
)
Файлы .dll, .exe и .sys, которые используют библиотеку, должны вызывать WPP_INIT_TRACING, которая регистрирует поставщик в WPP. Двоичный файл, вызывающий макрос WPP_INIT_TRACING, должен иметь копию GUID элементов управления WPP, полученных макросом WPP_CONTROL_GUID. Копии значений флагов необходимы только в том случае, если флаги, определенные в статической библиотеке, планируется также использовать в двоичном файле.
В следующем примере кода сначала объявляется GUID элемента управления статической библиотеки, а флаги GUID элемента управления соответствуют флагам, определенным в библиотеке:
#define WPP_CONTROL_GUIDS \
WPP_DEFINE_CONTROL_GUID(SharedStaticLibs,(81b20feb,73a8,4b62,95bc,354477c97a6f), \
WPP_DEFINE_BIT(Error) \
WPP_DEFINE_BIT(Unusual) \
WPP_DEFINE_BIT(Noise) \
) \
WPP_DEFINE_CONTROL_GUID(AppSpecificFlags,(81b20fec,73a8,4b62,95bc,354477c97a6f), \
WPP_DEFINE_BIT(EntryExit) \
WPP_DEFINE_BIT(Initialization) \
WPP_DEFINE_BIT(MemoryAllocations) \
)
Вы можете выбрать степень управления, необходимую для трассировки компонента и статической библиотеки, указав отдельный GUID элемента управления для файлов LIB и .exe, каждый из которых имеет собственные флаги, или один GUID элемента управления для обоих файлов. В примере файл .exe использует те же флаги, что и LIB-файл.