Page 2 of 2

Re: Порт wine

Posted: Sun Apr 07, 2013 8:38 pm
by GerdtR
Ну, во-первых, для виндовых прог исходники обычно не раздаются:( Во-вторых, портировать пару сотен прог - лучше одну, хоть и сложную. В третьих, реализовать пару виндовых функций, а затем увидеть результат работы в форме рабочего хелловорлда - это такой кайф, что его хочется продлевать и продлевать. В четвёртых, я начинающий программист, а доскональное знание винапи, устройства памяти, реестра и ещё куча всего, что я получу при реализации, мне очень пригодятся и с лихвой окупают затраченное время. И пусть даже я за год смогу соорудить совместимость только с десяткой(да хоть и меньше, всё равно) реально полезных виндовых прог, но бросать идею - ни за что. Ну и самое главное: не так страшен чёрт, как его рисуют:)

Re: Порт wine

Posted: Sun Jun 02, 2013 10:57 am
by Vladimir.1913
если у вас есть желание научить колибри запускать вин-приложения, думаю стоит попробовать научить само ядро, с вайна потребуются только либы. процесс будет не совсем легкий, но получите опыт.
хотя я больше придерживаюсь, что если нужно что-то с винды, то лучше портировать, тем самым поможете проекту с софтом.

Re: Порт wine

Posted: Sun Jun 02, 2013 11:03 am
by SoUrcerer
Нафиг ядро? viewtopic.php?f=9&t=2318

Re: Порт wine

Posted: Mon Jun 03, 2013 2:44 pm
by Vladimir.1913
SoUrcerer wrote:Нафиг ядро? viewtopic.php?f=9&t=2318
а приложения, которым требуется псевдо виндовый реестр как будут работать?

Re: Порт wine

Posted: Mon Jun 03, 2013 3:05 pm
by SoUrcerer
Кто мешает сделать это в user-mode? В любом случае библиотеки используются. Это может быть что-то вроде ARWINSS, только не ARWINSS :)

Re: Порт wine

Posted: Wed Jun 05, 2013 9:09 pm
by GerdtR
Ядро(точнее драйвер) нужен только затем, что бы выделить память в любом месте виртуального пространства. А остальное элементарно сооружается в user-mode. А реестр - это файлы. И вин-проги обращаются к нему через функции вин-библиотек. Т.е. даже не обязательно соблюдать вин-формат файлов реестра(хотя желательно:) ).
PS: Не предсталяю как можно портировать автодиагностические программы, если не то что исходники, но просто дизассемблировать их - работа иногда очень сложая. По крайней мере у меня ни умений, ни желания нет)

Re: Порт wine

Posted: Fri Jun 07, 2013 9:05 pm
by GerdtR
Вот выкладываю свои старания. Пока библиотеки мягко говоря не развиты. Работает MesageBox(и Юникод тоже). ExitProcess вылетает:( User умел создавать окно, кнопки и обрабатывать элементарные события, но после переделки разучился :D. Но это пока. Вот. Ядро этой программы(назвал Victoria, надеюсь претензий не будет:) ) умеет грузить проги и библиотеки PE. Также в ней находятся некоторые общие функции для библиотек(менеджер памяти, конвертор кодировок...). Компиляция несколько сложновата. Приходится преобразовывать отладочную инфу для Victoria в инклудник(это можно сделать с помощью DbgToOffsTabl). Этот инклудник нужен библиотекам, иначе они просто не смогут пользоватся функциями ядра проги. Вот. Для работы этой проги нужно скопировать драйвер vicdrv.obj в /sys/drivers. И для этого драйвера нужно, что бы ядро экспортировало функцию user_alloc_at. В архив я положил модифицированное ядро. Так что к ядерщикам просьба: добавьте, пожалуйста. Затем надо в Victoria.ini прописать путь до папки /dlls(в ней лежат псевдоWin-библиотеки). Ну и тогда можно запускать вин-проги: victoria /hd0/1/proga.exe . Если прога досовая(точнее не PE), то она будет запущена в dosbox(путь до него содержиться Victoria.ini). Единственная фишка в пути: он не должен содержать ".exe " (последний пробел. Если его нет, то работать будет нормально). Ну в общем сие творение чего-то полезного пока не запускала, но, надеюсь, всё будет. Пока пару пробных прог есть в архиве в tests (прога micronw.exe выводит HelloWorld на доску отладки, testdll тоже, просто у неё чуть сложнее загрузка импортируемых библиотек).