Windows SDK

Windows 11 用 Windows SDK (10.0.22000) は、Windows アプリを構築するための最新のヘッダー、ライブラリ、メタデータ、ツールを提供します。この SDK を使用して、Windows 11 やそれ以前の Windows リリースに対応するユニバーサル Windows プラットフォーム (UWP) と Win32 のアプリケーションを構築することができます。

はじめに

Windows SDK は 2 通りの方法で入手できます。[ダウンロード] リンクを選択してこのページからインストールするか、Visual Studio 2019 インストーラーのオプション コンポーネントで [Windows 11 SDK (10.0.22000)] を選択します。

SDK をインストールする前に:

  1. すべてのシステム要件を確認してください。
  2. インストールの前に Visual Studio を終了してください。
  3. リリース ノートと既知の問題を確認してください。

システム要件

Windows SDK の最小システム要件は次のとおりです。

サポートされているオペレーティング システム

  • ユニバーサル Windows プラットフォーム (UWP) アプリの開発
    • Windows 10 バージョン 1507 以降:Home、Professional、Education、Enterprise (LTSB および S はサポートされません)
    • Windows Server 2019、Windows Server 2016、Windows Server 2012 R2 (コマンド ラインのみ)
  • Win32 アプリの開発
    • Windows 10 バージョン 1507 以降
    • 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 以前のオペレーティング システムにインストールするには、KB2999226 が必要です。Windows Update を通じてインストールするには、Windows SDK をインストールする前に、推奨される最新の更新プログラムとパッチを Microsoft Update から必ずインストールしてください。

新着情報

Windows SDK for Windows 11 を使用すると、お客様のアプリを最新の Windows OS 向けに更新することができます。詳しくは、Windows 11 の新着情報をご覧ください

Windows 11 で導入された新しい API については、Windows 11 ビルド 22000 の新しい API をご覧ください。

x64 アプリで読み込まれるシステム コードがネイティブ スピードで動作するよう、Windows 11 on ARM オペレーティング システムのバイナリ自体を ARM64EC で再構築することができます。ARM64EC を利用することで、ARM をサポートしていない依存関係やプラグインがあっても、アプリを ARM 上でネイティブ スピードで動作するように段階的に移行することができます。お知らせをお読みください

サンプル

GitHub から Windows のサンプル アプリを入手できるようになりました。必要なコードを GitHub で探すことも、Git からリポジトリの個人用コピーを作成することもできます。また、すべてのサンプルを zip 圧縮したアーカイブをダウンロードすることもできます。フィードバックをお待ちしておりますので、問題点やご質問がある場合は、リポジトリ内で新しい問題点をご提示ください。これらのサンプルは、ユニバーサル Windows プラットフォーム (UWP) をサポートするデスクトップ、モバイル、今後のデバイスで動作するように設計されています。

以前の SDK のバージョン

以前にリリースされた SDK とエミュレーター、および更新プログラムの詳細については、アーカイブ ページをご覧ください。

API の使用

新しい API を使用するときは、できるだけ多くの種類の Windows デバイスでアプリが正しく動作するように、アダプティブなアプリを記述することを検討してください。アダプティブ アプリでは、デバイスと Windows バージョンでサポートされている場合は新しい機能で利便性が向上しますが、サポートされていない場合は検出されたプラットフォーム バージョンで使用できる機能のみが提供されます。実装の詳細については、バージョン アダプティブ コードに関する記事をご覧ください。

リリース ノートと既知の問題

