Поделиться через


Функция IsProcessorFeaturePresent (processthreadsapi.h)

Определяет, поддерживается ли указанная функция процессора текущим компьютером.

Синтаксис

BOOL IsProcessorFeaturePresent(
  [in] DWORD ProcessorFeature
);

Параметры

[in] ProcessorFeature

Проверяемая функция процессора. Этот параметр может быть одним из следующих значений.

Ценность Meaning
PF_ARM_64BIT_LOADSTORE_ATOMIC
двадцать пять
Доступны 64-разрядные инструкции по загрузке и хранению атомарных данных.
PF_ARM_DIVIDE_INSTRUCTION_AVAILABLE
двадцать четыре
Доступны инструкции по разделу.
PF_ARM_EXTERNAL_CACHE_AVAILABLE
26
Внешний кэш доступен.
PF_ARM_FMAC_INSTRUCTIONS_AVAILABLE
двадцать семь
Доступна инструкция умножения с плавающей запятой.
PF_ARM_VFP_32_REGISTERS_AVAILABLE
18
VFP/Neon: присутствует 32 x 64-разрядный регистровый банк. Этот флаг имеет то же значение, что и PF_ARM_VFP_EXTENDED_REGISTERS.
PF_3DNOW_INSTRUCTIONS_AVAILABLE
7
Доступен набор инструкций 3D-Now.
PF_CHANNELS_ENABLED
16
Каналы процессора включены.
PF_COMPARE_EXCHANGE_DOUBLE
2
Доступна операция атомарного сравнения и обмена (cmpxchg).
PF_COMPARE_EXCHANGE128
14
Доступна атомарная операция сравнения и обмена 128-разрядной операцией (cmpxchg16b).

Windows Server 2003 и Windows XP/2000: Эта функция не поддерживается.

PF_COMPARE64_EXCHANGE128
15
Доступно атомарное сравнение 64 и 128-разрядной операции exchange (cmp8xchg16).

Windows Server 2003 и Windows XP/2000: Эта функция не поддерживается.

PF_FASTFAIL_AVAILABLE
23
_fastfail() доступно.
PF_FLOATING_POINT_EMULATED
1
Операции с плавающей запятой эмулируются с помощью эмулятора программного обеспечения.

Эта функция возвращает ненулевое значение, если операции с плавающей запятой эмулируются; в противном случае возвращается ноль.

PF_FLOATING_POINT_PRECISION_ERRATA
0
При возникновении ошибки точности с плавающей запятой может возникать в редких случаях.
PF_MMX_INSTRUCTIONS_AVAILABLE
3
Доступен набор инструкций MMX.
PF_NX_ENABLED
12

Включена защита от выполнения данных .

Windows XP/2000: Эта функция не поддерживается до windows XP с пакетом обновления 2 (SP2) и Windows Server 2003 с пакетом обновления 1 (SP1).

PF_PAE_ENABLED
9
Процессор включен с поддержкой PAE. Дополнительные сведения см. в разделе "Расширение физического адреса".

Все процессоры x64 всегда возвращают ненулевое значение для этой функции.

PF_RDTSC_INSTRUCTION_AVAILABLE
8
Доступна инструкция RDTSC.
PF_RDWRFSGSBASE_AVAILABLE
двадцать два
Доступны инструкции RDFSBASE, RDGSBASE, WRFSBASE и WRGSBASE.
PF_SECOND_LEVEL_ADDRESS_TRANSLATION
20
Преобразование адресов второго уровня поддерживается оборудованием.
PF_SSE3_INSTRUCTIONS_AVAILABLE
13
Доступен набор инструкций SSE3.

Windows Server 2003 и Windows XP/2000: Эта функция не поддерживается.

PF_SSSE3_INSTRUCTIONS_AVAILABLE
36
Доступен набор инструкций SSSE3.
PF_SSE4_1_INSTRUCTIONS_AVAILABLE
37
Доступен набор инструкций SSE4_1.
PF_SSE4_2_INSTRUCTIONS_AVAILABLE
38
Доступен набор инструкций SSE4_2.
PF_AVX_INSTRUCTIONS_AVAILABLE
39
Доступен набор инструкций AVX.
PF_AVX2_INSTRUCTIONS_AVAILABLE
40
Доступен набор инструкций AVX2.
PF_AVX512F_INSTRUCTIONS_AVAILABLE
41
Доступен набор инструкций AVX512F.
PF_VIRT_FIRMWARE_ENABLED
двадцать один
Виртуализация включена в встроенном ПО и доступна операционной системой.
PF_XMMI_INSTRUCTIONS_AVAILABLE
6
Доступен набор инструкций SSE.
PF_XMMI64_INSTRUCTIONS_AVAILABLE
10
Доступен набор инструкций SSE2.

