Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Win32_Processor: Name return "Unknown Intel P6 Processor"

32 views
Skip to first unread message

Viktor Veres

unread,
Jul 22, 2002, 11:34:03 AM7/22/02
to
Hi to everybody,

The standard WMI Provider (CIMWin32.DLL) could not properly identify some of
the "new" Pentium 4 processors. The Name property of the
Win32_Class returns just an "Unknown Intel P6 Processor" ("Unbekannter
Intel-Prozessor" on the german version).

Is there a way to properly identify the P4 class processors ? Do I need a
new WMI provider?

I'm using Windows 2000 Professional SP2 on a Fujitsu-SIEMENS Scenic eB PC,
the inventory software is in C++ developed.

Thanks in advance,
Viktor

Torgeir Bakken

unread,
Jul 22, 2002, 12:18:09 PM7/22/02
to
Viktor Veres wrote:

> The standard WMI Provider (CIMWin32.DLL) could not properly identify some of
> the "new" Pentium 4 processors. The Name property of the
> Win32_Class returns just an "Unknown Intel P6 Processor" ("Unbekannter
> Intel-Prozessor" on the german version).

It's not only P4 processors that returns "Unknown Intel P6 processor". I get the
same on my "old" PIII


> Is there a way to properly identify the P4 class processors ? Do I need a
> new WMI provider?

I have found that the only safe way to "find" the name for Intel processors is
to analyze the output from Win32_Processor.Description. From an ongoing thread
in this newsgroup:

From: Torgeir Bakken (Torgeir...@hydro.com)
Subject: Re: how to get win32_processor family value
Newsgroups: microsoft.public.win32.programmer.wmi
Date: 2002-07-20 00:23:02 PST
http://groups.google.com/groups?hl=en&lr=&ie=UTF-8&oe=UTF-8&selm=3D390CDB.5C985D0E%40hydro.com

--
torgeir


Greg Burns

unread,
Jul 23, 2002, 1:41:29 PM7/23/02
to
Torgeir,

I have modified your script slightly (not adversely, or so I think), but I
am having a few issues. I don't expect answers, just any comments you may
have.

The script doesn't seem to be able to identify anything below a Pentium II
correctly. All my Pentium class machines (and 486s which are not checked
for) show up as Unknown. Also we have one AMD Athlon XP 1800 that this
script identifies as a Celeron.

The Pentium 133s and 166s that I've manually inspected return empty strings
for the Family and Model descriptions. Is WMI not able to deal with these
older processors?

Here is the function:

Function WMI_CPUDesc()
Dim oWMI, oCpu, sCpuDescr, aCpuDescr, i, iFamily, iModel, iVersion
Dim sCpuType

Set oWMI = GetObject("winmgmts:")
For Each oCpu in oWMI.InstancesOf("Win32_Processor")
sCpuDescr = oCpu.Description
Next

aCpuDescr = Split(sCpuDescr)
For i = 0 to Ubound(aCpuDescr)
If LCase(aCpuDescr(i)) = "family" Then
iFamily = CInt(aCpuDescr(i+1))
End If
If LCase(aCpuDescr(i)) = "model" Then
iModel = CInt(aCpuDescr(i+1))
End If
Next

iVersion = (iFamily * 100) + iModel

Select Case True
Case iFamily = 5 And iModel < 4
' Pentium
sCpuType = "Pentium"

Case iFamily = 5 And iModel >= 4
' Pentium MMX
sCpuType = "Pentium MMX"

Case iFamily = 6 and iModel <3
' Pentium Pro
sCpuType ="Pentium Pro"

Case iFamily = 6 and iModel >=3 and iModel <5
' Pentium II
sCpuType ="Pentium II"

Case iFamily = 6 and iModel = 5
' Pentium II or Celeron
sCpuType ="Pentium II or Celeron"

Case iFamily = 6 and iModel = 6
' Celeron
sCpuType ="Celeron"

Case iFamily = 6 And iModel >= 7
' Pentium III
sCpuType = "Pentium III"

Case iFamily = 15
' Pentium 4
sCpuType = "Pentium IV"

Case Else
' Unknown CPU
sCpuType = "Unknown"
End Select

WMI_CPUDesc = sCpuType
End Function

Greg


"Torgeir Bakken" <Torgeir.B...@hydro.com> wrote in message
news:3D3C3041...@hydro.com...

Torgeir Bakken

unread,
Jul 23, 2002, 2:08:39 PM7/23/02
to
Greg Burns wrote:

> I have modified your script slightly (not adversely, or so I think), but I
> am having a few issues. I don't expect answers, just any comments you may
> have.
>
> The script doesn't seem to be able to identify anything below a Pentium II
> correctly. All my Pentium class machines (and 486s which are not checked
> for) show up as Unknown. Also we have one AMD Athlon XP 1800 that this
> script identifies as a Celeron.
>
> The Pentium 133s and 166s that I've manually inspected return empty strings
> for the Family and Model descriptions. Is WMI not able to deal with these
> older processors?

Hi

A couple of questions:

1)
What OS are you running for the different machines?

2)
Could you post the output of Cpu.Description for

a) the AMD Athlon XP 1800
b) Pentium 133s and 166s

--
torgeir


Greg Burns

unread,
Jul 23, 2002, 4:34:45 PM7/23/02
to

"Torgeir Bakken" <Torgeir.B...@hydro.com> wrote in message
news:3D3D9BA7...@hydro.com...

