Difference between revisions of "User:Petr-akhlamov/Compatibility mode"

From ReactOS Wiki
Jump to: navigation, search
(Status)
(Status)
Line 67: Line 67:
 
*28-05-2016 List of "emulated" API versions [http://github.com/reactos/reactos/commit/cc1a5a5932b1f599459948cdecd0214d010933ce was added] (<del>{{JIRA|11299}}</del>)
 
*28-05-2016 List of "emulated" API versions [http://github.com/reactos/reactos/commit/cc1a5a5932b1f599459948cdecd0214d010933ce was added] (<del>{{JIRA|11299}}</del>)
 
*16-12-2016 [http://github.com/reactos/reactos/commit/71d5b09683e6f97b36aa9fe4ae8c32345205770b settings] for '''Resolution'''/'''Bitdepth'''/'''DisableThemes''' [http://github.com/reactos/reactos/commit/b7add401e93e88e15f10a0f3108ae93e35a26e72 was] [http://github.com/reactos/reactos/commit/f3f43843fe5a102367bd581b90f28323bf271ff3 added] (<del>{{JIRA|11927}}</del>)
 
*16-12-2016 [http://github.com/reactos/reactos/commit/71d5b09683e6f97b36aa9fe4ae8c32345205770b settings] for '''Resolution'''/'''Bitdepth'''/'''DisableThemes''' [http://github.com/reactos/reactos/commit/b7add401e93e88e15f10a0f3108ae93e35a26e72 was] [http://github.com/reactos/reactos/commit/f3f43843fe5a102367bd581b90f28323bf271ff3 added] (<del>{{JIRA|11927}}</del>)
*22 апреля 2017 года - [http://code.reactos.org/changelog/reactos?cs=74388 реализация] пользовательского выбора режима совместимости в виде расширения оболочки '''acppage'''
+
*22-04-2017 - [http://github.com/reactos/reactos/commit/20756892b7414163fd56df7de1d70dbf42ff5257 implement] custom compatibility mode selection as shell extension '''acppage'''
*19 мая 2017 года [http://code.reactos.org/changelog/reactos?cs=74601 была добавлена] начальная реализация интеграции apphelp в создание процесса, COM, MSI и загрузку драйверов ({{JIRA|10368}})
+
*19-05-2017 Initial implementation of integrate apphelp to process creation (LDR), COM, msi and Driver loading [http://github.com/reactos/reactos/commit/bbe72b0163cfee85b8cdd63f64b31fc459ccb26e was added] ({{JIRA|10368}})
*29 июня 2017 года [http://code.reactos.org/changelog/reactos?cs=75238 была реализована] функция '''SdbpMatchExe''', позволяющая сопоставить файлы/приложения в соответствии с параметрами ({{JIRA|13284}})
+
*29-06-2017 '''SdbpMatchExe''' function [http://github.com/reactos/reactos/commit/af9601337012b0e6338dec15bdad7bede9e6ef53 was implemented], allowing to match applications/files based on properties ({{JIRA|13284}})
*1 июля 2017 года:
+
*01-07-2017:
**[http://code.reactos.org/changelog/reactos?cs=75256 была полностью реализована] вкладка для проводника
+
**tab for explorer was [http://github.com/reactos/reactos/commit/1fa3c1a922e132061dda703b00cca986d8695271 fully implemented]
**было реализовано большинство необходимых функций apphelp sdb. Остальные будут реализованы когда понадобятся
+
**most of the required functions are implemented, the rest will be implemented when they are needed
**[http://code.reactos.org/changelog/reactos?cs=75258 произведена] интеграция [http://jira.reactos.org/browse/CORE-13284 apphelp] в создание процесса
+
**[http://jira.reactos.org/browse/CORE-13284 apphelp] [http://github.com/reactos/reactos/commit/711a1cb3414768c59419bb0454a1265403f7a5a6 was integrated] to creating a process
*30 июля 2017 года была завершена разработка ShimLib
+
*30-07-2017 ShimLib implementation was finished
*17 августа 2017 года режим совместимости [http://code.reactos.org/changelog/reactos?cs=75596 был включен] по-умолчанию (при этом он не может применяться на системные файлы - в '''system32''' и '''WinSxS''')
+
*17-08-2017 Compatibility mode [http://github.com/reactos/reactos/commit/9d8fe6f2381db5c877cc9d1858fae209bb77eb97 was enabled] default (but, he can't will be applied to system files - in '''system32''' and '''WinSxS''')
  
 
==Compatibility apps==
 
==Compatibility apps==

Revision as of 14:16, 27 December 2017

[WIP] http://winehq.org.ru/Compatibility_mode

Mark Jassen implements this function in ReactOS.

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

CORE-10366

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

Shim infrastructure

It implement base infrastructure that shims can leverage to do their work.

Provide default shims

It provide:

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

  • 05-09-2015 component NtApphelpCacheControl was implemented in the kernel (CORE-9914)
  • 31-03-2016 library apphelp.dll 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 (CORE-11927)
  • 22-04-2017 - implement custom compatibility mode selection as shell extension acppage
  • 19-05-2017 Initial implementation of integrate apphelp to process creation (LDR), COM, msi and Driver loading was added (CORE-10368)
  • 29-06-2017 SdbpMatchExe function was implemented, allowing to match applications/files based on properties (CORE-13284)
  • 01-07-2017:
  • 30-07-2017 ShimLib implementation was finished
  • 17-08-2017 Compatibility mode was enabled default (but, he can't will be applied to system files - in system32 and WinSxS)

Compatibility apps

Apps, which works in compatibility mode:

  • VMware Horizon Client for 32-bit Windows[1][2]
  • Windows Media Player 6.4[3]

*_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]

Links