Declare Function IsProcessorFeaturePresent Lib "kernel32" _ (ByVal ProcessorFeature As Long) As Long
IsProcessorFeaturePresent определяет, поддерживается ли указанная особенность на процессоре текущего компьютера.
Если указанная особенность поддерживается, то возвращается ненулевое значение, если не поддерживается, то возвращается 0.
PF_3DNOW_INSTRUCTIONS_AVAILABLE = 7 | Доступны инструкции 3D-Now|
PF_CHANNELS_ENABLED = 16 | Доступны каналы процессора |
PF_COMPARE_EXCHANGE_DOUBLE = 2 | Возможен сравнение и обмен двойными операциями (Pentium, MIPS, and Alpha) |
PF_COMPARE_EXCHANGE128 = 14 | The atomic compare and exchange 128-bit operation (cmpxchg16b) is available. Windows Server 2003 and Windows XP/2000: This feature is not supported. |
PF_COMPARE64_EXCHANGE128 = 15 | The atomic compare 64 and exchange 128-bit operation (cmp8xchg16) is available. Windows Server 2003 and Windows XP/2000: This feature is not supported. |
PF_FLOATING_POINT_EMULATED = 1 | Операции с плавающей точкой эмулируются использованием программного эмулятора |
PF_FLOATING_POINT_PRECISION_ERRATA = 0 | В редких случаях, присутствует ли ошибка точности операций с плавающей точкой (Pentium). |
PF_MMX_INSTRUCTIONS_AVAILABLE = 3 | Имеются инструкции MMX |
PF_NX_ENABLED = 12 | Включено предотвращение исполнения данных |
PF_PAE_ENABLED = 9 | В процессоре включено расширение физического адреса |
PF_RDTSC_INSTRUCTION_AVAILABLE = 8 | Доступны инструкции RDTSC |
PF_SSE3_INSTRUCTIONS_AVAILABLE = 13 | Доступен набор инструкций SSE3 |
PF_XMMI_INSTRUCTIONS_AVAILABLE = 6 | Доступен набор инструкций SSE |
PF_XMMI64_INSTRUCTIONS_AVAILABLE = 10 | Доступен набор инструкций SSE2 |
' Проверяем доступность MMX-инструкций
Dim bCheckProc As Boolean
bCheckProc = IsProcessorFeaturePresent(PF_MMX_INSTRUCTIONS_AVAILABLE)
Print bCheckProc