Поставщик ETW на основе манифеста — расположение файлов декодирования

Я пытаюсь добавить трассировку ETW в DLL (написанную на C++), которую я создал. Я использую метод на основе манифеста.

Трассировка работает, но, похоже, мне нужно установить «Расположение файлов декодирования» в манифесте на абсолютный путь перед созданием DLL.

Однако DLL может быть развернута где угодно, поэтому путь декодирования зависит от установки пользователя.

Есть ли способ обойти это вообще?

Спасибо.


person jamesd    schedule 27.03.2016    source источник
comment
Можете ли вы добавить ссылки и ссылки, где это уместно (например, метод на основе манифеста, документацию по расшифровке местоположений файлов).   -  person IInspectable    schedule 29.03.2016
comment
@IInspectable он ссылается на эту запись в манифесте: ‹provider guid={538cbbad-4877-4eb2-b26e-7caee8f0f8cb} message=$(string.ProviderName) messageFileName=%SystemRoot%\system32\fdphost.dll name= Microsoft-Windows-FunctionDiscoveryHost для messageFileName требуется фиксированное расположение.   -  person magicandre1981    schedule 29.03.2016


Ответы (1)


При установке провайдера обязательно установите переключатели /resourceFilePath и /messageFilePath на путь к вашей DLL. Это переопределит расположение файлов декодирования, указанное в манифесте, с которым была создана библиотека DLL.

e.g.:

wevtutil.exe /resourceFilePath:path_to_DLL /messageFilePath:path_to_DLL im path_to_manifest
person emersond    schedule 29.03.2016
comment
Обратите внимание, что этот метод работает только с Windows 7 или выше. - person jamesd; 30.03.2016