Windows 10 SDK、バージョン 2104

  • api-ms-win-net-isolation-l1-1-0.lib を削除しました。api-ms-win-net-isolation-l1-1-0.lib にリンクしていたアプリは、代わりに OneCoreUAP に切り替えることができます。
  • irprops を削除しました。irprops.lib にリンクしていたアプリは、代わりに bthprops.lib に切り替えることができます。
  • ENUM tagServerSelection を wuapicommon.h から wupai.h に移動し、ヘッダーを削除しました。ENUM tagServerSelection を使用する場合は、wuapi.h または wuapi.idl を含める必要があります。
  • Windows 10 WinRT API Pack を使用すると、最新の Windows Runtime API サポートを .NET Framework 4.5+ および .NET Core 3.0+ のライブラリとアプリに追加できます。Windows 10 WinRT API Pack にアクセスするには、Microsoft.Windows.SDK.Contracts NuGet パッケージに関するページをご覧ください。
  • 関数の printif ファミリが正確に表現可能な浮動小数点数を出力するときに IEEE 754 丸め規則に準拠するようになりました。また、fesetround への呼び出しによって要求される丸めモードに従うようになります。レガシ動作は、legacy_stdio_float_rounding.obj とリンクすると使用できます。
  • Windows アプリ認定キット。アプリ認定キットおよび Windows ストアの「サポートされている API」の一覧に新しい API がいくつか追加されました。サポート リストには記載されているが、Visual Studio で淡色表示されているか無効になっている API がある場合は、ソース ファイルに少し変更を加えることでアクセスできます。詳細については、こちらの既知の問題をご覧ください。テストの更新プログラムをさらにご覧ください
  • メッセージ コンパイラ (mc.exe) の更新:
    • .mc ファイルの Unicode バイト オーダー マーク (BOM) が検出されるようになりました。.mc ファイルが UTF-8 BOM で始まる場合は、UTF-8 ファイルとして読み取られます。それ以外の場合、たとえば UTF-16LE BOM で始まる場合は、UTF-16LE ファイルとして読み取られます。-u パラメーターが指定されている場合は、UTF-16LE ファイルとして読み取られます。それ以外の場合は、現在のコード ページ (CP_ACP) を使用して読み取られます。
    • 構成マクロの競合によって引き起こされる MC 生成 C/C++ ETW ヘルパーでの One-Definition Rule (ODR) の問題が回避されるようになりました (たとえば、競合している MCGEN_EVENTWRITETRANSFER の定義を持つ 2 つの .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) を使用してエンコードされます。Unicode 出力ファイルを生成するには、コマンドライン パラメーター -cp:UTF-8 または -cp:UTF-16 を使用します。
    • 動作の変更: tracewpp は、すべての入力テキストを Unicode に変換し、Unicode で処理を実行し、出力テキストを指定された出力エンコードに変換するようになりました。以前のバージョンの tracewpp は、Unicode 変換を回避し、シングルバイト文字セットを想定してテキスト処理を実行していました。これにより、入力ファイルが現在のコード ページに準拠していない場合の動作が変わる可能性があります。これが問題になる場合は、エンコードのあいまいさを避けるために、入力ファイルを UTF-8 (BOM) に変換するか、-cp:UTF-8 コマンドライン パラメーターを使用して変換することを検討してください。
  • TraceLoggingProvider.h の更新:
    • 構成マクロの競合によって引き起こされる One-Definition Rule (ODR) の問題が回避されるようになりました (たとえば、競合している TLG_EVENT_WRITE_TRANSFER の定義を持つ 2 つの .cpp ファイルが同じバイナリにリンクされている場合、TraceLoggingProvider.h ヘルパーは、任意に定義を選択するのではなく、各 .cpp ファイル内の TLG_EVENT_WRITE_TRANSFER の定義を優先します。)
    • C++ コードでは、可変個引数テンプレートを使用して類似イベント間でコードを共有できるように、TraceLoggingWrite マクロが更新されました。
  • アプリの署名。Device Guard 署名は、ビジネスおよび教育向けの Microsoft Store で利用できる Device Guard 機能であり、企業はすべてのアプリが信頼できる発行元からのものであることを保証できます。Device Guard の署名についてのドキュメントをご覧ください。
  • MSVC コンパイラー cl.exe の標準に準拠した C プリプロセッサー (VS 2019 v16.6 で導入された /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 用の Clang/LLVM for Windows v11 に、最新の winnt.h との互換性がない
    • 回避策として、ターゲットが ARM64 プラットフォームである場合は、以前のバージョンの Windows 10 SDK (ビルド 19041) か clang/LLVM for Windows v10 を使用してください
  • ARM64 では、DirectXMath (今回のリリースのバージョン 3.16 を含む) に Clang/LLVM for Windows との互換性がない。
  • 大文字と小文字を区別するファイル システムに合わせて正規化するために、一部のヘッダー ファイルの大文字と小文字が変更されました。
    • OAIdl.h、ObjIdl.h、ObjIdlbase.h、OCIdl.h、Ole2.h、OleAuto.h、OleCtl.h は、すべて小文字に変更されました。
    • Clang/LLVM for Windows でのビルドの場合、古いバージョンと最新の Windows 10 SDK の両方を警告を出さずにサポートするために、CLI に `-Wno-nonportable-system-include-path` を追加するか、ソース コードに次の #pragma を追加してください。

      #ifdef __clang__
      #pragma clang diagnostic ignored "-Wnonportable-system-include-path"
      #endif

Windows 10 SDK バージョン 2004 サービス更新プログラム (2020/12/16 リリース)

    このリリースには次のファイルが含まれています。これらの問題が発生した場合に回避できるよう、できるだけ早く SDK のバージョンを更新することをお勧めします。
  • 包括的ライブラリとネイティブ OS ライブラリ (たとえば、onecoreuap と kernel32.dll) の両方をリンクするときに、予期できず、クラッシュを診断しにくい問題を解決しました
  • AppVerifier が動作しなくなっていた問題を解決しました
  • "タスクは HighVersionLie を有効にできませんでした" という、WACK が失敗する原因となっていた問題を解決しました

フィードバックの提供

既知の問題については、winapi-sdk のQ&A をご覧ください。

開発者向けの新しい機能の要求については、[開発者プラットフォーム/API] カテゴリの下にあるフィードバック Hub アプリから送信してください。

その他のリソース

ダウンロードとツール

Visual Studio と Windows 10 開発ツールの最新エディションを入手できます。

詳細情報

SDK アーカイブ

Windows SDK およびその他のツールの以前のリリースを検索できます。

アーカイブを見る

Windows ブログ

Microsoft ブログにサブスクライブすることにより、最新の SDK フライトを確認できます。

SDK フライト ニュースの取得

Windows ライフサイクルのファクト シート

Windows リリースの更新プログラムとサポート終了の主な日付をご確認ください。

ファクト シートを確認する