Windows System Software -- Consulting, Training, Development -- Unique Expertise, Guaranteed Results
The free OSR Learning Library has more than 50 articles on a wide variety of topics about writing and debugging device drivers and Minifilters. From introductory level to advanced. All the articles have been recently reviewed and updated, and are written using the clear and definitive style you've come to expect from OSR over the years.
Check out The OSR Learning Library at: https://www.osr.com/osr-learning-library/
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.
Upcoming OSR Seminars | ||
---|---|---|
OSR has suspended in-person seminars due to the Covid-19 outbreak. But, don't miss your training! Attend via the internet instead! | ||
Kernel Debugging | 30 January 2023 | Live, Online |
Developing Minifilters | 20 March 2023 | Live, Online |
Internals & Software Drivers | 17 April 2023 | Live, Online |
Writing WDF Drivers | 22 May 2023 | Live, Online |
Comments
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, [email protected]
Providenza & Boekelheide, Inc.
Hey Tim, thanks for the help, I can call
__cpuid
directly from the driver to get the required info.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.
Nonsense. As I pointed out, there is a "__cpuid()" intrinsic function in Visual C++ that does this.
Tim Roberts, [email protected]
Providenza & Boekelheide, Inc.
look up the documented compiler intrinsic __cpuid
IMHO you still don't want to use it, but not because it is hard to use