Windows 2000: Эта функция не поддерживается.

PF_XSAVE_ENABLED
17
Процессор реализует инструкции XSAVE и XRSTOR.

Windows Server 2008, Windows Vista, Windows Server 2003 и Windows XP/2000: Эта функция не поддерживается до Windows 7 и Windows Server 2008 R2.

PF_ARM_V8_INSTRUCTIONS_AVAILABLE
29
Этот процессор Arm реализует набор инструкций Arm версии 8.
PF_ARM_V8_CRYPTO_INSTRUCTIONS_AVAILABLE
30
Этот процессор Arm реализует дополнительные инструкции по шифрованию Arm версии 8 (например, AES, SHA1 и SHA2).
PF_ARM_V8_CRC32_INSTRUCTIONS_AVAILABLE
31
Этот процессор Arm реализует дополнительные инструкции CRC32 Arm версии 8.
PF_ARM_V81_ATOMIC_INSTRUCTIONS_AVAILABLE
34
Этот процессор Arm реализует атомарные инструкции Arm версии 8.1 (например, CAS, SWP).
PF_ARM_V82_DP_INSTRUCTIONS_AVAILABLE
43
Этот процессор Arm реализует инструкции arm версии 8.2 DP (например, SDOT, UDOT). Эта функция является необязательной в реализации Arm версии 8.2 и обязательной в реализациях Arm версии 8.4.
PF_ARM_V83_JSCVT_INSTRUCTIONS_AVAILABLE
44
Этот процессор Arm реализует инструкции ARM версии 8.3 JSONVT (например, FJCVTZS).
PF_ARM_V83_LRCPC_INSTRUCTIONS_AVAILABLE
45
Этот процессор Arm реализует инструкции Arm версии 8.3 LRCPC (например, LDAPR). Обратите внимание, что некоторые ЦП Arm версии 8.2 могут поддерживать инструкции LRCPC.
PF_ARM_SVE_INSTRUCTIONS_AVAILABLE
46
Этот процессор Arm реализует инструкции SVE (масштабируемое расширение вектора) (FEAT_SVE).
PF_ARM_SVE2_INSTRUCTIONS_AVAILABLE
47
Этот процессор Arm реализует инструкции SVE2 (FEAT_SVE2).
PF_ARM_SVE2_1_INSTRUCTIONS_AVAILABLE
48
Этот процессор Arm реализует инструкции SVE2.1 (FEAT_SVE2p1).
PF_ARM_SVE_AES_INSTRUCTIONS_AVAILABLE
49
Этот процессор Arm реализует инструкции SVE AES (FEAT_SVE_AES).
PF_ARM_SVE_PMULL128_INSTRUCTIONS_AVAILABLE
50
Этот процессор Arm реализует 128-разрядную многономиальную многономиальную инструкцию (FEAT_SVE_PMULL128).
PF_ARM_SVE_BITPERM_INSTRUCTIONS_AVAILABLE
51
Этот процессор Arm реализует инструкции по перемутке битов SVE (FEAT_SVE_BitPerm).
PF_ARM_SVE_BF16_INSTRUCTIONS_AVAILABLE
52
Этот процессор Arm реализует инструкции SVE BF16 (BFloat16) (FEAT_BF16).
PF_ARM_SVE_EBF16_INSTRUCTIONS_AVAILABLE
53
Этот процессор Arm реализует инструкции SVE EBF16 (Extended BFloat16) (FEAT_EBF16).
PF_ARM_SVE_B16B16_INSTRUCTIONS_AVAILABLE
54
Этот процессор Arm реализует инструкции SVE B16B16 (FEAT_SVE_B16B16).
PF_ARM_SVE_SHA3_INSTRUCTIONS_AVAILABLE
55
Этот процессор Arm реализует криптографические инструкции SVE SHA-3 (FEAT_SVE_SHA3).
PF_ARM_SVE_SM4_INSTRUCTIONS_AVAILABLE
56
Этот процессор Arm реализует криптографические инструкции SVE SM4 (FEAT_SVE_SM4).
PF_ARM_SVE_I8MM_INSTRUCTIONS_AVAILABLE
57
Этот процессор Arm реализует инструкции SVE I8MM (умножение матрицы Int8) (FEAT_I8MM).
PF_ARM_SVE_F32MM_INSTRUCTIONS_AVAILABLE
58
Этот процессор Arm реализует инструкции по умножению матрицы SVE F32MM (FP32) (FEAT_F32MM).
PF_ARM_SVE_F64MM_INSTRUCTIONS_AVAILABLE
59
Этот процессор Arm реализует инструкции по умножению матрицы SVE F64MM (FP64) (FEAT_F64MM).
PF_BMI2_INSTRUCTIONS_AVAILABLE
60
Этот процессор x64 реализует набор инструкций BMI2.
PF_MOVDIR64B_INSTRUCTION_AVAILABLE
61
Этот процессор x64 реализует инструкцию MOVDIR64B.
PF_ARM_LSE2_AVAILABLE
62
Этот процессор Arm реализует атомарные инструкции LSE2 (FEAT_LSE2).
PF_ARM_SHA3_INSTRUCTIONS_AVAILABLE
64
Этот процессор Arm реализует криптографические инструкции SHA-3 (FEAT_SHA3).
PF_ARM_SHA512_INSTRUCTIONS_AVAILABLE
65
Этот процессор Arm реализует криптографические инструкции SHA-512 (FEAT_SHA512).
PF_ARM_V82_I8MM_INSTRUCTIONS_AVAILABLE
66
Этот процессор Arm реализует инструкции NEON i8MM (умножение матрицы Int8) (FEAT_I8MM).
PF_ARM_V82_FP16_INSTRUCTIONS_AVAILABLE
67
Этот процессор Arm реализует инструкции neon (FEAT_FP16) FP16 (с плавающей запятой с плавающей запятой с половинной точностью).
PF_ARM_V86_BF16_INSTRUCTIONS_AVAILABLE
68
Этот процессор Arm реализует инструкции BF16 (BFloat16) NEON (FEAT_BF16).
PF_ARM_V86_EBF16_INSTRUCTIONS_AVAILABLE
69
Этот процессор Arm реализует инструкции EBF16 (Extended BFloat16) NEON (FEAT_EBF16).
PF_ARM_SME_INSTRUCTIONS_AVAILABLE
70
Этот процессор Arm реализует инструкции SME (масштабируемое расширение матрицы) (FEAT_SME).
PF_ARM_SME2_INSTRUCTIONS_AVAILABLE
71
Этот процессор Arm реализует инструкции SME2 (FEAT_SME2).
PF_ARM_SME2_1_INSTRUCTIONS_AVAILABLE
72
Этот процессор Arm реализует инструкции SME2.1 (FEAT_SME2p1).
PF_ARM_SME2_2_INSTRUCTIONS_AVAILABLE
73
Этот процессор Arm реализует инструкции SME2.2 (FEAT_SME2p2).
PF_ARM_SME_AES_INSTRUCTIONS_AVAILABLE
74
Этот процессор Arm реализует инструкции SVE AES при использовании режима потоковой передачи SVE (FEAT_SSVE_AES).
PF_ARM_SME_SBITPERM_INSTRUCTIONS_AVAILABLE
75
Этот процессор Arm реализует инструкции по перемычки SVE в режиме потоковой передачи (FEAT_SSVE_BitPerm).
PF_ARM_SME_SF8MM4_INSTRUCTIONS_AVAILABLE
76
Этот процессор Arm реализует инструкцию SVE FMMLA (расширение, 4-путь, FP8 до FP16) при использовании режима потоковой передачи SVE (FEAT_SSVE_F8F16MM).
PF_ARM_SME_SF8MM8_INSTRUCTIONS_AVAILABLE
77
Этот процессор Arm реализует инструкцию SVE FMMLA (расширение, 8 способ, FP8 до FP32), когда в режиме потоковой передачи SVE (FEAT_SSVE_F8F32MM).
PF_ARM_SME_SF8DP2_INSTRUCTIONS_AVAILABLE
78
Этот процессор Arm реализует инструкции по SVE2 FP8DOT2 при использовании режима потоковой передачи SVE (FEAT_SSVE_FP8DOT2).
PF_ARM_SME_SF8DP4_INSTRUCTIONS_AVAILABLE
79
Этот процессор Arm реализует инструкции FP8DOT4 SVE2 при использовании режима потоковой передачи SVE (FEAT_SSVE_FP8DOT4).
PF_ARM_SME_SF8FMA_INSTRUCTIONS_AVAILABLE
80
Этот процессор Arm реализует инструкции SVE2 FP8FMA при использовании режима потоковой передачи SVE (FEAT_SSVE_FP8FMA).
PF_ARM_SME_F8F32_INSTRUCTIONS_AVAILABLE
81
Этот процессор Arm реализует инструкции SME F8F32 (FEAT_SME_F8F32).
PF_ARM_SME_F8F16_INSTRUCTIONS_AVAILABLE
82
Этот процессор Arm реализует инструкции SME F8F16 (FEAT_SME_F8F16).
PF_ARM_SME_F16F16_INSTRUCTIONS_AVAILABLE
83
Этот процессор Arm реализует инструкции SME F16F16 (FEAT_SME_F16F16).
PF_ARM_SME_B16B16_INSTRUCTIONS_AVAILABLE
84
Этот процессор Arm реализует инструкции SME B16B16 (FEAT_SME_B16B16).
PF_ARM_SME_F64F64_INSTRUCTIONS_AVAILABLE
85
Этот процессор Arm реализует инструкции SME F64F64 (FEAT_SME_F64F64).
PF_ARM_SME_I16I64_INSTRUCTIONS_AVAILABLE
86
Этот процессор Arm реализует инструкции SME I16I64 (FEAT_SME_I16I64).
PF_ARM_SME_LUTv2_INSTRUCTIONS_AVAILABLE
87
Этот процессор Arm реализует инструкции SME LUTv2 (FEAT_SME_LUTv2).
PF_ARM_SME_FA64_INSTRUCTIONS_AVAILABLE
88
Этот процессор Arm реализует SME FA64 (полный набор инструкций AArch64 при использовании режима потоковой передачи SVE) (FEAT_SME_FA64).
PF_UMONITOR_INSTRUCTION_AVAILABLE
89
Этот процессор x64 реализует инструкцию UMONITOR.

