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

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

Класс 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:WORKinfo.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' Информация о процессоре '**************************************************** OptionExplicitOnErrorResumeNext  Dim objService, colProcessors, objProcessor, ProcessorInfo  ProcessorInfo = "Информация о процессорах " & VbCrLf & VbCrLf  ' Подключаемся к пространству имен WMI Set objService = GetObject("WinMgmts:\.RootCIMV2")  ' Создаем коллекцию экземпляров класса Win32_Processor Set colProcessors = objService.ExecQuery("SELECT * FROM Win32_Processor")  ' Начинаем перебор коллекцииForEach 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 ="Информация о процессорахnn"; // Подключаемся к пространству имен WMI objService = GetObject("WinMgmts:\\.\Root\CIMV2"); // Создаем коллекцию экземпляров класса Win32_Processor colProcessors = objService.ExecQuery("SELECT * FROM Win32_Processor"); // Создаем объект EnumeratorenumItems =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 +="********************************nn";} // Выводим информациюWScript.Echo(ProcessorInfo);
Оцените статью
Технологии программирования и ведение блога
Добавить комментарий