- ベストアンサー
QueryPerformanceCounter の使い方の間違いの指摘をお願いします。
Windowsの起動してからの時間を知りたいのです、QueryPerformanceCounterを使っています。 前は、timeGetTimeを使っていたのですが32ビットで47日以上はオーバーフローになってしまうので上のを使うことにしました。 QueryPerformanceCounterの使い方をいろいろ調べて見よう見まねでやってみたのですが、よく分からずtimeGetTimeのように使ったら訳の分からない値を返してきました。 明らかに、自分が間違っていることは分かるのですが、その致命的な間違いが分かりません。 MSDNより BOOL QueryPerformanceCounter( LARGE_INTEGER *lpPerformanceCount // カウンタの値 ); typedef union _LARGE_INTEGER { struct { DWORD LowPart; DWORD HighPart; }; LONGLONG QuadPart; } LARGE_INTEGER, *PLARGE_INTEGER; この時点でいまいちよく分からなかったのですが、使う部分は64ビットなので「QuadPart」だろうと思いました。 LONGLONG型・・・。 理解せずにプログラムを以下のように組みました。 私の理解では、QueryPerformanceCounterはWindowsが起動してからの時間を返してくれるものだと思っています。 #include <stdio.h> #include <windows.h> int main() { LARGE_INTEGER i64; LONGLONG count; QueryPerformanceCounter(&i64); count = i64.QuadPart; printf("LONGLONG=%lld\n" , count); return 0; } 実行結果 LONGLONG=3670653187373 続行するには何かキーを押してください . . . 実際の経過時間 1025500秒 基本がわかってないとは思うのですが、QueryPerformanceCounterが実際に返してる値とWindowsが起動してからの時間を64ビットで取得する方法を教えていただけないでしょうか? よろしくお願いします
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
その他の回答 (1)
- JagdPandar
- ベストアンサー率53% (29/54)
お礼
回答ありがとうございます。 何とかできました。