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で質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C言語 3 2022/11/09 13:27
- C言語・C++・C# win10で、正確な待ち時間の作り方 6 2023/02/14 18:28
- その他(プログラミング・Web制作) Windows上のプログラム。「予め決められた時刻に自分で起動して処理して自分で終了する」って可能? 3 2023/01/04 14:29
- Windows Vista・XP windows xp proが起動しなくなりました 10 2022/05/20 00:49
- C言語・C++・C# Cのdoubleの浮動小数点表示について 3 2023/04/17 13:14
- C言語・C++・C# C言語初心者 構造体 課題について 2 2023/03/10 19:48
- C言語・C++・C# プログラミング c言語 4 2023/03/07 01:05
- C言語・C++・C# バイナリファイルをコピーするのにかかる時間を測りたいのですが実行するとFatel error:gli 2 2022/11/03 01:10
- C言語・C++・C# C言語 3 2022/10/04 15:07
- その他(ソフトウェア) F-BASICで計算中の実行が中途で勝手に止まり、大変困っています。 2 2023/03/02 16:15
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
アウトルックが起動しているか...
-
Windows上のプログラム。「予め...
-
VBSから別のVBS起動するとき変...
-
ASPでPMT関数が使いたい...
-
VBで実行中のEXEファイルの情報...
-
WinSCPで画像のように puttyを...
-
リムーバブルディスクのフォー...
-
MSDOS(バッチファイル)でプロセ...
-
ウィンドウを終了させたい・・・
-
別アプリの起動、終了について
-
VB6で呼び出し元の情報を取得す...
-
VBで別のプログラムを起動し他...
-
エクセル起動時別プロセスで開く
-
VBSで起動したアプリが前面表示...
-
VBAでSeleniumからChromeを起動...
-
「FindWindow」、ウィンドウハ...
-
HTMLタグの中にDLLを埋め込む事...
-
mscomm32.ocxの登録方法
-
フォームの最前面が効かない
-
ACCESS VBAで別のACCESS(mdb)を...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
アウトルックが起動しているか...
-
VBAでOutlookを終了させたい Ex...
-
VBSから別のVBS起動するとき変...
-
Windows上のプログラム。「予め...
-
VBSで起動したアプリが前面表示...
-
VBで実行中のEXEファイルの情報...
-
キー操作 (WSH:コピー&ペー...
-
EXCEL VBAから他アプリケーショ...
-
Process.Startで起動したアプリ...
-
VBAでSeleniumからChromeを起動...
-
64bitで作ったEXEを32bitで起動...
-
ACCESS VBAで別のACCESS(mdb)を...
-
「FindWindow」、ウィンドウハ...
-
VBAでIEが起動しているか...
-
Shellで起動したプログラムのウ...
-
VBSでExcelのUserFormをエクス...
-
Vba アプリケーションが立ち上...
-
exeファイルを実行するとすぐに...
-
フォームの最前面が効かない
-
別アプリの起動、終了について
おすすめ情報