2011-12-14 3 views
1

Wireshark(ハードウェアにかなり近いと思われます)からネットワークパケットが移動するのにかかる時間を判断するために、コール:: QueryPerformanceCounter。私は到着するパケットのWiresharkのタイムスタンプをキャプチャしていますが、:: QueryPerformanceCounterによって返される値と比較する方法はわかりません。Wiresharkのタイムスタンプと:: QueryPerformanceCounterの戻り値を関連付けます

+0

パフォーマンスカウンタは、増加するカウンタであり、タイムスタンプに接続することはできません。 –

+0

これはおそらく当てはまりますが、WinPcap(Wiresharkの基礎となるライブラリ)はQueryPerformanceCounterを使用してタイムスタンプを決定するため、QPCの結果と別の値を組み合わせて比較する方法が必要です。 – endian

+1

おそらく、WinPcapのソースコードを見て、タイムスタンプを取得するのが正確なことを確認し、同じことをすることができますか? – NPE

答えて

0

QueryPerformanceFrequencyを呼び出して、1秒あたりのカウント数を取得できます。これは、Wiresharkがパケットを受信したときとWiresharkがコードに到達したときの2つのカウントの読み取り値がある場合、それらを減算してカウントを取得し、その周波数を使用して時間を取得できることを意味します。しかし、カウンターの生の価値には意味がありません。それは、そのカウンターの別の読み取り値と比較すると意味があります。

+0

CPUクロック周波数が変化する可能性があるため、長期間使用することは信頼できません。 – Abyx

+0

ありがとうございます。私はQueryPerformanceCounterのWireshark/WinPcapの値にアクセスすることはできないと思います。出力されるように見えるタイムスタンプは、1970年以降の秒数で、その後にQueryPerformanceCounterの差を使って計算された1秒未満の値が続きます。私は自分のコードで同じ値を計算できるかどうかを考えなければならないでしょう。 – endian

関連する問題