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

From ReactOS Wiki
Jump to: navigation, search
(Tab in the explorer)
(Интеграция apphelp)
Line 33: Line 33:
===Интеграция apphelp===
===Интеграция apphelp===
Интеграция apphelp в <s>создание процесса</s>, COM, MSI и загрузку драйверов.
Integrate apphelp in <s>process creation (LDR)</s>, COM, msi and Driver loading.
**3 июня 2017 года была начата интеграция apphelp в [http://jira.reactos.org/browse/CORE-13284 создание процесса]
**03-06-2017 Integrate apphelp in process creation was started <s>{{JIRA|13284}}</s>
***27 июня был опубликован первый патч
***June 27 first patch was published
***29 июня года была реализована функция SdbpMatchExe
***June 29 function SdbpMatchExe was implemented
***1 июля произведена интеграция apphelp в создание процесса
***July 1 integration apphelp to process creation was implemented
===Инфраструктура Shim===
===Инфраструктура Shim===

Revision as of 08:48, 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



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".

Интеграция 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

Реализует базовую инфраструктуру для эмуляции различных API.

Создание стандартных значений Shim


  • список "эмулируемых" версий API. (CORE-11299)
  • настройку разрешения экрана/глубины цвета/отключение тем (CORE-11927)
  • игнорировать песочницу Chrome
  • обработчик исключений WindowProc


Выполняет вспомогательные функции для регистрации регулировочных слоев и для обработки общих задач.

Первый коммит - r73461.

Данные Shim в ярлыках

Применение окружения совместимости не для *.exe-файла, а для ярлыка.


Compatibility apps

Apps, which works in compatibility mode:

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


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]