Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/135.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ win32 api函数获取处理器';当前速度_C++_Winapi_Visual C++ - Fatal编程技术网

C++ win32 api函数获取处理器';当前速度

C++ win32 api函数获取处理器';当前速度,c++,winapi,visual-c++,C++,Winapi,Visual C++,我不知道用于查询本地PC处理器当前速度的win32 api函数。我不希望使用WMI,因为它似乎不太可能在所有PC上都可行。一个简单的谷歌搜索让我想到了,它似乎有两种不同的方法来完成您所寻找的任务。您可以(通常)使用该功能获得处理器的速度。我之所以说“通常”,是因为这个函数返回系统的性能计时器组件的频率,但实际上所有当前可用的CPU都以与性能计时器组件相同的频率运行 此函数从Windows 2000开始提供,因此很有可能在今天的大多数PC上都支持此函数。您可以使用参数ProcessorInform

我不知道用于查询本地PC处理器当前速度的win32 api函数。我不希望使用WMI,因为它似乎不太可能在所有PC上都可行。

一个简单的谷歌搜索让我想到了,它似乎有两种不同的方法来完成您所寻找的任务。

您可以(通常)使用该功能获得处理器的速度。我之所以说“通常”,是因为这个函数返回系统的性能计时器组件的频率,但实际上所有当前可用的CPU都以与性能计时器组件相同的频率运行


此函数从Windows 2000开始提供,因此很有可能在今天的大多数PC上都支持此函数。

您可以使用参数ProcessorInformation调用Windows API函数。它返回一个结构,告诉您每个系统CPU的当前和最大CPU速度


这仅在Win32 desktop上受支持,但在Metro或Windows Phone上不受支持。

Hi Sesame!这个问题有点模糊,但希望有人能帮上忙。你的目标是什么版本的windows?WMI的可用性仅取决于正在使用的Windows版本,我认为…没有API函数可以做到这一点。即使WMI也可能给出不准确的处理器时钟速度值。据我所知,获得时钟速度的最佳程序是CPUz。这里有一个链接,示例使用Perl-CPU速度随当前工作负载快速变化,每秒可能会发生多次变化:您希望这种监视的分辨率是什么?是什么让你认为WMI在某些PC上不起作用?这两种方法都会给出不准确的时钟速度。原因是它们都(in)直接使用处理器中的
rdtsc
指令,该指令给出“伪”周期而不是“实际”周期。QueryPerformanceCounter实现是否通常基于rdtsc?第二种方法似乎相当冗余……“几乎所有当前可用的CPU都以与性能计时器组件相同的频率运行。”声明:“在许多情况下,QueryPerformanceFrequency返回TSC频率除以1024;在Hyper-V上,当来宾虚拟机在实现虚拟机监控程序版本1.0接口的虚拟机监控程序下运行时,性能计数器频率始终为10 MHz。“似乎“除以1024”的情况对我的系统尤其适用。因此这似乎不太可靠:(