Возвращаемое значение

Если функция поддерживается, возвращаемое значение ненулевое значение.

Если функция не поддерживается, возвращаемое значение равно нулю.

Если HAL не поддерживает обнаружение функции, независимо от того, поддерживает ли оборудование эту функцию, возвращаемое значение также равно нулю.

Замечания

PF_SSSE3_INSTRUCTIONS_AVAILABLE PF_AVX512F_INSTRUCTIONS_AVAILABLE Поддержка сквозного использования добавлена в пакет SDK для Windows (19041) и поддерживается Windows 10 версии 2004 (обновление за май 2020 г.) или более поздней версии.

PF_ERMS_AVAILABLEПоддержка и PF_ARM_V82_DP_INSTRUCTIONS_AVAILABLEPF_ARM_V83_JSCVT_INSTRUCTIONS_AVAILABLE добавлена в пакет SDK для Windows (20348) и поддерживается Windows 11 и Windows Server 2022.

Определение PF_ARM_V83_LRCPC_INSTRUCTIONS_AVAILABLE было добавлено в пакет SDK для Windows (22621) и поддерживается Windows 11 версии 22H2.

PF_ARM_SVE_INSTRUCTIONS_AVAILABLE Поддержка сквозного PF_MOVDIR64B_INSTRUCTION_AVAILABLEPF_ARM_SHA3_INSTRUCTIONS_AVAILABLEPF_ARM_V86_EBF16_INSTRUCTIONS_AVAILABLE использования добавлена в пакет SDK для Windows (26100) и поддерживается Windows 11 версии 24H2 и Windows Server 2025 или более поздней версии.

Требования

Требование Ценность
Минимальный поддерживаемый клиент Windows 2000 Профессиональный [классические приложения | Приложения UWP]
минимальный поддерживаемый сервер Windows 2000 Server [классические приложения | Приложения UWP]
целевая платформа Виндоус
Header processthreadsapi.h (include Windows.h)
Library Kernel32.lib
DLL Kernel32.dll

См. также

API Vertdll, доступные в анклавах VBS

Системные информационные функции