Windows SDK

适用于 Windows 11 的 Windows SDK (10.0.22621) 提供用于生成 Windows 应用程序的最新标头、库、元数据和工具。 使用此 SDK 为 Windows 11 版本 23H2 和早期 Windows 版本生成通用 Windows 平台 (UWP) 和 Win32 应用程序。

提示

Windows 应用 SDK
Windows 应用 SDK提供了一组统一的 API 和工具,这些 API 和工具与 OS 分离,并通过 NuGet 包发布给开发人员。 这些 API 和工具可由Windows 11和下层的任何桌面应用以一致的方式使用,以Windows 10 版本 1809。

入门

可以通过两种方式获取Windows SDK:通过选择下载链接从此页面安装它,或在 Visual Studio 2022 安装程序的可选组件中选择“Windows 11 SDK (10.0.22621.0) ”。 安装此 SDK 之前:

上次更新时间:2024 年 2 月

系统要求

Windows SDK具有以下最低系统要求:

支持的操作系统

  • Windows 10版本 1507 或更高版本:UWP) 不支持家庭版、专业版、教育版和企业版 (LTSB 和 S
  • Windows Server 2022、Windows Server 2019、Windows Server 2016 和 Windows Server 2012 R2 (命令行仅)
  • Windows 8.1
  • Windows 7 SP1

(并非所有工具在早期操作系统上都受支持)

硬件要求

  • 1.6 GHz 或更快的处理器
  • 1 GB RAM
  • 4 GB 可用硬盘空间

其他 SDK 要求

在 Windows 8.1 和早期操作系统上安装需要更新 Windows 中的通用 C 运行时。 若要通过Windows 更新进行安装,请确保在安装Windows SDK之前安装 Microsoft 更新中推荐的最新更新和修补程序。

示例

Windows 应用示例现已通过 GitHub 提供。 可以在 GitHub 上浏览代码、从 Git 克隆存储库的个人副本,或 下载 所有示例的压缩存档。 我们欢迎反馈,因此,如果有问题或疑问,请随时在存储库中提出问题。 这些示例设计为在支持 通用 Windows 平台 (UWP) 的桌面、移动设备和将来的设备上运行。

以前的 SDK 版本

可在 存档页上找到以前发布的 SDK 和模拟器,包括更新详细信息。

API 亮起

使用新 API 时,请考虑将应用编写为自适应应用,使其在最广泛的 Windows 设备上正常运行。 无论设备和 Windows 版本支持新功能,自适应应用都“亮起”,但除此之外,仅提供检测到的平台版本上可用的功能。 有关实现的详细信息,请参阅 版本自适应代码一文

发行说明和已知问题

Windows 11,内部版本 10.0.22621.3235 (发布日期:2024/2/29)

服务更新 10.0.22621.3235。

Windows 11,内部版本 10.0.22621.2428 (于 2023/10/24 发布)

服务更新 10.0.22621.2428。

Windows 11,版本 22H2,内部版本 10.0.22621.1778

更新 10.0.22621.1778。 突出显示的功能包括:

  • WindowTabManager API 允许具有选项卡式接口的应用程序向 Windows shell 提供有关打开的选项卡的信息。
  • 汇报 HumanPresence API 以提高易用性,并为支持人类存在功能的传感器添加新设置。
  • RemoteDesktop API 允许应用程序在远程桌面和本地桌面之间切换。
适用于 Windows 11 版本 22H2 的Windows SDK
  • 服务更新 10.0.22621.755。 包括对 VS 17.4 版本的 ARM64 支持
Windows 10 SDK 版本 2104
  • 删除了 api-ms-win-net-isolation-l1-1-0.lib。 针对 api-ms-win-net-isolation-l1-1-0.lib 进行链接的应用可以切换 t OneCoreUAP.lib 作为替代项。

  • 删除了 irprops.lib。 针对 irprops.lib 链接的应用可以切换到 bthprops.lib 作为替代项。

  • 将 ENUM tagServerSelection 从 wuapicommon.h 移动到 wupai.h 并删除了 标头。 如果要使用 ENUM 标记ServerSelection,则需要包含 wuapi.h 或 wuapi.idl。

  • Windows 10 WinRT API 包允许向 .NET Framework 4.5 及更高版本和 .NET Core 3.0+ 库和应用添加最新的 Windows 运行时 API 支持。 若要访问 Windows 10 WinRT API 包,请参阅 Microsoft.Windows.SDK.Contracts nuget 包

  • printf 系列函数现在在打印精确可表示的浮点数时 符合 IEEE 754 舍入规则 ,并将遵循通过调用 fesetround 请求的舍入模式。 与 legacy_stdio_float_rounding.obj 链接时,旧行为可用。

  • Windows 应用认证工具包。 多个新 API 已添加到应用认证工具包和 Windows 应用商店中的“支持的 API”列表中。 如果受支持列表中的 API 在 Visual Studio 中显示为灰显或处于禁用状态,则可以对源文件进行少量更改以访问它们。 有关详细信息,请参阅此 已知问题查找测试的更多更新

  • 消息编译器 (mc.exe) 更新:

    • 现在,在 .mc 文件中检测 BOM) (Unicode 字节顺序标记。 如果 .mc 文件以 UTF-8 BOM 开头,它将作为 UTF-8 文件读取。 否则,如果它以 UTF-16LE BOM 开头,它将读取为 UTF-16LE 文件。 如果指定了 -u 参数,则会将其读取为 UTF-16LE 文件。 否则,将使用当前代码页 (CP_ACP) 读取它。
    • 现在,可避免 MC 生成的 C/C++ ETW 帮助程序中由于配置宏 (冲突而导致的单定义规则 (ODR) 问题。 当两个具有MCGEN_EVENTWRITETRANSFER定义冲突的.cpp文件链接到同一个二进制文件时,MC 生成的 ETW 帮助程序现在将遵循每个.cpp文件中MCGEN_EVENTWRITETRANSFER的定义,而不是任意选取一个或另一个) 。
  • Windows 跟踪预处理器 (tracewpp.exe) 更新:

    • 支持 Unicode 输入 (.ini、.tpl 和源代码) 文件。 以 UTF-8 或 UTF-16 字节顺序标记 (BOM) 开头的输入文件将读取为 Unicode。 不使用 BOM 开头的输入文件将使用当前代码页 (CP_ACP) 读取。 为了向后兼容,如果指定了 -UnicodeIgnore 命令行参数,则以 UTF-16 BOM 开头的文件将被视为空文件。
    • 支持 unicode 输出 (.tmh) 文件。 默认情况下,将使用当前代码页 (CP_ACP) 对输出文件进行编码。 使用命令行参数 -cp:UTF-8 或 -cp:UTF-16 生成 Unicode 输出文件。
    • 行为更改:tracewpp 现在将所有输入文本转换为 Unicode,在 Unicode 中执行处理,并将输出文本转换为指定的输出编码。 早期版本的 tracewpp 避免了 Unicode 转换,并执行了假定单字节字符集的文本处理。 如果输入文件不符合当前代码页,这可能会导致行为更改。 如果出现此问题,请考虑使用 BOM) 和/或使用 -cp:UTF-8 命令行参数将输入文件转换为 UTF-8 (,以避免编码不明确。
  • TraceLoggingProvider.h 更新:

    • 避免了单定义规则 (ODR) 由于配置宏 (冲突而导致的问题,例如,当两个具有TLG_EVENT_WRITE_TRANSFER定义冲突的.cpp文件链接到同一个二进制文件时,TraceLoggingProvider.h 帮助程序现在将遵循每个.cpp文件中TLG_EVENT_WRITE_TRANSFER的定义,而不是任意选取一个或另一个) 。
    • 在 C++ 代码中,TraceLoggingWrite 宏已更新,以便使用可变参数模板在类似事件之间更好地共享代码。
  • 对应用进行签名。 Device Guard 签名是 适用于企业的 Microsoft Store 和教育版中提供的 Device Guard 功能,它允许企业保证每个应用都来自受信任的来源。 请参阅 有关 Device Guard 签名的文档

  • SDK 标头已更新,以解决在 VS 2019 v16.6) 中引入的 MSVC 编译器 cl.exe (/Zc:preprocessor 中使用符合标准的 C 预处理器进行编译时出现的错误。

  • 已修复:“GdiplusTypes.h 不使用 NOMINMAX 进行编译”。 请参阅 Visual Studio 反馈

  • 使用 /std:c11 或 /std:c17 生成时,现在可获得:

    • C99 tgmath.h
    • assert.h 中的 C11 static_assert
    • C11 stdalign.h
    • C11 stdnoreturn.h
  • 面向 ARM64 的适用于 Windows v11 的 Clang/LLVM 与最新的 winnt.h 不兼容

    • 解决方法是使用以前版本的 Windows 10 SDK (内部版本 19041) ,或者在面向 ARM64 平台时使用适用于 Windows v10 的 clang/LLVM
  • DirectXMath (包括此版本中的版本 3.16) 与 ARM64 上的 Windows 的 Clang/LLVM 不兼容。

  • 更改了某些头文件的情况,以便针对区分大小写的文件系统规范化它们:

    • OAIdl.h、ObjIdl.h、ObjIdlbase.h、OCIdl.h、Ole2.h、OleAuto.h 和 OleCtl.h 均设为小写。
    • 对于适用于 Windows 的 Clang/LLVM 内部版本,若要同时支持较旧版本和最新的 Windows 10 SDK 且没有警告,请将 添加到 -Wno-nonportable-system-include-path CLI,或在源中添加以下 #pragma:

    #ifdef __clang__

    #pragma clang diagnostic ignored "-Wnonportable-system-include-path"

    #endif

Windows 10 SDK 版本 2004 服务更新 (2020/12/16)

此版本包含以下文件。 如果遇到这些问题,建议尽快更新 SDK 版本以避免这些问题:

  • 解决了链接伞式库和本机 OS 库(例如 onecoreuap.lib 和 kernel32.lib) (时无法预测且难以诊断的崩溃)
  • 解决了阻止 AppVerifier 工作的问题
  • 解决了导致 WACK 失败并出现“任务无法启用 HighVersionLie”的问题

更多资源