IsProcessorFeaturePresent 函数 (processthreadsapi.h)

确定当前计算机是否支持指定的处理器功能。

语法

BOOL IsProcessorFeaturePresent(
  [in] DWORD ProcessorFeature
);

参数

[in] ProcessorFeature

要测试的处理器功能。 此参数的取值可为下列值之一:

含义
PF_ARM_64BIT_LOADSTORE_ATOMIC
25
可以使用 64 位加载/存储原子指令。
PF_ARM_DIVIDE_INSTRUCTION_AVAILABLE
24
可以使用除法指令。
PF_ARM_EXTERNAL_CACHE_AVAILABLE
26
外部缓存可用。
PF_ARM_FMAC_INSTRUCTIONS_AVAILABLE
27
浮点乘积指令可用。
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 位操作 (cmp8xchg16) 。

Windows Server 2003 和 Windows XP/2000: 不支持此功能。

PF_FASTFAIL_AVAILABLE
23
_fastfail () 可用。
PF_FLOATING_POINT_EMULATED
1
浮点运算是使用软件模拟器模拟的。

如果模拟浮点运算,此函数将返回非零值;否则,它将返回零。

PF_FLOATING_POINT_PRECISION_ERRATA
0
在Pentium上,在极少数情况下可能会出现浮点精度误差。
PF_MMX_INSTRUCTIONS_AVAILABLE
3
MMX 指令集可用。
PF_NX_ENABLED
12

已启用数据执行防护

Windows XP/2000: 在 Windows XP SP2 和 Windows Server 2003 SP1 之前,不支持此功能。

PF_PAE_ENABLED
9
处理器已启用 PAE。 有关详细信息,请参阅 物理地址扩展

对于此功能,所有 x64 处理器始终返回非零值。

PF_RDTSC_INSTRUCTION_AVAILABLE
8
RDTSC 指令可用。
PF_RDWRFSGSBASE_AVAILABLE
22
提供 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
21
虚拟化在固件中启用,并由操作系统提供。
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 v8 指令集。
PF_ARM_V8_CRYPTO_INSTRUCTIONS_AVAILABLE
30
此 Arm 处理器实现 Arm v8 的额外加密指令 (例如 AES、SHA1 和 SHA2) 。
PF_ARM_V8_CRC32_INSTRUCTIONS_AVAILABLE
31
此 Arm 处理器实现 Arm v8 额外的 CRC32 指令。
PF_ARM_V81_ATOMIC_INSTRUCTIONS_AVAILABLE
34
此 Arm 处理器实现 Arm v8.1 原子指令 (例如 CAS、SWP) 。
PF_ARM_V82_DP_INSTRUCTIONS_AVAILABLE
43
此 Arm 处理器实现 Arm v8.2 DP 指令 (例如 SDOT、UDOT) 。 此功能在 Arm v8.2 实现中是可选的,在 Arm v8.4 实现中是必需的。
PF_ARM_V83_JSCVT_INSTRUCTIONS_AVAILABLE
44
此 Arm 处理器实现 Arm v8.3 JSCVT 指令 (例如 FJCVTZS) 。
PF_ARM_V83_LRCPC_INSTRUCTIONS_AVAILABLE
45
此 Arm 处理器实现 Arm v8.3 LRCPC 指令 (例如 LDAPR) 。 请注意,某些 Arm v8.2 CPU 可以选择性地支持 LRCPC 指令。

返回值

如果支持该功能,则返回值为非零值。

如果不支持该功能,则返回值为零。

如果 HAL 不支持检测功能,无论硬件是否支持该功能,则返回值也为零。

注解

Windows SDK (19041) 中添加了对 PF_SSSE3_INSTRUCTIONS_AVAILABLE Windows 10 PF_AVX512F_INSTRUCTIONS_AVAILABLE 的支持,版本 2004 (2020 年 5 月更新) 或更高版本支持。

Windows SDK (20348) 中添加了对 PF_ERMS_AVAILABLEPF_ARM_V82_DP_INSTRUCTIONS_AVAILABLEPF_ARM_V83_JSCVT_INSTRUCTIONS_AVAILABLE 的支持,Windows 11 和 Windows Server 2022 支持。

定义PF_ARM_V83_LRCPC_INSTRUCTIONS_AVAILABLE已添加到 Windows SDK (22621) 中,受 Windows 11 版本 22H2 支持。

要求

要求
最低受支持的客户端 Windows 2000 专业版 [桌面应用 |UWP 应用]
最低受支持的服务器 Windows 2000 Server [桌面应用 |UWP 应用]
目标平台 Windows
标头 processthreadsapi.h (包括 Windows.h)
Library Kernel32.lib
DLL Kernel32.dll

另请参阅

VBS enclave 中可用的 Vertdll API

系统信息函数