Difference between revisions of "User:Petr-akhlamov/Compatibility mode"
(→Status) |
(→Статус реализации) |
||
Line 63: | Line 63: | ||
==Status== | ==Status== | ||
− | |||
*5 сентября 2015 года в ядре [http://code.reactos.org/changelog/reactos?cs=69022 был реализован] компонент '''NtApphelpCacheControl''' (<del>{{JIRA|9914}}</del>) | *5 сентября 2015 года в ядре [http://code.reactos.org/changelog/reactos?cs=69022 был реализован] компонент '''NtApphelpCacheControl''' (<del>{{JIRA|9914}}</del>) | ||
*31 марта 2016 года [http://code.reactos.org/changelog/reactos?cs=71084 была добавлена] библиотека '''apphelp.dll''' (<del>{{JIRA|10367}}</del>) | *31 марта 2016 года [http://code.reactos.org/changelog/reactos?cs=71084 была добавлена] библиотека '''apphelp.dll''' (<del>{{JIRA|10367}}</del>) |
Revision as of 09:02, 27 December 2017
[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
In newer windows versions this is implemented as shell extension (acppage.dll). This uses the functions SetPermLayerState, SdbGetPermLayerKeys.
Now it's implemented with function which allows apply needed "layers".
Integrate apphelp
Integrate apphelp in process creation (LDR), COM, msi and Driver loading.
- CORE-10368
- 03-06-2017 Integrate apphelp in process creation was started
CORE-13284- June 27 first patch was published
- June 29 function SdbpMatchExe was implemented
- July 1 integration apphelp to process creation was implemented
- 03-06-2017 Integrate apphelp in process creation was started
Shim infrastructure
It implement base infrastructure that shims can leverage to do their work.
Provide default shims
It provide:
- List of "emulated" OS API. (
CORE-11299) - Resolution/Bitdepth/DisableThemes shims (
CORE-11927) - IgnoreChromeSandbox CORE-13409
- WindowProc exception handler CORE-12244
ShimLib
It do helper functions to register shims, and to handle common tasks.
First commit - r73461.
Shim data in links
Apply compatibility environment for lnk, and not *exe-file.
Status
- 5 сентября 2015 года в ядре был реализован компонент NtApphelpCacheControl (
CORE-9914) - 31 марта 2016 года была добавлена библиотека apphelp.dll (
CORE-10367) - 28 мая 2016 года был добавлен список "эмулируемых" версий API (
CORE-11299) - 16 декабря 2016 года была добавлена настройка разрешения экрана/глубины цвета/отключения тем (
CORE-11927) - 22 апреля 2017 года - реализация пользовательского выбора режима совместимости в виде расширения оболочки acppage
- 19 мая 2017 года была добавлена начальная реализация интеграции apphelp в создание процесса, COM, MSI и загрузку драйверов (CORE-10368)
- 29 июня 2017 года была реализована функция SdbpMatchExe, позволяющая сопоставить файлы/приложения в соответствии с параметрами (CORE-13284)
- 1 июля 2017 года:
- была полностью реализована вкладка для проводника
- было реализовано большинство необходимых функций apphelp sdb. Остальные будут реализованы когда понадобятся
- произведена интеграция apphelp в создание процесса
- 30 июля 2017 года была завершена разработка ShimLib
- 17 августа 2017 года режим совместимости был включен по-умолчанию (при этом он не может применяться на системные файлы - в system32 и WinSxS)
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]