Difference between revisions of "User:Petr-akhlamov/Compatibility mode"
(→Providing default shims) |
(→Status) |
||
Line 75: | Line 75: | ||
*17-08-2017 Compatibility mode [http://github.com/reactos/reactos/commit/9d8fe6f2381db5c877cc9d1858fae209bb77eb97 was enabled] by default (but, it won't be able to be applied to system files - in '''system32''' and '''WinSxS''' folders) | *17-08-2017 Compatibility mode [http://github.com/reactos/reactos/commit/9d8fe6f2381db5c877cc9d1858fae209bb77eb97 was enabled] by default (but, it won't be able to be applied to system files - in '''system32''' and '''WinSxS''' folders) | ||
*10-01-2018 [http://github.com/reactos/reactos/commit/63a3a2cbb8d67c1afe8b283880e75e0e5b5bed01 Beginnings] of support for [http://github.com/reactos/reactos/pull/273 NT6 applications] was implemented (details in [http://www.reactos.org/archives/public/ros-general/2018-January/002984.html mailing list]) (Colin Finck) | *10-01-2018 [http://github.com/reactos/reactos/commit/63a3a2cbb8d67c1afe8b283880e75e0e5b5bed01 Beginnings] of support for [http://github.com/reactos/reactos/pull/273 NT6 applications] was implemented (details in [http://www.reactos.org/archives/public/ros-general/2018-January/002984.html mailing list]) (Colin Finck) | ||
+ | *24-02-2018 ''VersionLie'' for '''WIN8''' and '''WIN81''' was implemented[http://github.com/reactos/reactos/commit/9b55e647fae5c899f22699a6f432ae44e2c11146][http://github.com/reactos/reactos/commit/2ffc6846996748c7d81bd569ba44ffd8bf858bc4] | ||
==Compatibility apps== | ==Compatibility apps== |
Revision as of 13:04, 28 February 2018
Mark Jansen implements this function in ReactOS.
Contents
NT 6.0 API support
- CORE-11288 - Currently ReactOS targets only Windows Server 2003 SP2. 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 is a kernel function used by apphelp.dll to save 200 last run apps in RAM for faster search. After logging out, the list is saved in the registry, and loaded back when logging on.
Implementing apphelp sdb layer
Implements most Sdb* API's that is 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.
This is used as base: http://github.com/krofna/wine/tree/master/dlls/apphelp
Tab in the explorer
In newer Windows versions, this is implemented as shell extension (acppage.dll). It uses SetPermLayerState and SdbGetPermLayerKeys functions.
Now it's implemented with a function which allows applying needed "layers".
Integrating apphelp
Apphelp is integrated in process creation (LDR), COM, MSI and driver loading.
- CORE-10368
- 03-06-2017 Integration of apphelp in process creation was started
CORE-13284- June 27 first patch was published
- June 29 SdbpMatchExe function was implemented
- July 1 integration of apphelp to process creation was implemented
- 03-06-2017 Integration of apphelp in process creation was started
Shim infrastructure
It implements base infrastructure, so that shims can leverage to do their work.
Providing default shims
It provides:
- List of "emulated" OS APIs (VersionLie) (
CORE-11299) - Resolution/Bitdepth/DisableThemes shims (
CORE-11927) - IgnoreChromeSandbox CORE-13409
- WindowProc exception handler CORE-12244
ShimLib
ShimLib contains helper functions registering shims and handling common tasks.
First commit - r73461.
Shim data in links
Applies compatibility environment for shortcuts, but not *exe-file.
Status
- 05-09-2015 NtApphelpCacheControl function was implemented in the kernel (
CORE-9914) - 31-03-2016 apphelp.dll library was added (
CORE-10367) - 28-05-2016 List of "emulated" API versions was added (
CORE-11299) - 16-12-2016 Settings for Resolution/Bitdepth/DisableThemes was added 1 2 (
CORE-11927) - 22-04-2017 - Implemented custom compatibility mode selection as shell extension in acppage
- 19-05-2017 Initial implementation of integration of apphelp to process creation (LDR), COM, MSI and driver loading was added (CORE-10368)
- 29-06-2017 SdbpMatchExe function was implemented, that allows matching applications/files based on properties (CORE-13284)
- 01-07-2017:
- Tab for explorer was fully implemented
- Most of the required functions are implemented, the rest will be implemented when they are needed
- Apphelp was integrated to create a process
- 30-07-2017 ShimLib implementation was finished
- 17-08-2017 Compatibility mode was enabled by default (but, it won't be able to be applied to system files - in system32 and WinSxS folders)
- 10-01-2018 Beginnings of support for NT6 applications was implemented (details in mailing list) (Colin Finck)
- 24-02-2018 VersionLie for WIN8 and WIN81 was implemented[1][2]
Compatibility apps
Apps, which are known to work in compatibility mode:
- VMware Horizon Client for 32-bit Windows[3][4]
- Windows Media Player 6.4[5]
- Windows Media Player 7[6]
- Krita 3.2.1.0[7]
- QuickTime Player 7.7.9[8]
*_vista-libraries
In ReactOS there are some libraries such as advapi32_vista, kernel32_vista, ntoskrnl_vista and ntdll_vista. You can think that they are for the implementation of Vista+ APIs in ReactOS, but it's a mistake. For now these are present to provide needed functions for linking Wine's dlls which ReactOS uses. [9]