Пакет Windows SDK

Windows SDK (10.0.22621) для Windows 11 версии 22H2 предоставляет последние заголовки, библиотеки, метаданные и средства для создания приложений Windows. Используйте этот пакет SDK для создания приложений универсальная платформа Windows (UWP) и Win32 для Windows 11 версии 22H2 и предыдущих выпусков Windows.

Совет

Пакет SDK для приложений Windows
Windows App SDK предоставляет единый набор API и средств, которые отделены от ОС и выпускаются разработчикам через пакеты NuGet. Эти API-интерфейсы и средства могут согласованно использоваться любым классическим приложением в Windows 11 и нижнем уровне для Windows 10, версия 1809.

Начало работы

Пакет Windows SDK можно получить двумя способами: установить его на этой странице, щелкнув ссылку для скачивания или выбрав "пакет SDK Windows 11 (10.0.22621.0)" в дополнительных компонентах установщика Visual Studio 2022. Перед установкой этого пакета SDK:

Последнее обновление: май 2023 г.

Требования к системе

Пакет Windows SDK имеет следующие минимальные требования к системе:

Поддерживаемые операционные системы

  • Windows 10 версии 1507 или выше: Home, Professional, Education и Enterprise (LTSB и S не поддерживаются для UWP)
  • Windows Server 2022, Windows Server 2019, Windows Server 2016 и Windows Server 2012 R2 (только командная строка)
  • Windows 8.1
  • Windows 7 с пакетом обновления 1 (SP1)

(Не все средства поддерживаются в более ранних операционных системах)

Требования к оборудованию

  • Процессор с тактовой частотой 1,6 ГГц или большей
  • 1 ГБ ОЗУ
  • 4 ГБ доступного пространства на жестком диске

Дополнительные требования к пакету SDK

Для установки в Windows 8.1 и более ранних операционных системах требуется обновление для универсальной среды выполнения C в Windows. Чтобы выполнить установку с помощью клиентский компонент Центра обновления Windows, перед установкой windows SDK убедитесь, что установлены последние рекомендуемые обновления и исправления из Центра обновления Майкрософт.

Примеры

Примеры приложений для Windows теперь доступны на сайте GitHub. Вы можете просмотреть код на GitHub, клонировать личную копию репозитория из Git или скачать zip-архив всех примеров. Мы приветствуем отзывы, поэтому не стесняйтесь открывать проблему в репозитории, если у вас есть проблема или вопрос. Эти примеры предназначены для работы на настольных, мобильных и будущих устройствах, поддерживающих универсальная платформа Windows (UWP).

Предыдущие версии пакета SDK

Ранее выпущенные пакеты SDK и эмуляторы, включая сведения об обновлении, можно найти на странице архива.

API Light Up

При использовании новых API рекомендуется создавать адаптивные приложения, чтобы оно правильно выполнялось на самых широких устройствах Windows. Адаптивное приложение "загорается" новыми функциями там, где устройства и версия Windows поддерживают их, но в противном случае предлагает только те функции, которые доступны в обнаруженной версии платформы. Дополнительные сведения о реализации см. в статье Об адаптивном коде версии.

Заметки о выпуске и известные проблемы

Windows 11, версия 22H2, сборка 10.0.22621.1778

Обновление 10.0.22621.1778. К выделенным функциям относятся:

  • Интерфейсы API WindowTabManager позволяют приложениям с интерфейсами с вкладками предоставлять сведения об открытых вкладках в оболочку Windows.
  • Обновления к API HumanPresence, чтобы повысить удобство использования и добавить новые параметры для датчиков, поддерживающих возможности присутствия человека.
  • Интерфейсы API RemoteDesktop позволяют приложениям переключаться между удаленным и локальным рабочим столом.
Windows SDK для Windows 11 версии 22H2
  • Обновление обслуживания 10.0.22621.755. Включает поддержку ARM64 для выпуска VS 17.4
