Как правильно определить настраиваемые поля отметок времени события в ETW, которые будут использоваться в качестве StartTime и EndTime для графика gannt в WPA?
Я заинтересован в том, чтобы пользовательские события ETW отображали время начала и время окончания, как это делают некоторые события окон по умолчанию, чтобы представить их в форме Ганта, например:
Я взломал демо- манифест Брюса Доусона и файлы с несколькими поставщиками, чтобы добавить поля " Время начала" и "Время окончания" в один из шаблонов событий.
Однако я не могу заставить его даже распознавать поле как поле времени.
Я создаю шаблон для полезной нагрузки события, как описано в спецификации Microsoft следующим образом
<data inType="win:FILETIME" outType="xs:dateTime" name="Start Time" />
<data inType="win:FILETIME" outType="xs:dateTime" name="End Time" />
И преобразовать мои переменные QueryPerformanceCounter соответственно:
//start is LARGE_INTEGER
//end is LARGE_INTEGER
FILETIME ftStart;
ftStart.dwLowDateTime = start.LowPart;
ftStart.dwHighDateTime = start.HighPart;
FILETIME ftEnd;
ftEnd.dwLowDateTime = end.LowPart;
ftEnd.dwHighDateTime = end.HighPart;
WPA говорит "Невозможно проанализировать данные" в соответствующих полях:
Тогда я смотрю на документацию Microsoft WPA:
Если график представляет собой диаграмму Ганта, каждый столбец, который вы перемещаете в область графических элементов, должен содержать только значения меток времени. Отметка на одной из горизонтальных полос на диаграмме Ганта представляет одно значение метки времени.
Итак, я смотрю и вижу, что метки времени - это просто LARGE_INT, поэтому я возвращаюсь к исходному формату и пишу манифест следующим образом:
<data inType="win:UInt64" outType="win:ETWTIME" name="Start Time" />
<data inType="win:UInt64" outType="win:ETWTIME" name="End Time" />
Then the data is presented as a large count of nanoseconds instead of time. And I'm unable to select either field as "Start Time" or "End Time".
Что я делаю неправильно?