1) All our low end machines run either Win95B, Win95C, or Win98SE.

2) I will get this info shortly, need to modify our login script to record
it. I should be able to give you a large list (250+ computers) and their OS,
MHZ and "CPU Description"

Here are two that I grabbed real quick
OS: Win98SE; Pentium I 233 MMX; cpu desc:"Pentium(r) Processor"
OS: Win2K; Pentium III 866; cpu desc:"x86 Family 6 Model 8 Stepping 6"


Thanks,
Greg


Torgeir Bakken

unread,
Jul 23, 2002, 6:20:32 PM7/23/02
to
Greg Burns wrote:

> 1) All our low end machines run either Win95B, Win95C, or Win98SE.

I was afraid of that. The description part is different in W9x than for NT-based
OSs. I have mentione a bit around that previously in a thread in the
scripting.wsh group.

Win95 will give "CPU 0", Win98 will state the processor family name directly,
e.g. "Pentium(r) II Processor" The script need some redesign to support W9x ;-)


> 2) I will get this info shortly, need to modify our login script to record
> it. I should be able to give you a large list (250+ computers) and their OS,
> MHZ and "CPU Description"

I think I know enough now (at least for Intel proc.) to make a more robust
script.

Note: The part below is also posted in the thread "Finding The Processor Type"
in microsoft.public.scripting.wsh (because it has more traffic).

What would be very interesting, would be to get some results from someone with
AMD or Cyrix !

If somebody could post back some AMD/Cyrix results from the script below, it
would be very nice :-)

Set oWMI = GetObject("winmgmts:")
For Each oCpu in oWMI.InstancesOf("Win32_Processor")

f = "Fam: " & oCpu.Family
d = "Desc: " & oCpu.Description
c = "Capt: " & oCpu.Caption
l = "Level: " & oCpu.Level
m = "Manufacturer: " & oCpu.Manufacturer
n = "Name: " & oCpu.Name
o = "OtherFamilyDescription: " & oCpu.OtherFamilyDescription
pty = "ProcessorType: " & oCpu.ProcessorType
v = "Version: " & oCpu.Version
Next

WScript.Echo f & vbCrLf & d & vbCrLf & c & vbCrLf & l & vbCrLf _
& m & vbCrLf & n & vbCrLf & o & vbCrLf & pty & vbCrLf & v


--
torgeir


Greg Burns

unread,
Jul 24, 2002, 10:25:25 AM7/24/02
to
"Torgeir Bakken" <Torgeir.B...@hydro.com> wrote in message
news:3D3DD6B0...@hydro.com...

"AMD Athlon XP 1800"
Fam: 29
Desc: x86 Family 6 Model 6 Stepping 2
Capt: x86 Family 6 Model 6 Stepping 2
Level: 6
Manufacturer: AuthenticAMD
Name: AMD Athlon(TM) XP 1800+
OtherFailyDescription:
ProcessorTYpe: 3
Version: Model 6, Stepping 2

"Cyrix M II-300"
Fam: 300
Desc: Cyrix M II(tm)
Capt: Cyrix M II(tm)
Level: 6
Manufacturer: CyrixInstead
Name: Cyrix 6x86MX processor
OtherFamilyDescription:
ProcessorType:
Version: Model 0, Stepping 0


Greg

Greg Burns

unread,
Jul 25, 2002, 2:53:06 PM7/25/02
to
Here is a slightly improved version, it more Win9x friendly.

Function WMI_CpuDesc()
Dim oWMI, sCpuDescr, aCpuDescr, i, iFamily, iModel
Dim sCpuType
Dim oCPU

Set oWMI = GetObject("winmgmts:")
For Each oCpu in oWMI.InstancesOf("Win32_Processor")

sCpuDescr = oCpu.Description
Next

Select Case sCpuDescr
Case "Pentium(r) Processor"
sCpuType = "Pentium"

Case "Intel(r) Celeron(tm) Processor"
sCpuType = "Celeron"

Case "Pentium(r) II Processor"
sCpuType = "Pentium II"

Case "Pentium(r) III Processor"
sCpuType = "Pentium III"

Case Else

'not sure so try to determine from Family and Model numbers...

aCpuDescr = Split(sCpuDescr)

For i = 0 to Ubound(aCpuDescr)
If LCase(aCpuDescr(i)) = "family" Then
iFamily = CInt(aCpuDescr(i+1))
End If
If LCase(aCpuDescr(i)) = "model" Then
iModel = CInt(aCpuDescr(i+1))
End If
Next

Select Case True


Case iFamily = 5 And iModel < 4
' Pentium
sCpuType = "Pentium"

Case iFamily = 5 And iModel >= 4
' Pentium MMX
sCpuType = "Pentium MMX"

Case iFamily = 6 and iModel <3
' Pentium Pro
sCpuType ="Pentium Pro"

Case iFamily = 6 and iModel >=3 and iModel <5
' Pentium II
sCpuType ="Pentium II"

Case iFamily = 6 and iModel = 5
' Pentium II or Celeron

sCpuType ="Pentium II (?)"

Case iFamily = 6 and iModel = 6
' Celeron
sCpuType ="Celeron"

Case iFamily = 6 And iModel >= 7
' Pentium III
sCpuType = "Pentium III"

Case iFamily = 15
' Pentium 4
sCpuType = "Pentium IV"

Case Else
' Unknown CPU, assume its some sort of Pentium
sCpuType = "?"
End Select

0 new messages