Windows SDK

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

提示

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

入门

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

上次更新时间:2021 年 10 月 4 日

系统需求

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 更新安装最新的推荐更新和修补程序。

示例

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

以前的 SDK 版本

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

API 亮起

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

发行说明和已知问题

适用于 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 tagServerSelection,则需要包括 wuapi.h 或 wuapi.idl。

  • 使用 Windows 10 WinRT API 包,可以将最新的Windows 运行时 API 支持添加到 .NET Framework 4.5+ 和 .NET Core 3.0+ 库和应用。 若要访问 Windows 10 WinRT API 包,请参阅 Microsoft.Windows.SDK.Contracts nuget 包

  • Printf 系列函数现在 符合 IEEE 754 舍入规则 ,当打印完全可表示的浮点数时,它将遵循通过调用对 fesetround 请求的舍入模式。 与 legacy_stdio_float_rounding.obj 链接时,可以使用旧行为。

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

  • 消息编译器 (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。 使用当前代码页 (CP_ACP) 读取不以 BOM 开头的输入文件。 为了向后兼容,如果指定了 -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 签名的文档

  • 在 VS 2019 v16.6) 中引入的 MSVC 编译器cl.exe (/Zc:preprocessor 编译时,SDK 标头已更新为解决错误。

  • 已修复:“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 不兼容

    • 解决方法是,在面向 ARM64 平台时使用早期版本的 Windows 10 SDK (内部版本 19041) ,或适用于 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”的问题

更多资源