How can we get the CPU information from driver code?

If a WDF/NDIS driver needs to know the processor information such as CPU Family/Model/Stepping, how one can query this from driver code?
In WinDbg there is a command !cpuinfo to get these data, trying to get same info from driver.

That’s all available from the __cpuid intrinsic function, which executes the cpuid instruction directly.

However, why on earth would a driver ever need to care about such things?

@Tim_Roberts said:
That’s all available from the __cpuid intrinsic function, which executes the cpuid instruction directly.

Hey Tim, thanks for the help, I can call __cpuid directly from the driver to get the required info.

However, why on earth would a driver ever need to care about such things?
Perhaps, if a driver wants to implement CPU-specific features.

Note that it is very unusual for a driver to contain CPU specific code sequences. Most drivers move data around rather that doing anything to it, and most CPU SKU specific instructions are for things like matrix multiplication or encryption - things that you do to the data to make new or transformed data. Usually that’s done in UM before the driver gets the data, or by hardware after the driver has handled the data

CPUID isn’t a software command. It’s a low level CPU instruction. You can’t query it yourself unless you learn assembly language, but there’s plenty of software available that will do it for you.

You can’t query it yourself unless you learn assembly language, …

Nonsense. As I pointed out, there is a “__cpuid()” intrinsic function in Visual C++ that does this.

look up the documented compiler intrinsic __cpuid

IMHO you still don’t want to use it, but not because it is hard to use