User:Petr-akhlamov/Compatibility mode
[WIP] http://winehq.org.ru/Compatibility_mode
Mark Jassen implements this function in ReactOS.
Contents
NT 6.0 API support
- CORE-11288 - Currently ReactOS targets only Windows 2003. Developer plans to implement a mechanism for user mode applications to be able to use APIs from Windows NT 6.0 and later, while still keeping the original 2k3 environment.
- CORE-11289 - Research and document Windows compatibility settings
- CORE-11290 - Make sure the loader respects compatibility settings
- CORE-11291 - Create Windows 7 spec files for core DLLs
- CORE-11292 - Core win32 API organization
- CORE-11293 - Research kernel requirements for NT 6+ user mode APIs
Compatibility mode implementation
NtApphelpCacheControl
NtApphelpCacheControl kernel function used by AppHelp for save 200 last runed apps in RAM for more fastly search. After exit the list is saved tin the registry, and loaded back at running.
Implement apphelp sdb layer
Implement most Sdb* api's, related to reading and writing of Sdb files.
Sdb files are application compatibility databases, containing information about known bad applications, and a list of 'shims' to be applied to those applications..
As base used is http://github.com/krofna/wine/tree/master/dlls/apphelp
мини|300px|Вкладка в свойствах ярлыка
Tab in the explorer
В более новых версиях Windows реализована в виде расширения оболочки (acppage.dll). Использует функции SetPermLayerState, SdbGetPermLayerKeys.
На данный момент вкладка реализована вместе с функциональностью позволяющей применить необходимые «слои», но отключена.
Интеграция apphelp
Интеграция apphelp в создание процесса, COM, MSI и загрузку драйверов.
- CORE-10368
- 3 июня 2017 года была начата интеграция apphelp в создание процесса
- 27 июня был опубликован первый патч
- 29 июня года была реализована функция SdbpMatchExe
- 1 июля произведена интеграция apphelp в создание процесса
- 3 июня 2017 года была начата интеграция apphelp в создание процесса
Инфраструктура Shim
Реализует базовую инфраструктуру для эмуляции различных API.
Создание стандартных значений Shim
Предоставляет:
- список "эмулируемых" версий API. (
CORE-11299) - настройку разрешения экрана/глубины цвета/отключение тем (
CORE-11927) - игнорировать песочницу Chrome
- обработчик исключений WindowProc
ShimLib
Выполняет вспомогательные функции для регистрации регулировочных слоев и для обработки общих задач.
Первый коммит - r73461.
Данные Shim в ярлыках
Применение окружения совместимости не для *.exe-файла, а для ярлыка.
Status
Compatibility apps
Apps, which works in compatibility mode:
*_vista-libraries
In ReactOS sources are libraries advapi32_vista, kernel32_vista, ntoskrnl_vista and ntdll_vista. You can think, what they are for implementation Vista+ API in ReactOS, but it's mistake. Right now these are there to provide needed functions for linking Wine's dlls which project use. [4]