пакет SDK для Windows 10 версии 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.

  • Пакет API WinRT Windows 10 позволяет добавлять последнюю поддержку API среда выполнения Windows в библиотеки и приложения платформа .NET Framework 4.5+ и .NET Core 3.0 и более поздней версии. Чтобы получить доступ к пакету API Windows 10 WinRT, ознакомьтесь с пакетом nuget Microsoft.Windows.SDK.Contracts.

  • Семейство функций printf теперь соответствует правилам округления IEEE 754 при печати точно представляемых чисел с плавающей запятой и учитывает режим округления, запрошенный с помощью вызовов fesetround. Устаревшее поведение доступно при связывании с legacy_stdio_float_rounding.obj.

  • Комплект сертификации приложений для Windows. В список поддерживаемых API в комплекте сертификации приложений и Магазине Windows было добавлено несколько новых API. Если в списке поддерживаемых API отображаются серым или отключенным в Visual Studio, вы можете внести небольшое изменение в исходный файл, чтобы получить к ним доступ. Дополнительные сведения см. в этой известной проблеме. Дополнительные обновления тестов.

  • Обновления компилятора сообщений (mc.exe):

    • Теперь обнаруживает метку порядка байтов в Юникоде (BOM) в MC-файлах. Если MC-файл начинается с UTF-8 BOM, он будет считываться как файл UTF-8. В противном случае, если он начинается с UTF-16LE BOM, он будет считываться как файл UTF-16LE. Если указан параметр -u, он будет считываться как файл UTF-16LE. В противном случае он будет считываться с помощью текущей кодовой страницы (CP_ACP).
    • Теперь позволяет избежать проблем с одним правилом определения (ODR) во вспомогательных функциях WINDOWS, созданных MC/C++ etW, вызванных конфликтующими макросами конфигурации (например, когда два CPP-файла с конфликтующими определениями MCGEN_EVENTWRITETRANSFER связаны в один двоичный файл, вспомогательные функции ETW, созданные MC, теперь будут учитывать определение MCGEN_EVENTWRITETRANSFER в каждом CPP-файле, а не произвольно выбирать один или другой).
  • Обновления препроцессора трассировки Windows (tracewpp.exe):

    • Поддерживает входные файлы Юникода (.ini, TPL и исходный код). Входные файлы, начиная с метки порядка байтов UTF-8 или UTF-16, будут считываться как Юникод. Входные файлы, которые не начинаются с BOM, будут считываться с помощью текущей кодовой страницы (CP_ACP). Для обратной совместимости, если указан параметр командной строки -UnicodeIgnore, файлы, начиная с UTF-16 BOM, будут рассматриваться как пустые.
    • Поддерживает выходные файлы Юникода (TMH). По умолчанию выходные файлы будут кодироваться с помощью текущей кодовой страницы (CP_ACP). Используйте параметры командной строки -cp:UTF-8 или -cp:UTF-16 для создания выходных файлов Юникода.
    • Изменение поведения: tracewpp теперь преобразует весь входной текст в Юникод, выполняет обработку в Юникоде и преобразует выходной текст в указанную кодировку вывода. Более ранние версии tracewpp избегали преобразований в Юникоде и выполняли обработку текста, предполагая однобайтовый набор символов. Это может привести к изменению поведения в случаях, когда входные файлы не соответствуют текущей кодовой странице. В случаях, когда это проблема, рассмотрите возможность преобразования входных файлов в UTF-8 (с BOM) и (или) с помощью параметра командной строки -cp:UTF-8, чтобы избежать неоднозначности кодирования.
  • TraceLoggingProvider.h обновляется:

    • Позволяет избежать проблем с одним правилом определения (ODR), вызванных конфликтующими макросами конфигурации (например, если два CPP-файла с конфликтующими определениями TLG_EVENT_WRITE_TRANSFER связаны в один двоичный файл, вспомогательные функции TraceLoggingProvider.h теперь будут учитывать определение TLG_EVENT_WRITE_TRANSFER в каждом CPP-файле, а не произвольно выбирать одно или другое).
    • В коде C++ макрос TraceLoggingWrite был обновлен, чтобы обеспечить более эффективное совместное использование кода между аналогичными событиями с помощью вариативных шаблонов.
  • Подписывание приложений. Подписывание Device Guard — это функция Device Guard, доступная в Microsoft Store для бизнеса и образовательных учреждениях, которая позволяет предприятиям гарантировать, что каждое приложение поставляется из надежного источника. См. документацию по подписи Device Guard.

  • Заголовки пакета SDK были обновлены для устранения ошибок при компиляции с помощью стандартного препроцессора C в компиляторе MSVC cl.exe (/Zc:preprocessor, представленный в VS 2019 версии 16.6).

  • Исправлено: "GdiplusTypes.h не компилируется с NOMINMAX". См. раздел Отзывы о Visual Studio.

  • При сборке с /std:c11 или /std:c17 вы получаете:

    • C99 tgmath.h
    • C11 static_assert в assert.h
    • C11 stdalign.h
    • C11 stdnoreturn.h
  • Clang/LLVM для Windows версии 11, предназначенная для ARM64, несовместима с последней версией winnt.h

    • В качестве обходного решения используйте предыдущую версию пакета SDK для Windows 10 (сборка 19041) или clang/LLVM для Windows версии 10 для платформ ARM64.
  • DirectXMath (включая версию 3.16 в этом выпуске) несовместим с Clang/LLVM для Windows в ARM64.

  • Вариант некоторых файлов заголовков был изменен, чтобы нормализовать их для файловых систем с учетом регистра:

    • OAIdl.h, ObjIdl.h, ObjIdlbase.h, OCIdl.h, Ole2.h, OleAuto.h и OleCtl.h были сделаны в нижнем регистре.
    • Для сборок Clang/LLVM для Windows, чтобы поддерживать как более старую версию, так и последнюю версию пакета SDK для Windows 10 без предупреждений, добавьте -Wno-nonportable-system-include-path в CLI или следующие #pragma в источнике:

    #ifdef __clang__

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

    #endif

пакет SDK для Windows 10, обновление обслуживания версии 2004 (выпущено 16.12.2020)

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

  • Устранены непредсказуемые и трудные для диагностики сбои при связывании общих библиотек и собственных библиотек ОС (например, onecoreuap.lib и kernel32.lib)
  • Устранена проблема, из-за которой AppVerifier не работал
  • Устранена проблема, которая приводила к сбою WACK с сообщением "Не удалось включить HighVersionLie"

Дополнительные ресурсы