Windows System Software -- Consulting, Training, Development -- Unique Expertise, Guaranteed Results

Home NTDEV

Before Posting...

Please check out the Community Guidelines in the Announcements and Administration Category.

More Info on Driver Writing and Debugging


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/


How can we get the CPU information from driver code?

nish_antnish_ant Member Posts: 5

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.

Comments

  • Tim_RobertsTim_Roberts Member - All Emails Posts: 14,488

    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.

  • nish_antnish_ant Member Posts: 5
    edited March 14

    @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.

  • MBond2MBond2 Member Posts: 536

    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

  • kyah0523kyah0523 Member Posts: 1

    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.

  • Tim_RobertsTim_Roberts Member - All Emails Posts: 14,488

    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.

    Tim Roberts, [email protected]
    Providenza & Boekelheide, Inc.

  • MBond2MBond2 Member Posts: 536

    look up the documented compiler intrinsic __cpuid

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

Sign In or Register to comment.

Howdy, Stranger!

It looks like you're new here. Sign in or register to get started.

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