Свържете времевия печат на Wireshark с върнатата стойност на ::QueryPerformanceCounter

Опитвам се да определя колко време отнема мрежовият пакет да пътува от Wireshark (който предполагам, че е доста близо до хардуера) до точката в моя код, в която извиквам ::QueryPerformanceCounter. Захващам в Wireshark неговото времево клеймо за пристигането на пакета, но не знам как да го сравня със стойността, върната от ::QueryPerformanceCounter.


person endian    schedule 14.12.2011    source източник
comment
Броячите на производителност са само непрекъснато нарастващ брояч и не могат да бъдат свързани с времеви печат.   -  person Some programmer dude    schedule 14.12.2011
comment
Това може би е вярно, но WinPcap (библиотеката, която е в основата на Wireshark) използва QueryPerformanceCounter, за да определи своите времеви отпечатъци, така че трябва да има начин да комбинирате резултата от QPC с друга стойност за сравнение.   -  person endian    schedule 14.12.2011
comment
Може би бихте могли да погледнете изходния код на WinPcap, за да видите какво точно прави, за да получи клеймото за време и да направите същото?   -  person NPE    schedule 14.12.2011


Отговори (1)


Можете да извикате QueryPerformanceFrequency, за да получите броя на отброяванията в секунда. Това означава, че ако имате две отчитания на броя, едно, когато Wireshark получи пакета, и второ, когато пакетът достигне вашия код, можете да ги извадите, за да получите брой преброявания, и след това да използвате честотата, за да получите времева продължителност. Обаче необработената стойност на брояча няма значение - тя има значение само когато се сравнява с друго отчитане на този брояч.

person Puppy    schedule 14.12.2011
comment
Тактовата честота на процесора може да се промени, така че не е надеждно да се използва за дълъг период от време. - person Abyx; 14.12.2011
comment
Благодаря. Не мисля, че мога да получа достъп до стойността на Wireshark/WinPcap за QueryPerformanceCounter. Времевият печат, който изглежда показва, е броят секунди от 1970 г., последван от стойност под секунда, изчислена чрез разлика в QueryPerformanceCounter. Ще трябва да помисля дали мога да изчисля същата стойност в моя код. - person endian; 14.12.2011