Rationale this belongs on ServerFault rather than StackOverflow - I already have my program which gets the value, I am querying the value returned and what it means.
I have an in-house program which audits our company PCs, and one of the things it checks is the speed of the processor. To do this, it queries the Win32_Processor WMI class and gets the value of CurrentClockSpeed.
We were playing with the data today and found an anomaly with some of the speeds being reported incorrectly (for example, CurrentClockSpeed said 1.0GHz, whereas the CPU name said Intel(R) Core(TM)2 CPU T5600 @ 1.83GHz [Confirmed it is in fact 1.83GHz]). I did a bit of digging on the internet and found this blog post which might explain what is going on.
My initial thought was that I could change the program to instead get the value for MaxClockSpeed instead of CurrentClockSpeed, but Microsoft's documentation doesn't clearly define what this will return. What I mean by that is will this return a value which is its actual maximum speed (say if it were overclocked) but which it would not normally be running at, or would it return what I expect, which is its maximum speed under normal (not overclocked) conditions?
Processors these days are fairly intelligent about what's required from them, especially in laptops. Just because a processor is 1.83Ghz, it might decide to save power (and heat) by running at a lower clock speed if the extra power is not required.
You can see this difference by going to your Windows Task manager. It's clearer in Vista and Windows 7, but the facts are still there in XP. You will see that your processor speed is listed twice. When my machine is running at full power, it says:
Intel(R) Core(TM)2 Duo CPU T7500 @ 2.20GHz 2.20GHz
However, when my battery gets low, it reads:
Intel(R) Core(TM)2 Duo CPU T7500 @ 2.20GHz 1.80GHz
So basically, that artical you linked to is correct. I would expect that
MaxClockSpeed
will always return the same value (in my case, 2.20GHz, because that's what's reported by the BIOS).In regards to overclocking, an overclocked CPU's BIOS will return its theoretical maximum speed, so if you overclock a 2.0GHz to 2.4GHz, then it will report 2.4GHz.