I would like to create an application that monitors and displays the frequencies of each core in a system's processor to a user, in MHz. I have seen other applications do this, such as Piriform's Speccy, so I know that it must be possible.
I have tried searching for a solution on Stack Overflow but I could not find it. Even this question, which was the closest match I could find speaks to an anti-cheating implementation in C++ and does not offer an actual solution but has one important takeaway that this article describes: "With power management technologies becoming more commonplace in today's computers, a commonly-used method to obtain high-resolution CPU timings, the RDTSC instruction, may no longer work as expected." There goes that idea.
The closest thing I've seen is that the management object has a MaxClockSpeed, but that answers to the speed of the processor, not of the processor's individual cores.
There is also the CPUID System Information Monitoring Kit, but that's a development kit which costs money that I don't have.
So...back to the question at hand now, how can I programmatically get a current snapshot of a core's clock speed? There must be a way.
P.S. With turbo boost and other technologies, core speeds are variable. That is why I want to get this information as a current time snapshot. For monitoring purposes, such an application would be helpful to an end-user in order to facilitate them with detecting whether or not their system is configured properly, working correctly, and would allow them to monitor their system and see what performance is like under load, etc. Also, there is no harm in knowing how to get this data.