ROSdll compatibility — различия между версиями
Fog (обсуждение | вклад) (→Совместимость c dll Windows) |
(→Тестовая пересадка донорских Dll от Windows XP/2003 для ReactOS) |
||
(не показано 18 промежуточных версии 3 участников) | |||
Строка 1: | Строка 1: | ||
[[Category:ReactOS]] | [[Category:ReactOS]] | ||
== Совместимость c dll Windows == | == Совместимость c dll Windows == | ||
− | [[Файл:ROSdll_2014-12-27_19.00.54.png| | + | [[Файл:ROSdll_2014-12-27_19.00.54.png|300px|thumb]] |
− | [[Файл:ROSdll_2014-12-27_19.26.37.png| | + | [[Файл:ROSdll_2014-12-27_19.26.37.png|300px|thumb]] |
Обсуждение этой темы [http://www.reactos.org/forum/viewtopic.php?f=11&t=5781 на форуме ReactOS] | Обсуждение этой темы [http://www.reactos.org/forum/viewtopic.php?f=11&t=5781 на форуме ReactOS] | ||
Строка 11: | Строка 11: | ||
Возможные сценарии применения: | Возможные сценарии применения: | ||
− | # Выявление проблемных мест в ReactOS. Замена dll reactos на dll windows для выявления нереализованных функций в этих библиотеках и повышении стабильности и совместимости. Можно организовать список dll, что и какой версии можно заменить/добавить от windows. В WINE подобный подход использует скрипт WineTricks (и другие похожие утилиты). | + | # Выявление проблемных мест в ReactOS. Замена dll reactos на dll windows для выявления нереализованных функций в этих библиотеках и повышении стабильности и совместимости. Можно организовать список dll, что и какой версии можно заменить/добавить от windows. В WINE подобный подход использует скрипт [[Winetricks|WineTricks]] (и другие похожие утилиты). |
# Обнаружение "узких мест" в dll ReactOS. Проверка функционирования dll ReactOS'а, посредством простой замены соответствующих dll'ек Windows. Оценка работоспособности Windows с "кусками" ReactOS. Различные эксперименты с [[Windows Research Kernel]] (cоздание "windows" с ограниченной функциональностью или узкой специализацией, такой как запуск только определенных приложений, например). | # Обнаружение "узких мест" в dll ReactOS. Проверка функционирования dll ReactOS'а, посредством простой замены соответствующих dll'ек Windows. Оценка работоспособности Windows с "кусками" ReactOS. Различные эксперименты с [[Windows Research Kernel]] (cоздание "windows" с ограниченной функциональностью или узкой специализацией, такой как запуск только определенных приложений, например). | ||
# "Вилка" dll. Использование некой "интерфейсной" dll, которая бы получала данные от программ, и передавала бы их сразу двум dll - из windows и reactos, а потом сравнивала бы возвращаемые ими результаты, и в случае их расхождения указывала бы на ошибки. Критика: уже есть тесты WINE, может быть нарушена "совместимость с документацией". | # "Вилка" dll. Использование некой "интерфейсной" dll, которая бы получала данные от программ, и передавала бы их сразу двум dll - из windows и reactos, а потом сравнивала бы возвращаемые ими результаты, и в случае их расхождения указывала бы на ошибки. Критика: уже есть тесты WINE, может быть нарушена "совместимость с документацией". | ||
'''Внимание!''' "Перемешивание" библиотек и файлов из свободных и проприетарных ОС нарушает вопросы лицензий и авторских прав, поэтому мы настоятельно рекомендуем использовать этот подход только для исследовательских целей и не распространять подобный "винегрет". | '''Внимание!''' "Перемешивание" библиотек и файлов из свободных и проприетарных ОС нарушает вопросы лицензий и авторских прав, поэтому мы настоятельно рекомендуем использовать этот подход только для исследовательских целей и не распространять подобный "винегрет". | ||
+ | |||
+ | ===Информация о совместимости с Windows Server 2003=== | ||
+ | *Информация о компонентах Windows Server 2003, запущенных в ReactOS [http://reactos.org/wiki/Windows_2003_to_ReactOS_Components_Test на официальной вики]. | ||
+ | *{{JIRA|7481}} - отчет в багтрекере | ||
===Тестирование ReactOS-компонентов режима пользователя в Windows=== | ===Тестирование ReactOS-компонентов режима пользователя в Windows=== | ||
---- | ---- | ||
− | Оригинал: | + | Оригинал: http://www.reactos.org/forum/viewtopic.php?f=11&t=8164 |
---- | ---- | ||
Для сравнения функционала, в Windows можно использовать user-mode компоненты ReactOS (приложения, dll, cpl и пр.) | Для сравнения функционала, в Windows можно использовать user-mode компоненты ReactOS (приложения, dll, cpl и пр.) | ||
Строка 52: | Строка 56: | ||
Т.к. в Windows XP нет симлинков для файлов, необходимо воспользоваться утилитой '''symlink''', оформленной в виде драйвера, консольного приложения, запускающего драйвер, и собственно консольного приложения, создающего симлинки: | Т.к. в Windows XP нет симлинков для файлов, необходимо воспользоваться утилитой '''symlink''', оформленной в виде драйвера, консольного приложения, запускающего драйвер, и собственно консольного приложения, создающего симлинки: | ||
− | *http://homepage1.nifty.com/emk/#download_symlink | + | *http://homepage1.nifty.com/emk/#download_symlink |
**http://homepage1.nifty.com/emk/symlink-1.05-src.zip | **http://homepage1.nifty.com/emk/symlink-1.05-src.zip | ||
**http://homepage1.nifty.com/emk/symlink-1.05-x64.zip | **http://homepage1.nifty.com/emk/symlink-1.05-x64.zip | ||
Строка 80: | Строка 84: | ||
Даже если приложение будет использовать функции, которые еще не реализованы в ROS, или неправильно работают - всегда можно закомментить эти места, но при этом будет видно чего и где не хватает или где закралась ошибка. | Даже если приложение будет использовать функции, которые еще не реализованы в ROS, или неправильно работают - всегда можно закомментить эти места, но при этом будет видно чего и где не хватает или где закралась ошибка. | ||
+ | |||
+ | ===Тестовая пересадка донорских Dll от Windows XP/2003 для ReactOS=== | ||
+ | |||
+ | Сторонние компоненты, которые могут понадобиться для запуска, тестирования и улучшения работы ReactOS и запущенных в нем программ. | ||
+ | |||
+ | {| class="wikitable" | ||
+ | !компонент || откуда || зачем || от кого | ||
+ | |- | ||
+ | |'''hdaudbus.sys''' || из Windows Server 2003 || Нужен для корректной работы драйвера Realtek High Definition Audio. Работает с незначительными ошибками. Вручную скопируйте с заменой в папку system32\drivers и перезагрузите систему перед установкой аудиодрайвера. || ''Олег Дубинский ©'' | ||
+ | |- | ||
+ | |'''portcls.sys''' || из Windows Server 2003 || способствует улучшению звука в ReactOS (Уменьшение рывков и хрипов во время работы приложений). || ''??? Illen ©'' | ||
+ | |- | ||
+ | |'''usbuhci.sys, usbohci.sys, usbehci.sys'''[http://yadi.sk/d/8elBxRgb3LfsxG] || из Windows XP/W2003 || для тестирования usb стека ReactOS. || ''Вадим Галянт ©'' | ||
+ | |- | ||
+ | |'''ATMLIB.dll''' || || Для корректной работы Adobe Reader с заполняемыми PDF-формами в ReactOS || ''Администрация ReactOS ©'' | ||
+ | |- | ||
+ | |'''BORdbk70.dll, DCC70.DLL''' || || Delphi 7 с минимальными возможностями. После установки скопируйте файлы в "C:\Program Files\Common Files\Borland Shared\Debugger", выполните регистрацию BORdbk70.dll, перезагрузите систему. || ''Николай Бурштын ©'' | ||
+ | |- | ||
+ | |'''dsound.dll''' || из Windows Server 2003 || Нужна для работы звука в некоторых приложениях и играх, использующих DirectSound в качестве ввода/вывода звука. Иногда может вызывать незначительные ошибки. Вручную скопируйте с заменой в папку system32. || ''Олег Дубинский ©'' | ||
+ | |- | ||
+ | |'''mpglib.dll''' || || нужна для работы плеера 1by1 1.87. || ''Ярослав Денисов ©'' | ||
+ | |- | ||
+ | |'''mfc42u.dll''' || из Windows XP/W2003 || нужна для запуска ShadowUser Pro. Вручную скопируйте в папку system32. Перезагрузите ReactOS. || ''Андрей Шаталов ©'' | ||
+ | |} | ||
+ | |||
+ | ===Изменение реализации Windows server 2003 на Windows xp с помощью реестра ReactOS === | ||
+ | Как заставить ReactOS "прикинутся" десктопом вместо сервера и тем самым увеличить количество рабочих в ней программ. Рассказал Олег Дубинский. | ||
+ | |||
+ | 1. Зажать win+r прописать regedit, и выполнить. | ||
+ | |||
+ | 2. Удалить Terminal Server (оставить поле пустым); в этой же ветке изменить значение ProductType с ServerNT на WinNT (идентично ХР). | ||
+ | HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ProductOptions\ProductSuite | ||
+ | 3. В данной ветке выставить значение с 0 на 1. | ||
+ | HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ReactOS\Settings\Version\ReportAsWorkstation | ||
+ | 4. Перезагрузить ReactOS. | ||
{{ReactOS}} | {{ReactOS}} |
Текущая версия на 16:42, 22 января 2020
Содержание
[убрать]Совместимость c dll Windows
Обсуждение этой темы на форуме ReactOS
В конце 2013 (билд 59985) появилась первая информация о совместимости (и заменяемости) kernel32.dll и ntdll.dll из ReactOS с Windows Server 2003 SP1. Эта информация (59985 коммит) многими была воспринята, как знак полной функциональной взаимозаменимости этих файлов в ReactOS и Windows, однако это ошибочное суждение. Данный факт свидетельствует, в первую очередь, о совместимости этих dll на уровне интерфейсов и "общего каркаса" системы. С точки зрения функциональной полноты, эти dll различаются достаточно сильно.
Справа на этой странице скриншоты ReactOS с подсистемой Win32 из Windows 2003, (т.е. файлы gdi32.dll, user32.dll, win32k.sys) по состоянию на 27.12.2014.
Возможные сценарии применения:
- Выявление проблемных мест в ReactOS. Замена dll reactos на dll windows для выявления нереализованных функций в этих библиотеках и повышении стабильности и совместимости. Можно организовать список dll, что и какой версии можно заменить/добавить от windows. В WINE подобный подход использует скрипт WineTricks (и другие похожие утилиты).
- Обнаружение "узких мест" в dll ReactOS. Проверка функционирования dll ReactOS'а, посредством простой замены соответствующих dll'ек Windows. Оценка работоспособности Windows с "кусками" ReactOS. Различные эксперименты с Windows Research Kernel (cоздание "windows" с ограниченной функциональностью или узкой специализацией, такой как запуск только определенных приложений, например).
- "Вилка" dll. Использование некой "интерфейсной" dll, которая бы получала данные от программ, и передавала бы их сразу двум dll - из windows и reactos, а потом сравнивала бы возвращаемые ими результаты, и в случае их расхождения указывала бы на ошибки. Критика: уже есть тесты WINE, может быть нарушена "совместимость с документацией".
Внимание! "Перемешивание" библиотек и файлов из свободных и проприетарных ОС нарушает вопросы лицензий и авторских прав, поэтому мы настоятельно рекомендуем использовать этот подход только для исследовательских целей и не распространять подобный "винегрет".
Информация о совместимости с Windows Server 2003
- Информация о компонентах Windows Server 2003, запущенных в ReactOS на официальной вики.
- CORE-7481 - отчет в багтрекере
Тестирование ReactOS-компонентов режима пользователя в Windows
Оригинал: http://www.reactos.org/forum/viewtopic.php?f=11&t=8164
Для сравнения функционала, в Windows можно использовать user-mode компоненты ReactOS (приложения, dll, cpl и пр.)
Цель данного действия - обнаружение багов и четкое их разграничение того, что является его причиной - само приложение, используемые ею dll или еще глубже.
В примере будет использоваться приложение "Блокнот".
Имеются:
- папка, в которой лежит периодически компилируемый, исходный код ROS [D:\trunk4build]
- ноутбук, с установленной в папку C:\WINDOWS, Windows XP
Требуется: чтобы после каждой компиляции определенные файлы из РОС "копировались" в соответствующую папку в Windows.
Сделать это можно несколькими способами:
- написать .cmd-скрипт, выполняющий копирование, вручную запускаемый после компиляции, либо прикрученный к RosBE
- сделать символьные ссылки, т.е. перенаправить запросы идущие к приложениям, находящимся в C:\WINDOWS, в приложения, находящиеся в D:\trunk4build.
Оба метода имеют недостатки:
- копирование увеличивает размер (хотя вместо него можно использовать хардлинк), но это не спасает от того, что "копирование" будет происходить только поле выполнения компиляции.
- если вдруг кто-то запостит коммит, нарушающий сборку приложения, например notepad-а, на который вы сделали симлинк, то вы временно останетесь без стандартного блокнота.
Далее будет рассматриваться второй вариант.
Чтобы не остаться без оригинальных windows-приложений, скопируйте их exe-файлы в отдельную директорию (например, C:\c\WINDOWS).
Для того, чтобы файл C:\WINDOWS\system32\notepad.exe не восстанавливался после перемещения, необходимо заранее удалить его копию из C:\WINDOWS\system32\dllcache (Удаляйте осторожно. Убедитесь, что у вас все еще есть копия этого файла в C:\WINDOWS\system32 или в C:\c\WINDOWS\system32)
Если Windows начнет ругаться на отсутствие системных компонентов отключите WFP с помощью Windows-File-Protection-Switcher.
После его запуска нам будет предложено выключить WFP и перезагрузиться.
Т.к. в Windows XP нет симлинков для файлов, необходимо воспользоваться утилитой symlink, оформленной в виде драйвера, консольного приложения, запускающего драйвер, и собственно консольного приложения, создающего симлинки:
Все что надо - это распаковать 3 файла из архива, прописать их в PATH (или банально скопировать в C:\WINDOWS), поставить в автозагрузку senable.exe и, чтобы лишний раз не перезагружаться, запустить его же.
После этого из консоли можно будет создавать симлинки вот так:
ln -s существующий_файл создаваемый_файл
И заодно хардлинки:
ln существующий_файл создаваемый_файл
Для нашего примера это выглядит так:
ln -s D:\trunk4build\output-i386\base\applications\notepad\notepad.exe C:\WINDOWS\system32\notepad.exe
В результате получим файл C:\WINDOWS\system32\notepad.exe имеющий нулевой размер, который не удаляется при удалении исходного notepad.exe, а просто ругается...
Затем при необходимости компилим ROS целиком или отдельно notepad - и симлинк просто работает.
Собственно указанным выше способом можно без проблем заменять:
- приложения из D:\trunk4build\output-i386\base\applications
- cpl-ки из D:\trunk4build\output-i386\dll\cpl
и всевозможные dll-ки...
Подобный способ тестирования рекомендуется тем, кто хочет начать кодить/присылать патчи в ROS, но не сильно знаком с режимом ядра и пока не хочет далеко лезть в ядро и kernel-mode.
Даже если приложение будет использовать функции, которые еще не реализованы в ROS, или неправильно работают - всегда можно закомментить эти места, но при этом будет видно чего и где не хватает или где закралась ошибка.
Тестовая пересадка донорских Dll от Windows XP/2003 для ReactOS
Сторонние компоненты, которые могут понадобиться для запуска, тестирования и улучшения работы ReactOS и запущенных в нем программ.
компонент | откуда | зачем | от кого |
---|---|---|---|
hdaudbus.sys | из Windows Server 2003 | Нужен для корректной работы драйвера Realtek High Definition Audio. Работает с незначительными ошибками. Вручную скопируйте с заменой в папку system32\drivers и перезагрузите систему перед установкой аудиодрайвера. | Олег Дубинский © |
portcls.sys | из Windows Server 2003 | способствует улучшению звука в ReactOS (Уменьшение рывков и хрипов во время работы приложений). | ??? Illen © |
usbuhci.sys, usbohci.sys, usbehci.sys[1] | из Windows XP/W2003 | для тестирования usb стека ReactOS. | Вадим Галянт © |
ATMLIB.dll | Для корректной работы Adobe Reader с заполняемыми PDF-формами в ReactOS | Администрация ReactOS © | |
BORdbk70.dll, DCC70.DLL | Delphi 7 с минимальными возможностями. После установки скопируйте файлы в "C:\Program Files\Common Files\Borland Shared\Debugger", выполните регистрацию BORdbk70.dll, перезагрузите систему. | Николай Бурштын © | |
dsound.dll | из Windows Server 2003 | Нужна для работы звука в некоторых приложениях и играх, использующих DirectSound в качестве ввода/вывода звука. Иногда может вызывать незначительные ошибки. Вручную скопируйте с заменой в папку system32. | Олег Дубинский © |
mpglib.dll | нужна для работы плеера 1by1 1.87. | Ярослав Денисов © | |
mfc42u.dll | из Windows XP/W2003 | нужна для запуска ShadowUser Pro. Вручную скопируйте в папку system32. Перезагрузите ReactOS. | Андрей Шаталов © |
Изменение реализации Windows server 2003 на Windows xp с помощью реестра ReactOS
Как заставить ReactOS "прикинутся" десктопом вместо сервера и тем самым увеличить количество рабочих в ней программ. Рассказал Олег Дубинский.
1. Зажать win+r прописать regedit, и выполнить.
2. Удалить Terminal Server (оставить поле пустым); в этой же ветке изменить значение ProductType с ServerNT на WinNT (идентично ХР).
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ProductOptions\ProductSuite
3. В данной ветке выставить значение с 0 на 1.
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ReactOS\Settings\Version\ReportAsWorkstation
4. Перезагрузить ReactOS.