Windows 11は、古いソフトウェアとの後方互換性を維持するために、Windows 95カーネルの機能的な一部を現在も保持しています。これはEmulateHeapとして知られる互換性修正によって実現されています。この仕組みは、それらのプログラムがWindows 95の「寛容な」性質、具体的にはメモリの割り当てと解放の処理方法に依存している場合に、レガシーアプリケーションに対してWindows 95固有のメモリ管理動作を提供します。

この画像は、レガシーアプリケーションにWindows 95固有のメモリ管理動作を提供するEmulateHeapの仕組みを説明しています。
この技術的負債の歴史はWindows 95の時代まで遡ります。例えば、Windows 3.x向けのオリジナルのSimCityには、すでに解放されたメモリを読み取ってしまう「use-after-free」バグが含まれていました。Windows 95はすぐにそのメモリを回収しなかったため、ゲームは正しく動作しました。Windows 95のベータ版でゲームが動作しなくなった際、MicrosoftはOSを修正してSimCityを検出し、そのメモリアロケータを特殊なモードで実行するようにしました。より広く言えば、他の多くのアプリケーションもこれらの特定の癖に依存していました。これに対処するため、MicrosoftはEmulateHeapを開発しました。これは、HeapCreateやLocalLockといったアプリケーションのヒープコールを、Windows 95環境を模倣する代替プログラムにリダイレクトするものです。

記事では、Windows 95の寛容なメモリ割り当てに依存していたソフトウェアの主要な例として、Windows 3.x向けのSimCityに言及しています。
技術的には、EmulateHeapはWindowsアプリケーション互換性フレームワーク内に再コンパイルされたWindows 95ヒープマネージャーのソースコードを含めることで動作します。これは、Windows 95カーネルの大部分が現代のWindows 11内に存在することを意味しますが、このコードはEmulateHeapが特定のアプリケーションに対して明示的に有効にされた場合にのみハードドライブから読み込まれます。これにより、OSがすべてのプロセスに対してバックグラウンドでWindows 95のコードを実行しないことが保証されます。しかし、このレガシーサポートは完璧ではありません。ユーザーからは、このシムを有効にした際にGTA Vice Cityなどの一部のゲームで音が消えたりクラッシュしたりしたという報告もあり、現代のアーキテクチャにおいて30年前のメモリ動作を完全に再現することの難しさを物語っています。
このレガシーコードの継続は、Microsoftの互換性戦略の核心的な原則を浮き彫りにしています。同社はWinUI 3を用いてユーザーインターフェースを近代化すると同時に、古い、そして多くの場合ミッションクリティカルなソフトウェアが動作し続けることを保証するために、これらの「隠れた」カーネルコンポーネントを維持しています。その代償として、1990年代半ば以降に基礎となるハードウェアやソフトウェアのパラダイムが大きく変化したにもかかわらず、維持されなければならない大規模な互換性インフラが必要となります。このアプローチにより、数十年前のコードを現代に持ち込む必要があっても、古いソフトウェアのユーザーにとってシームレスな移行が可能になります。
ユーザーや管理者は、Windows Assessment and Deployment Kit (ADK)の一部であるCompatibility Administratorツールを使用して、これらの修正の存在を確認できます。このツールのカスタムデータベースを検索することで、現代のオペレーティングシステムとレガシーソフトウェアの要件の間のギャップを埋めるためにMicrosoftが提供する、APIコールをインターセプトするように設計された小さなコード断片である「shim」の一つとして、EmulateHeapを見つけることができます。

ユーザーや管理者は、EmulateHeapが様々なシムの中にリストされているCompatibility Administratorツールを使用して、これらの修正の存在を確認できます。