【VS2026】_WIN32_WINNT 宏版本列表

📅 2026/7/11 8:51:58 👁️ 阅读次数 📝 编程学习
【VS2026】_WIN32_WINNT 宏版本列表

_WIN32_WINNT 完整版本对照表

_WIN32_WINNT用于指定目标 Windows 系统最低版本,头文件<sdkddkver.h>定义,编译时定义该宏会启用对应系统API、禁用低版本不兼容接口。

一、数值与系统对应(从旧到新)

_WIN32_WINNT 宏值十进制对应操作系统备注
_WIN32_WINNT_WIN2K0x0500Windows 2000最低NT5系列
_WIN32_WINNT_WINXP0x0501Windows XP / Windows Server 2003XP 通用
_WIN32_WINNT_WS030x0502Windows Server 2003 / Windows XP x6464位XP、2003服务器
_WIN32_WINNT_VISTA0x0600Windows Vista / Server 2008NT6.0
_WIN32_WINNT_WIN70x0601Windows 7 / Server 2008 R2NT6.1
_WIN32_WINNT_WIN80x0602Windows 8 / Server 2012NT6.2
_WIN32_WINNT_WINBLUE0x0603Windows 8.1 / Server 2012 R2NT6.3
_WIN32_WINNT_WIN100x0A00Windows 10 / Windows 11NT10,所有Win10/11共用此基础值

二、Win10/Win11 细分版本(搭配 NTDDI_VERSION 使用)

_WIN32_WINNT_WIN10 (0x0A00)仅代表NT10大版本,区分Win10不同功能更新、Win11 需要NTDDI_VERSION

// Win10 各版本 NTDDINTDDI_WIN10_TH2=0x0A000002// 1511NTDDI_WIN10_RS1=0x0A000003// 1607NTDDI_WIN10_RS2=0x0A000004// 1703NTDDI_WIN10_RS3=0x0A000005// 1709NTDDI_WIN10_RS4=0x0A000006// 1803NTDDI_WIN10_RS5=0x0A000007// 1809NTDDI_WIN10_19H1=0x0A000008// 1903NTDDI_WIN10_VB=0x0A000009// 1909NTDDI_WIN10_20H1=0x0A00000A// 2004/20H2NTDDI_WIN10_21H2=0x0A00000C// Win10 21H2NTDDI_WIN11=0x0A00000D// Win11 21H2NTDDI_WIN11_22H2=0x0A00000E// Win11 22H2NTDDI_WIN11_23H2=0x0A00000F// Win11 23H2NTDDI_WIN11_24H2=0x0A000010// Win11 24H2

三、使用示例

1. 编译目标 Windows 7

#define_WIN32_WINNT_WIN32_WINNT_WIN7#include<windows.h>

等价直接写数值:

#define_WIN32_WINNT0x0601

2. 目标 Win10/Win11

#define_WIN32_WINNT_WIN32_WINNT_WIN10#defineNTDDI_VERSIONNTDDI_WIN11_22H2#include<windows.h>

四、配套相关宏说明

  1. WINVER:和_WIN32_WINNT保持一致,控制老版本UI接口,建议同步定义
    #defineWINVER_WIN32_WINNT
  2. _WIN32_IE:控制IE/Shell API版本,独立于系统版本
  3. NTDDI_VERSION:细分子系统更新版本,高精度API(如新版DirectX、窗口、进程接口)依赖此宏

五、常见坑

  1. 宏必须放在所有Windows头文件最前面定义,否则不生效;
  2. 若定义版本高于运行系统,调用新版API会运行时崩溃(需动态LoadLibrary兼容);
  3. VS新版SDK默认目标Win10/11,老项目默认0x0601(Win7);
  4. 不存在独立_WIN32_WINNT_WIN11,Win11 大版本仍为0x0A00,靠NTDDI区分。