Relevance: Is Processor 64 bit Capable

Is there a way to query the CPU to determine if it is 64 bit capable?

Yes. See: http://en.wikipedia.org/wiki/CPUID#EAX.3D80000001h:_Extended_Processor_Info_and_Feature_Bits

bit 29 of extended feature mask of main processor
1 Like

There are a few ways to do this: http://bigfix.me/relevance/details/2997079

Also, I prefer to do it plurally against all processors like this:

bits 29 of unique values of extended feature masks of processors

Related:

http://bigfix.me/analysis/details/2994563
http://bigfix.me/relevance/details/2997089
http://bigfix.me/analysis/details/2994710
http://bigfix.me/analysis/details/2994751

1 Like

Thanks! You guys are amazing.

We have found that querying WMI looking at the different properties like Architecture or DataWidth for example works OK for a 32bit OS on 64bit hardware if the OS is Windows 7, but not if it is WinXP or Server 2003, it still returns 32bit even though the CPU is 64bit. This makes the bit 29 of extended feature masks a more reliable method in our mixed environment. Thanks for sharing. Here are some examples:

/* Win7x86 on x64 cpu, WMI returns x64, bit 29 = true */
q: (name of it, x64 of it) of operating system
A: Win7, False
q: string value of select "Name from Win32_Processor " of wmi
A: Intel(R) Core(TM) i3-4160 CPU @ 3.60GHz
q: integer value of select "Architecture from Win32_Processor " of wmi
A: 9
q: integer value of select "DataWidth from Win32_Processor " of wmi
A: 64
q: bit 29 of extended feature mask of main processor
A: True

/* WinXPx86 on x64 cpu, WMI returns x86, bit 29 = true */
q: (name of it, x64 of it) of operating system
A: WinXP, False
q: string value of select "Name from Win32_Processor " of wmi
A: Intel(R) Core(TM) i3-4160 CPU @ 3.60GHz
q: integer value of select "Architecture from Win32_Processor " of wmi
A: 0
q: integer value of select "DataWidth from Win32_Processor " of wmi
A: 32
q: bit 29 of extended feature mask of main processor
A: True

/* Win2003x86 on x64 cpu, WMI returns x86, bit 29 = true */
q: (name of it, x64 of it) of operating system
A: Win2003, False
q: string value of select "Name from Win32_Processor " of wmi
A: Intel(R) Xeon(R) CPU           X5650  @ 2.67GHz
q: integer value of select "Architecture from Win32_Processor " of wmi
A: 0
q: integer value of select "DataWidth from Win32_Processor " of wmi
A: 32
q: bit 29 of extended feature mask of main processor
A: True

/* Win2003x64 on x64 cpu, WMI returns x64, bit 29 = true */
q: (name of it, x64 of it) of operating system
A: Win2003, True
q: string value of select "Name from Win32_Processor " of wmi
A: Intel(R) Xeon(R) CPU           X5650  @ 2.67GHz
q: integer value of select "Architecture from Win32_Processor " of wmi
A: 9
q: integer value of select "DataWidth from Win32_Processor " of wmi
A: 64
q: bit 29 of extended feature mask of main processor
A: True

/* WinXPx86 on x86 cpu, WMI returns x86, bit 29 = false */
q: (name of it, x64 of it) of operating system
A: Win2003, False
q: string value of select "Name from Win32_Processor " of wmi
A: Intel(R) Xeon(TM) MP CPU 2.50GHz
q: integer value of select "Architecture from Win32_Processor " of wmi
A: 0
q: integer value of select "DataWidth from Win32_Processor " of wmi
A: 32
q: bit 29 of extended feature mask of main processor
A: False
1 Like

I agree, the extended feature mask should work best because it is reading the physical properties of the CPU itself.

bits 29 of unique values of extended feature masks of processors

This is similar:

(x64 of operating system) whose(it) | exists it whose(it) of bits 29 of unique values of extended feature masks of processors
1 Like