Класс Win32_Processor позволяет получить информацию о процессоре, по сути, информация о процессоре хранится в свойствах экземпляра данного класса. Так как сейчас в большинстве систем находятся процессоры из нескольких ядер, то и экземпляров класс Win32_Processor будет несколько.
Для начала, давайте посмотрим, какую информацию о классе можно извлечь с помощью мой любимой утилиты WMI CIM Studio. Запускаем утилиту и в левой панели выбираем интересующий нас класс (если что, просто вбейте имя класса в поиск и все).
Сам класс является производным от класса CIM_Processor, ключевым свойством является DeviceID (об этом символизирует значок ключа возле имени свойства).

У класса есть два метода (Reset и SetPoverState), но они не реализованы. На вкладке Associations можно просмотреть ассоциативные связи. Win32_Process связан с классами Win32_CacheMemory (посредством ассоциативного класса Win32_AssociatedProcessorMemory) и Win32_ComputerSystem (посредством ассоциативного класса Win32_AssociatedProcessorMemory).

Теперь, если нажать на кнопку Instances, то можно получить список экземпляров класса, в которых содержится информация о процессоре (вернее одном из процессоров).

Сам класс Win32_Processor предоставляет провайдер подсистемы Win32, файлы: Cimwin32.mof и Cimwin32.dll, пространство имен rootCIMV2.
Теперь давайте посмотрим как можно извлечь информацию о процессоре используя класс Win32_Processor средствами утилиты WMIC командной строки:
Выводим информацию о свойствах и методах класса Win32_Processor:
WMIC CLASS Win32_Processor |
В виде таблица получаем значения свойств экземпляров класса и направляем вывод во внешний файл:
WMIC PATH Win32_Processor GET /FORMAT:HFORM>d:\WORK\info.htm |
Список процессоров, которые есть в системе:
WMIC PATH Win32_Processor GET DeviceID
|
Свойства класса Win32_Processor – информация о процессоре
AddressWidth – Свойство позволяет получить значение адресной шины процессора в битах. На 32-разрядной операционной системе значение 32 и на 64-разрядной операционной системе — 64 (CIM_Processor).
Architecture – Архитектура процесса. Возможные значения:
- 0 (0x0) — x86
- 1 (0x1) — MIPS
- 2 (0x2) — Alpha
- 3 (0x3) — PowerPC
- 5 (0x5) — ARM
- 6 (0x6) — Itanium-based systems
- 9 (0x9) — x64
Availability — Доступность и состояние устройства, (CIM_LogicalDevice). Возможные значения:
- 1 (0x1) — Другое
- 2 (0x2) — Неизвестный
- 3 (0x3) — Запуск или полная мощность
- 4 (0x4) — Предупреждение
- 5 (0x5) — В состоянии теста
- 6 (0x6) — Не действует
- 7 (0x7) — Выключение питания
- 8 (0x8) – Off Line
- 9 (0x9) – Off Duty
- 10 (0xA) — Частичная потеря работоспособности
- 11 (0xB) — Не установлен
- 12 (0xC) — Ошибка установки
- 13 (0xD) — Энергосбережение — Неизвестный. Устройство находится в состоянии энергосбережения, но его точное состояние неизвестно.
- 14 (0xE) — Энергосбережение — Энергосберегающий режим. Устройство находится в состоянии энергосбережения, но все еще функционирует, и может идти к снижению производительности.
- 15 (0xF) — Энергосбережение — В режиме ожидания. Устройство не работает, но может быть быстро привлечено к полной мощности.
- 16 (0x10) — Цикл питания
- 17 (0x11) — Энергосбережение — Внимание. Устройство находится в состоянии предупреждения, хотя и в состоянии экономии энергии.
Caption – Короткое описание, (CIM_ManagedSystemElement).
ConfigManagerErrorCode — Указывает код ошибки диспетчера конфигураций Win32 (Возможных значений слишком много, поэтому описывать не буду, в случае чего, всегда можно обратится к документации Microsoft).
ConfigManagerUserConfig – Содержит логическое значение, определяющее, используется ли конфигурация пользователя, (CIM_LogicalDevice).
CpuStatus – Текущий статус процессора. Изменения статуса обуславливаются использованием самого процессора, а не его физическими характеристиками. Информация о процессоре. Возможные значения:
- 0 (0x0) — Неизвестный
- 1 (0x1) — Процессор включен
- 2 (0x2) — Процессор отключен пользователем через настройки BIOS
- 3 (0x3) — Процессор отключен в BIOS (POST Error)
- 4 (0x4) — CPU находится в режиме ожидания
- 5 (0x5) — Зарезервировано
- 6 (0x6) — Зарезервировано
- 7 (0x7) — Другое
CreationClassName – Класс создатель, (CIM_LogicalDevice).
CurrentClockSpeed – Частота процесса в МГц, (CIM_Processor).
CurrentVoltage — Напряжение питания процессора. Биты 0-6 содержат текущую величину напряжения питания процессора, умноженную на 10. Это свойство устанавливается только, когда значение напряжения указывается SMBIOS. Конкретные значения содержатся в свойстве VoltageCaps. Например: значение свойства для напряжения питания процессора 1.8 вольт будет равно 92h = 80h + (1.8 x 10) = 80h + 18 = 80h + 12h
DataWidth — Свойство позволяет получить значение максимальной ширины шины процессора в битах. На 32-разрядной операционной системе значение 32 и на 64-разрядной операционной системе – 64, (CIM_Processor).
Description – Описание, (CIM_ManagedSystemElement).
DeviceID – Идентификатор процессора, (CIM_LogicalDevice).
ErrorCleared — Логическое значение, указывающее, что ошибка, возвращенная свойством LastErrorCode устранена, (CIM_LogicalDevice).
ErrorDescription – Содержит дополнительную информацию об ошибке, указанной в свойстве LastErrorCode, и возможных способах ее устранения, информация о процессоре, (CIM_LogicalDevice).
ExtClock – Частота внешнего таймера в МГц, если данное значение неизвестно, то свойство вернет NULL.
Family – Тип семейства процессоров, (CIM_Processor). Возможные значения:
- 1 (0x1) — Другой тип
- 2 (0x2) — Неизвестно
- 3 (0x3) — 8086
- 4 (0x4) — 80286
- 5 (0x5) — Intel386™ Processor
- 6 (0x6) — Intel486™ Processor
- 7 (0x7) — 8087
- 8 (0x8) — 80287
- 9 (0x9) — 80387
- 10 (0xA) — 80487
- 11 (0xB) — Pentium Brand
- 12 (0xC) — Pentium Pro
- 13 (0xD) — Pentium II
- 14 (0xE) — Pentium Processor with MMX™ Technology
- 15 (0xF) — Celeron™
- 16 (0x10) — Pentium II Xeon™
- 17 (0x11) — Pentium III
- 18 (0x12) — M1 Family
- 19 (0x13) — M2 Family
- 24 (0x18) — AMD Duron™ Processor Family
- 25 (0x19) — K5 Family
- 26 (0x1A) — K6 Family
- 27 (0x1B) — K6-2
- 28 (0x1C) — K6-3
- 29 (0x1D) — AMD Athlon™ Processor Family
- 30 (0x1E) — AMD2900 Family
- 31 (0x1F) — K6-2+
- 32 (0x20) — Power PC Family
- 33 (0x21) — Power PC 601
- 34 (0x22) — Power PC 603
- 35 (0x23) — Power PC 603+
- 36 (0x24) — Power PC 604
- 37 (0x25) — Power PC 620
- 38 (0x26) — Power PC X704
- 39 (0x27) — Power PC 750
- 48 (0x30) — Alpha Family
- 49 (0x31) — Alpha 21064
- 50 (0x32) — Alpha 21066
- 51 (0x33) — Alpha 21164
- 52 (0x34) — Alpha 21164PC
- 53 (0x35) — Alpha 21164a
- 54 (0x36) — Alpha 21264
- 55 (0x37) — Alpha 21364
- 64 (0x40) — MIPS Family
- 65 (0x41) — MIPS R4000
- 66 (0x42) — MIPS R4200
- 67 (0x43) — MIPS R4400
- 68 (0x44) — MIPS R4600
- 69 (0x45) — MIPS R10000
- 80 (0x50) — SPARC Family
- 81 (0x51) — SuperSPARC
- 82 (0x52) — microSPARC II
- 83 (0x53) — microSPARC IIep
- 84 (0x54) — UltraSPARC
- 85 (0x55) — UltraSPARC II
- 86 (0x56) — UltraSPARC IIi
- 87 (0x57) — UltraSPARC III
- 88 (0x58) — UltraSPARC IIIi
- 96 (0x60) — 68040
- 97 (0x61) — 68xxx Family
- 98 (0x62) — 68000
- 99 (0x63) — 68010
- 100 (0x64) — 68020
- 101 (0x65) — 68030
- 112 (0x70) — Hobbit Family
- 120 (0x78) — Crusoe™ TM5000 Family
- 121 (0x79) — Crusoe™ TM3000 Family
- 122 — Efficeon™ TM8000 Family
- 128 (0x80) — Weitek
- 130 (0x82) — Itanium™ Processor
- 131 (0x83) — AMD Athlon™ 64 Processor Family
- 132 (0x84) — AMD Opteron™ Processor Family
- 144 (0x90) — PA-RISC Family
- 145 (0x91) — PA-RISC 8500
- 146 (0x92) — PA-RISC 8000
- 147 (0x93) — PA-RISC 7300LC
- 148 (0x94) — PA-RISC 7200
- 149 (0x95) — PA-RISC 7100LC
- 150 (0x96) — PA-RISC 7100
- 160 (0xA0) — V30 Family
- 176 (0xB0) — Pentium III Xeon™ Processor
- 177 (0xB1) — Pentium III Processor with Intel SpeedStep™ Technology
- 178 (0xB2) — Pentium 4
- 179 (0xB3) — Intel Xeon™
- 180 (0xB4) — AS400 Family
- 181 (0xB5) — Intel Xeon™ Processor MP
- 182 (0xB6) — AMD Athlon™ XP Family
- 183 (0xB7) — AMD Athlon™ MP Family
- 184 (0xB8) — Intel Itanium 2
- 185 (0xB9) — Intel Pentium M Processor
- 190 (0xBE) — K7
- 200 (0xC8) — IBM390 Family
- 201 (0xC9) — G4
- 202 (0xCA) — G5
- 203 (0xCB) — G6
- 204 (0xCC) — z/Architecture Base
- 250 (0xFA) — i860
- 251 (0xFB) — i960
- 260 (0x104) — SH-3
- 261 (0x105) — SH-4
- 280 (0x118) — ARM
- 281 (0x119) — StrongARM
- 300 (0x12C) — 6×86
- 301 (0x12D) — MediaGX
- 302 (0x12E) — MII
- 320 (0x140) — WinChip
- 350 (0x15E) — DSP
- 500 (0x1F4) — Video Processor
InstallDate – Дата установки, (CIM_ManagedSystemElement).
L2CacheSize – Размер процессорного кеша второго уровня.
L2CacheSpeed – Частота процессорного кеша второго уровня.
L3CacheSize — Размер процессорного кеша третьего уровня..
L3CacheSpeed — Частота процессорного кеша третьего уровня. Данное свойство не поддерживается в Windows Server 2003 and Windows XP.
LastErrorCode – Код последней ошибки, которую вернуло устройство, (CIM_LogicalDevice).
Level – Тип процессора, значение зависит от архитектуры.
LoadPercentage – Показывает среднее значение загрузки процессора за последнюю секунду, (CIM_Processor).
Manufacturer – Изготовитель процессора.
MaxClockSpeed – Максимальная частота процессора в МГц, (CIM_Processor).
Name – Метка, (CIM_ManagedSystemElement).
NumberOfCores – Количество ядер, свойство не поддерживается в Windows Server 2003 and Windows XP.
NumberOfLogicalProcessors – Количество логических процессоров для данного экземпляра процессора, свойство не поддерживается в Windows Server 2003 and Windows XP.
OtherFamilyDescription – Используется когда свойство Family установлено в 1, если же значение свойства Family отличается от 1, то текущее значение свойства OtherFamilyDescription устанавливается в NULL, информация о процессоре, (CIM_LogicalDevice).
PNPDeviceID — Указывает Win32-идентификатор логического устройства Plug and Play, (CIM_LogicalDevice).
PowerManagementCapabilities – Параметры электропитания, свойство является массивом. Значения свойств можно просмотреть в документации Microsoft, (CIM_LogicalDevice).
PowerManagementSupported – Содержит логическое значение, которое определяет возможности управления электропитание, (CIM_LogicalDevice).
ProcessorId – Специфическая информация относительно возможностей процессора, фактически – маркировка процессора.
ProcessorType – Основная функция процессора. Возможные значения:
- 1 (0x1) — Другое
- 2 (0x2) — Неизвестный
- 3 (0x3) — Центральный процессор
- 4 (0x4) — Математический процессор
- 5 (0x5) — DSP процессор
- 6 (0x6) — видеопроцессор
Revision — Указывает номер редакции архитектуры системы. Значение этого свойства зависит от архитектуры процессора. Содержит то же значение, что и свойство Version, но в числовом формате, информация о процессоре.
Role – Роль процессора, фактически то же значение что и в свойстве ProcessorType, только в виде строки, (CIM_Processor).
SocketDesignation – Тип гнезда, который используется для микросхемы процессора.
Status – Текущее состояние, (CIM_ManagedSystemElement). Значения:
- OK
- Error
- Degraded
- Unknown
- Pred Fail
- Starting
- Stopping
- Service
- Stressed
- NonRecover
- NoContact
- LostComm
StatusInfo – Состояние логического устройства, (CIM_LogicalDevice). Значения:
- 1 (0x1) — Другое
- 2 (0x2) — Неизвестно
- 3 (0x3) — Включено
- 4 (0x4) — Отключено
- 5 (0x5) — Не действует
SystemCreationClassName – Имя класса системы, (CIM_LogicalDevice).
SystemName – Системное имя, (CIM_LogicalDevice).
UniqueId — Глобально уникальный идентификатор для процессора. Этот идентификатор может быть только уникальным в пределах семейства процессоров, (CIM_Processor).
UpgradeMethod — Информация о гнезде процессора, в том числе и дата обновления, (CIM_Processor). Значения:
- 1 (0x1) — Другое
- 2 (0x2) — Неизвестно
- 3 (0x3) — Daughter Board
- 4 (0x4) — ZIF Socket
- 5 (0x5) — Replacement or Piggy Back
- 6 (0x6) — None
- 7 (0x7) — LIF Socket
- 8 (0x8) — Slot 1
- 9 (0x9) — Slot 2
- 10 (0xA) — 370 Pin Socket
- 11 (0xB) — Slot A
- 12 (0xC) — Slot M
- 13 (0xD) — Socket 423
- 14 (0xE) — Socket A (Socket 462)
- 15 (0xF) — Socket 478
- 16 (0x10) — Socket 754
- 17 (0x11) — Socket 940
- 18 (0x12) — Socket 939
Version – Номер версии процессора, значение зависит от архитектуры.
VoltageCaps – Диапазон допустимых напряжения. Биты 0-3 представляют напряжения, которые могут использоваться для гнезда процессора. Все другие биты должны быть установлены в ноль. Гнездо поддерживает несколько конфигураций, если установлены несколько битов. Диапазон напряжений содержится в CurrentVoltage. Если значение свойства NULL, диапазон напряжений неизвестен. Значения:
- 1 (0x1) — 5 вольт
- 2 (0x2) — 3,3 вольт
- 4 (0x4) — 2,9 вольт
Далее привожу примеры сценариев на языке vbscript — Win32_Processor.vbs и jscript — Win32_Processor.js, которые выводят информацию об установленных в системе процессорах, я использовал не все свойства, при желании можете дополнить программный код.
'******************************************* ' Win32_Processor.vbs ' Информация о процессоре '**************************************************** Option Explicit On Error Resume Next Dim objService, colProcessors, objProcessor, ProcessorInfo ProcessorInfo = "Информация о процессорах " & VbCrLf & VbCrLf ' Подключаемся к пространству имен WMI Set objService = GetObject("WinMgmts:\\.\Root\CIMV2") ' Создаем коллекцию экземпляров класса Win32_Processor Set colProcessors = objService.ExecQuery("SELECT * FROM Win32_Processor") ' Начинаем перебор коллекции For Each objProcessor In colProcessors ProcessorInfo = ProcessorInfo & "Address Width: " & objProcessor.AddressWidth & VbCrLf ProcessorInfo = ProcessorInfo & "Architecture: " & objProcessor.Architecture & VbCrLf ProcessorInfo = ProcessorInfo & "Caption: " & objProcessor.Caption & VbCrLf ProcessorInfo = ProcessorInfo & "Cpu Status: " & objProcessor.CpuStatus & VbCrLf ProcessorInfo = ProcessorInfo & "Current Clock Speed: " & objProcessor.CurrentClockSpeed & VbCrLf ProcessorInfo = ProcessorInfo & "Current Voltage: " & objProcessor.CurrentVoltage & VbCrLf ProcessorInfo = ProcessorInfo & "Data Width: " & objProcessor.DataWidth & VbCrLf ProcessorInfo = ProcessorInfo & "Description: " & objProcessor.Description & VbCrLf ProcessorInfo = ProcessorInfo & "Device ID: " & objProcessor.DeviceID & VbCrLf ProcessorInfo = ProcessorInfo & "ExtClock: " & objProcessor.ExtClock & VbCrLf ProcessorInfo = ProcessorInfo & "Family: " & objProcessor.Family & VbCrLf ProcessorInfo = ProcessorInfo & "Install Date: " & objProcessor.InstallDate & VbCrLf ProcessorInfo = ProcessorInfo & "L2 Cache Size: " & objProcessor.L2CacheSize & VbCrLf ProcessorInfo = ProcessorInfo & "L2 Cache Speed: " & objProcessor.L2CacheSpeed & VbCrLf ProcessorInfo = ProcessorInfo & "Level: " & objProcessor.Level & VbCrLf ProcessorInfo = ProcessorInfo & "LoadPercentage: " & objProcessor.LoadPercentage & VbCrLf ProcessorInfo = ProcessorInfo & "Manufacturer: " & objProcessor.Manufacturer & VbCrLf ProcessorInfo = ProcessorInfo & "Maximum Clock Speed: " & objProcessor.MaxClockSpeed & VbCrLf ProcessorInfo = ProcessorInfo & "Name: " & objProcessor.Name & VbCrLf ProcessorInfo = ProcessorInfo & "Power Management Supported: " & objProcessor.PowerManagementSupported & VbCrLf ProcessorInfo = ProcessorInfo & "Processor Id: " & objProcessor.ProcessorId & VbCrLf ProcessorInfo = ProcessorInfo & "ProcessorType: " & objProcessor.ProcessorType & VbCrLf ProcessorInfo = ProcessorInfo & "Revision: " & objProcessor.Revision & VbCrLf ProcessorInfo = ProcessorInfo & "Role: " & objProcessor.Role & VbCrLf ProcessorInfo = ProcessorInfo & "Socket Designation: " & objProcessor.SocketDesignation & VbCrLf ProcessorInfo = ProcessorInfo & "Status: " & objProcessor.Status & VbCrLf ProcessorInfo = ProcessorInfo & "Statuslnfo: " & objProcessor.StatusInfo & VbCrLf ProcessorInfo = ProcessorInfo & "Stepping: " & objProcessor.Stepping & VbCrLf ProcessorInfo = ProcessorInfo & "UpgradeMethod: " & objProcessor.UpgradeMethod & VbCrLf ProcessorInfo = ProcessorInfo & "Version: " & objProcessor.Version & VbCrLf ProcessorInfo = ProcessorInfo & "VoltageCaps: " & objProcessor.VoltageCaps & VbCrLf ProcessorInfo = ProcessorInfo & "********************************" & VbCrLf & VbCrLf Next ' Выводим информацию WScript.Echo ProcessorInfo |
//******************************************* // Win32_Processor.js // Информация о процессоре //**************************************************** var objService, colProcessors, objProcessor, ProcessorInfo, enumItems; ProcessorInfo = "Информация о процессорах\n\n"; // Подключаемся к пространству имен WMI objService = GetObject("WinMgmts:\\\\.\\Root\\CIMV2"); // Создаем коллекцию экземпляров класса Win32_Processor colProcessors = objService.ExecQuery("SELECT * FROM Win32_Processor"); // Создаем объект Enumerator enumItems = new Enumerator(colProcessors); // Начинаем перебор коллекции for (; !enumItems.atEnd(); enumItems.moveNext()) { objProcessor = enumItems.item(); ProcessorInfo += "Address Width: " + objProcessor.AddressWidth + "\n"; ProcessorInfo += "Architecture: " + objProcessor.Architecture + "\n"; ProcessorInfo += "Caption: " + objProcessor.Caption + "\n"; ProcessorInfo += "Cpu Status: " + objProcessor.CpuStatus + "\n"; ProcessorInfo += "Current Clock Speed: " + objProcessor.CurrentClockSpeed + "\n"; ProcessorInfo += "Current Voltage: " + objProcessor.CurrentVoltage + "\n"; ProcessorInfo += "Data Width: " + objProcessor.DataWidth + "\n"; ProcessorInfo += "Description: " + objProcessor.Description + "\n"; ProcessorInfo += "Device ID: " + objProcessor.DeviceID + "\n"; ProcessorInfo += "ExtClock: " + objProcessor.ExtClock + "\n"; ProcessorInfo += "Family: " + objProcessor.Family + "\n"; ProcessorInfo += "Install Date: " + objProcessor.InstallDate + "\n"; ProcessorInfo += "L2 Cache Size: " + objProcessor.L2CacheSize + "\n"; ProcessorInfo += "L2 Cache Speed: " + objProcessor.L2CacheSpeed + "\n"; ProcessorInfo += "Level: " + objProcessor.Level + "\n"; ProcessorInfo += "LoadPercentage: " + objProcessor.LoadPercentage + "\n"; ProcessorInfo += "Manufacturer: " + objProcessor.Manufacturer + "\n"; ProcessorInfo += "Maximum Clock Speed: " + objProcessor.MaxClockSpeed + "\n"; ProcessorInfo += "Name: " + objProcessor.Name + "\n"; ProcessorInfo += "Power Management Supported: " + objProcessor.PowerManagementSupported + "\n"; ProcessorInfo += "Processor Id: " + objProcessor.ProcessorId + "\n"; ProcessorInfo += "ProcessorType: " + objProcessor.ProcessorType + "\n"; ProcessorInfo += "Revision: " + objProcessor.Revision + "\n"; ProcessorInfo += "Role: " + objProcessor.Role + "\n"; ProcessorInfo += "Socket Designation: " + objProcessor.SocketDesignation + "\n"; ProcessorInfo += "Status: " + objProcessor.Status + "\n"; ProcessorInfo += "Statuslnfo: " + objProcessor.StatusInfo + "\n"; ProcessorInfo += "Stepping: " + objProcessor.Stepping + "\n"; ProcessorInfo += "UpgradeMethod: " + objProcessor.UpgradeMethod + "\n"; ProcessorInfo += "Version: " + objProcessor.Version + "\n"; ProcessorInfo += "VoltageCaps: " + objProcessor.VoltageCaps + "\n"; ProcessorInfo += "********************************\n\n"; } // Выводим информацию WScript.Echo(ProcessorInfo); |