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