C: \ полный \ путь \ к \ yourprogram.exe

аюсь добавить счетчики производительности и пользовательские события в часть программного обеспечения, чтобы просматривать их с помощью программ Windows Performance Toolkit, таких как XPerf и GPUView. Я воздерживаюсь, используя все свои силы сдержанности, от участия в катарсической болтовне относительно состояния документации для программного обеспечения и времени, которое я сейчас потратил впустую, пытаясь дразнить подсказки из Интернета. Я собираюсь описать, как я попал туда, где я сейчас, на случай, если это пригодится другим потерянным душам.

До сих пор я понял, что должен написать манифест событий для моих счетчиков производительности и событий. Вы можете сделать это вручную или с помощью инструмента под названием «ecmangen.exe». Документация к этой программе дает хорошее пошаговое руководство для манифестов создания событий, но не объясняет, как интегрировать их с вашим кодом.

Следующим шагом, насколько я могу понять, является использование двух загадочных приложений командной строки.MC.exe' а также 'CTRPP.exe». Похоже, что они генерируют заголовки C или C #, исходные файлы и файлы ресурсов для добавления инструментария событий и счетчиков в ваш код соответственно. Затем вы должны создать свой код (посмотрите примеры в 'C: \ Program Files \ Microsoft SDKs \ Windows \ v7.1 \ Samples \ winbase \ Eventing'), а затем мы дойдем до того места, где я застрял: правильное использование следующего загадочного инструмента »wevtutil.exe'

Этому инструменту нужны две вещи: двоичный файл (exe или DLL), который вы скомпилировали с этими ресурсами в нем, и файл манифеста, который вы использовали для генерации этих ресурсов. Проблема в том, что этоочень придирчиво к тому, где находится бинарный файл, и я не смог определить форму этой придирчивости. Заклинания и жертвоприношения козлов не дали результатов.

Если у меня есть путь, определенный в поле «resourceFileName» тега «provider» в файле манифеста, например «c: \ MYDIR \ TEd.exe», то это нормально. Однако, если я помещаю один и тот же exe-файл в другую папку (ошибкой был C: \ tw \ TEd.exe), он жалуется.

Сообщение об ошибке'Предупреждение: ресурсы Publisher TEd-Event-Provider недоступны.' но больше никаких объяснений относительно того, почему или где он пытался посмотреть.

Итак, я собираюсь добавить инструментарий неправильным образом, уже есть руководство, которое объясняет все ошибки и какова природа странной избирательности wevtutil.exe по отношению к именам каталогов.

Заранее спасибо,

Тим.

Ответы на вопрос(3)

Решение Вопроса

решить, прежде чем получил мозговую волну и прочитал сообщение об ошибке ;-).

Решением моей проблемы было просто добавить файл .rc в мой проект, а затем пересобрать. Оглядываясь назад, это довольно очевидно, но на какое-то время меня это озадачило.

Надеюсь это поможет.

Правка - 4 февраля. Хорошо, не уверен, что знаю, в чем ваша проблема, но следующий пакетный скрипт - это то, как я все это сделал. Удачи.

rem -------------------------------------------------------------------
rem Do all of this from the project directory

rem -------------------------------------------------------------------
rem Generate Header and Resource - remove the ReadOnly attrib to "help" it along
attrib -r MyModuleTracing.h
mc.exe -um MyModuleTracing.xml
rem This generates MyModuleTracing.h and MyModuleTracing.rc, add both to your project

rem -------------------------------------------------------------------
rem ** Now build the project **
rem -------------------------------------------------------------------

rem Register MyModule Tracing with the system
if exist MyModuleTracing.xml (
  wevtutil um MyModuleTracing.xml

  copy MyModuleTracing.xml Release
  cd Release
  copy MyModule.dll %SystemRoot%\System32
  wevtutil im MyModuleTracing.xml
)

rem -------------------------------------------------------------------
rem Do a capture, and also export the results to an XML file.
xperf -start MyModuleSession -on [REPLACE_WITH_YOUR_GUID] -f MyModuleSession.etl
xperf -on base -f Kernel.etl

rem Run the app, wait until exit, and then stop the capture
start /wait MyModule.exe

xperf -stop
xperf -stop MyModuleSession
xperf -merge MyModuleSession.etl Kernel.etl MyModuleSessionMerged.etl

tracerpt MyModuleSessionMerged.etl -o MyModuleSessionMerged.xml -of XML
 Luther01 февр. 2011 г., 21:39
Спасибо Рич, я попробую это завтра.
 Luther03 февр. 2011 г., 15:50
Ах, до сих пор нет кости. Я уже добавлял файлы .rc, по крайней мере, два с именами «XXXXX_manifest.rc» и «XXXXX_profile_events.rc».
 Luther03 февр. 2011 г., 15:50
Меня озадачивает тот факт, что он работает, если выходной каталог находится в одном месте, а не в другом.
 RichS03 февр. 2011 г., 10:04
Теперь у меня все работает, так что если вы все еще не можете работать, дайте мне знать, и я опишу, что я сделал.

существует ограничение длины каталога для wevtutil. Когда я установил файл из каталога с более коротким путем, он работал.

если кто-то еще сталкивается с этим, вы можете получить вещи, работающие из произвольного каталога:

Добавьте USER Read & Execute privs в каталог, содержащий ваш проект или выше:

icacls ProjectDir /grant BUILTIN\Users:(OI)(CI)(RX)

Тогда установка манифеста должна работать без ошибок:

,

wevtutil im yourmanifest.man /rf:C: \ полный \ путь \ к \ yourprogram.exe /mf:C: \ полный \ путь \ к \ yourprogram.exe

Ваш ответ на вопрос