Windows 10上的GetTickCount值

Gur*_*rra 2 c++ windows winapi windows-10

我试图在Windows API中使用GetTickCount()来获得系统正常运行时间.我想知道系统运行了多长时间.

然而,GetTickCount的回报非常高.此代码为我提供超过500小时的正常运行时间.

这适用于GetTickCount64().

为什么这个价值如此之高?

DWORD time_ms = GetTickCount();
DWORD seconds = (time_ms / 1000) % 60;
DWORD minutes = time_ms /(1000*60) % 60;
DWORD hours = time_ms / (1000*60*60);
stringstream ss;
ss << "Hours: ";
ss << hours;
ss << " Minutes: ";
ss << minutes;
ss << " seconds: ";
ss << seconds;
MessageBoxA(0, ss.str().c_str(), "Uptime", 0);
Run Code Online (Sandbox Code Playgroud)

当我运行该程序时,我可以看到它正在正常进行,但无法理解我将如何获得桌面的总运行时间.

谢谢

编辑:我在CMD中用"systeminfo"检查了正常运行时间,发现"系统启动时间"实际上是大约〜500小时前.所以我关闭计算机并拔掉电源,启动但仍然,系统启动时间具有这么高的值.但是,重新启动计算机使其重置,现在我的代码工作.

编辑2: 这个博客https://blogs.msdn.microsoft.com/oldnewthing/20141113-00/?p=43623声明GetTickCount应该用于测量时间间隔,而不是我想要实现的时间间隔.好像我必须看一下注册表.

编辑3:

在注册表中找到正确的计数器后,它具有相同的值具有GetTickCount和类似的功能.似乎在Windows中关闭会使其处于某种程度的休眠状态.我没有找到任何解决方案.

Jon*_*ter 5

该文档GetTickCount描述了使系统正常运行的正确方法:

要获取自计算机启动以来经过的时间,请在注册表项HKEY_PERFORMANCE_DATA中的性能数据中检索"系统运行时间"计数器.返回的值是一个8字节的值.有关更多信息,请参阅性能计数器