

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ビットで取得する方法を教えていただけないでしょうか?
よろしくお願いします
No.1ベストアンサー
- 回答日時:
秒数を求めるならQueryPerformanceFrequency で取得できる1秒当たりの周波数で割ってください
なおVista以降はGetTickCount64が使えます
No.2
- 回答日時:
QueryPerformanceCounterで返すのはパフォーマンスカウンタのカウント値です。
QueryPerformanceFrequencyと組み合わせないと処理時間は分かりません。
//////////////////////////////////////
LARGE_INTEGER Freq={0}, Begin={0}, End={0};
DWORD pastmsec = 0;
QueryPerformanceFrequency(&Freq);
QueryPerformanceCounter(&Begin);
//処理時間計りたい処理
QueryPerformanceCounter(&End);
pastmsec= (End- Begin) * 1000 / Freq;
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「FindWindow」、ウィンドウハ...
-
AppActivateについて
-
VB6.0からエクセルを起動
-
H8マイコンで、ファームウェア...
-
VBで別のプログラムを起動し他...
-
mscomm32.ocxの登録方法
-
exeファイルを実行するとすぐに...
-
Windows上のプログラム。「予め...
-
VBで実行中のEXEファイルの情報...
-
意味不明の実行時エラーで困っ...
-
Windows PowerShellでC言語を実...
-
[VB.net] ExcelへのQRコード出...
-
Designer.vbは直接コードをいじ...
-
vba 時間の引き算 例えば 15:00...
-
ACCESSで設定した帳票の用紙サ...
-
excel vbaから実行するexe実行...
-
印刷ダイアログを表示させない方法
-
VBAで印刷スプール終了の判定を...
-
IT初心者です 仕事で、vb.netで...
-
C++初心者です。 debug asserti...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAでOutlookを終了させたい Ex...
-
VBSで起動したアプリが前面表示...
-
VBSから別のVBS起動するとき変...
-
アウトルックが起動しているか...
-
Process.Startで起動したアプリ...
-
Windows上のプログラム。「予め...
-
VBで実行中のEXEファイルの情報...
-
exeファイルを実行するとすぐに...
-
ACCESS VBAで別のACCESS(mdb)を...
-
WinSCPで画像のように puttyを...
-
VBAでSeleniumからChromeを起動...
-
フォームの最前面が効かない
-
VB6で呼び出し元の情報を取得す...
-
同じIEのウィンドウで、リンク...
-
gccプログラムで複数の実行ファ...
-
アプリからVB(Form)
-
VBSでExcelのUserFormをエクス...
-
VBからExcelに書き込む方法
-
Notepad起動のイベントでEXC...
-
C# 他のアプリケーションを優先...
おすすめ情報