Информация об аппаратной конфигурации

Функции, рассматриваемые в этом разделе, позволяют получить информацию о процессоре, клавиатуре и т.п.

Функция GetSystemInfo позволяет получить информацию о процессоре и оперативной памяти, такую как размер страницы, производитель оборудования, тип процессора, диапазон адресов, выделенный приложению и т.п.

В качестве входного параметра этой функции используется указатель на структуру данных типа SYSTEM_INFO (таблица 16).

Таблица 16 - Структура данных типа SYSTEM_INFO

SYSTEM_INFO Struc Название поля Тип в С Тип в ассемблере Назначение поля
  dwOemId DWORD DD Идентификатор производителя
wProcessorArchitecture WORD DW Идентификатор архитектуры процесора: 9 - х64; 6 - Intel Itanium; 0 - x86; 0xffff - неизвестный процессор
wReserved WORD DW Зарезервировано
  dwPageSize DWORD DD Размер страницы
  lpMinimumApplicationAddress LPVOID DD Указатель на минимальный адрес, доступный приложению
  lpMaximumApplicationAddress LPVOID DD Указатель на максимальный адрес, доступный приложению
  dwActiveProcessorMask DWORD_PTR DD Маска, представляющая набор процессоров, сконфигурированных в системе
  dwNumberOfProcessors DWORD DD Количество процессоров в системе
  dwProcessorType DWORD DD Типа процессора: 386 - I80386; 486 - I80486; 586 - Intel Pentium; 2200 - процессор с архитектурой IA64; 8664 - 64x разрядный процессор AMD х86.
  dwAllocationGranularity DWORD DD Размер блоков, на которые разбита память
  wProcessorLevel WORD DW Уровень процессора, определяется архитектурой процессора.
  wProcessorRevision WORD DW Версия процессора. Состоит из идентификатора модели процессора и частоты. Начиная с процессоров Pentium старший байт - модель, младший - частота процессора.

Необходимо отметить, что первые 3 элемента (dwOemId, wProcessorArchitecture и wReserved) представляют собой данные, представляющие собой альтернативные ветви одного объединения (объявляется ключевым словом UNION) и фактически используется либо элемент dwOemId, либо пара элементов wProcessorArchitecture и wReserved - то есть, в программе объявляется двойное слово. Фактически же, при создании новых приложений, необходимо учитывать тот факт, что элемент dwOemId не используется и информацию об архитектуре процессора следует извлекать из старшего слова.

Для определения того, поддерживает ли имеющийся процессор тот или иной набор команд или функциональность, используется функция IsProcessorFeaturePresent. В качестве входного параметра задается код (4 байта) того или иного набора команд (или функциональности), а в результате выполнения функции формируется значение: не равное 0 в случае если процессор поддерживает заданный набор команд или функциональность и равное 0 - если не поддерживает.

В таблице 17 приведены некоторые коды, которые могут быть использованы в качестве входного параметра функции IsProcessorFeaturePresent.

Таблица 17 - Коды для определения функциональных возможностей процессора

Название и значение кода Описание
PF_3DNOW_INSTRUCTIONS_AVAILABLE 7 Набор команд 3DNow (введен в процессорах AMD) доступен
PF_COMPARE_EXCHANGE_DOUBLE 2 Доступна команда cmpxchg(сравнить и поменять местами)
PF_COMPARE_EXCHANGE128 14 Доступна команда cmpxchg128(сравнить и поменять местами 128 бит) Эта возможность не поддерживается до ОС Windows Vista
PF_COMPARE64_EXCHANGE128 15 Доступна команда сравнения 64 бит и обмена 128 бит cmp8xchg16. Эта возможность не поддерживается до ОС Windows Vista
PF_FLOATING_POINT_EMULATED 1 Операции с плавающей запятой реализуются программными средствами. Ненулевое значение свидетельствует о эмуляции операции с плавающей запятой, нулевое - операции с плавающей запятой выполняются аппаратно.
PF_MMX_INSTRUCTIONS_AVAILABLE 3 Доступен набор команд MMX.
PF_NX_ENABLED 12 Включена защита от выполнения кода (когда в счетчик команд загружается адрес, указывающий на страницу памяти, содержащую данные, а не команды) Эта возможность не поддерживается в ОС семейства Windows до версий Windows XP SP2 и Windows Server 2003 SP1.
PF_PAE_ENABLED 9 Процессор поддерживает режим PAE (расширение физической памяти, см. раздел "Управление памятью").
PF_SSE3_INSTRUCTIONS_AVAILABLE 13 Доступен набор команды SSE3. Эта возможность не поддерживается до ОС Windows Vista
PF_XMMI_INSTRUCTIONS_AVAILABLE 6 Доступен набор команды SSE.
PF_XMMI64_INSTRUCTIONS_AVAILABLE 10 Доступен набор команды SSE2. Эта возможность не поддерживается в ОС Windows 2000

Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: