ТехноСводка

Софт

В Windows 11 сохранился менеджер памяти из Windows 95

В Windows 11 по-прежнему есть исправление совместимости EmulateHeap, которое подключает старым программам менеджер кучи из Windows 95.

Механизм появился из-за проблем с совместимостью, начавшихся с SimCity. В игре была ошибка use-after-free: она читала память после освобождения. В Windows 3.x это работало, а в бета-версиях Windows 95 — нет, поэтому Microsoft добавила особый режим менеджера памяти для этой игры.

Похожие зависимости были и у других программ. Как объяснял инженер Microsoft Рэймонд Чен, компания взяла исходный код Windows 95 Heap Manager, перекомпилировала его и встроила в инфраструктуру совместимости. EmulateHeap перенаправляет вызовы API кучи (HeapCreate, LocalLock, GlobalReAlloc) на реализации, воспроизводящие поведение Windows 95. Код загружается только если исправление включено для конкретного приложения, а сама Windows 95 в фоне не запускается.

Исправление можно найти в утилите Compatibility Administrator из Windows ADK. После выхода Windows 11 22H2 пользователи сообщали, что при включённом EmulateHeap в GTA: Vice City пропадал звук, а Need for Speed: Most Wanted вылетала.

  • Механизм найден и в Windows 11 26H2
  • Использует перекомпилированный код Heap Manager из Windows 95

Источники

Текст подготовлен автоматически по материалам источников и может содержать неточности.