Класс Win32_Processor — Информация о процессоре

Класс Win32_Processor — Информация о процессоре Объектная модель Windows Management Instrumentation

Класс Win32_Processor позволяет получить информацию о процессоре, по сути, информация о процессоре хранится в свойствах экземпляра данного класса. Так как сейчас в большинстве систем находятся процессоры из нескольких ядер, то и экземпляров класс Win32_Processor будет несколько.

Для начала, давайте посмотрим, какую информацию о классе можно извлечь с помощью мой любимой утилиты WMI CIM Studio. Запускаем утилиту и в левой панели выбираем интересующий нас класс (если что, просто вбейте имя класса в поиск и все).

Сам класс является производным от класса CIM_Processor, ключевым свойством является DeviceID (об этом символизирует значок ключа возле имени свойства).

Просмотр свойств класса Win32_Processor в утилите WMI CIM Studio

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

Просмотр ассоциаций с классом Win32_Processor в CIM Studio

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

Просмотр экземпляро класса Win32_Processor в WMI Studio

Сам класс 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 вольт

Далее привожу примеры сценариев на языке vbscriptWin32_Processor.vbs и jscriptWin32_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);
Оцените статью
Технологии программирования и ведение блога
Добавить комментарий