Page 1 of 2

32битные плагины в FAR х64?

Posted: Sun 01 Dec, 2013 09:20
by raven428
32х битные плагины в версии х64 вообще никак не запустить или есть какой-то костыль?

Re: плагин32 в фар3х64

Posted: Sun 01 Dec, 2013 10:30
by DrKnS
raven428 wrote:32х битные плагины в версии х64 вообще никак не запустить или есть какой-то костыль?
Почему никак?

Пишешь 32-битный хост, который:
- загружает 32-битный плагин
- как-то через IPC узнаёт, какие функции из него нужно вызывать
- вызывает нужные функции и отдаёт результат обратно, опять же через IPC.
- предоставляет 32-битному плагину весь необходимый far api, реализуя его самостоятельно или транслируя вызовы через IPC при необходимости.

Пишешь 64-битный плагин или адаптер, который:
- запускает вышеописанный 32-битный хост.
- передаёт по IPC имёна нужных функций, параметры, получает результат
- реализует IPC-обёртку для far api.

Re: плагин32 в фар3х64

Posted: Sun 01 Dec, 2013 11:23
by Max Rusov
DrKnS wrote:Почему никак? Пишешь...
И все равно, с 90% вероятностью работать не будет

Re: плагин32 в фар3х64

Posted: Sun 01 Dec, 2013 11:32
by Denis
raven428 wrote:32х битные плагины в версии х64 вообще никак не запустить или есть какой-то костыль?
А что за плагин?

Re: Вопросы по переходу на Far 3.0 (перенос настроек и др.)

Posted: Sun 01 Dec, 2013 12:41
by HaRT
DrKnS
Я на досуге размышлял, нельзя ли на заголовочники FAR API натравить MIDL.exe, чтобы он сгенерил proxy/stub, — тогда бы создание описываемой связки несколько упростилось.
А вообще если кто возьмётся, могу в частном порядке поделиться опытом успешной реализации подобного IPC.

Re: Вопросы по переходу на Far 3.0 (перенос настроек и др.)

Posted: Sun 01 Dec, 2013 20:37
by DiRTy_GaRRy
Если в фаре будет com api для плагинов, то взаимодействие x86 <-> x64 (в любую сторону) можно будет сделать встроенными средствами винды, через com+.

Re: Вопросы по переходу на Far 3.0 (перенос настроек и др.)

Posted: Sun 01 Dec, 2013 20:40
by DiRTy_GaRRy
Правда при большой частоте вызовов out-of-prococess com сервера — это не самый лучший вариант, но всё же…

Re: Вопросы по переходу на Far 3.0 (перенос настроек и др.)

Posted: Sun 01 Dec, 2013 20:48
by 2useven10
32-64 оффтопик вполне заслуживает отдельной темы.

Re: Вопросы по переходу на Far 3.0 (перенос настроек и др.)

Posted: Sun 01 Dec, 2013 23:52
by Max Rusov
Да не выйдет ничего. Можно подумать, плагины только FAR API пользуются.

Re: Вопросы по переходу на Far 3.0 (перенос настроек и др.)

Posted: Mon 02 Dec, 2013 02:32
by zg
Max Rusov wrote:Да не выйдет ничего. Можно подумать, плагины только FAR API пользуются.
ну с файлами реестром можно тот же трюк применять, что в x86 фаре. а какие ещё проблемы есть?

Re: Вопросы по переходу на Far 3.0 (перенос настроек и др.)

Posted: Mon 02 Dec, 2013 05:00
by ccaid
изначально вопрос был поднят, потому что есть унаследованные x86 плагины, которые никак не подключить к x64 far. смысла в новодельных x86 плагинах, использующих новопридуманное АПИ для подключения к x64 Far — нет.

Re: плагин32 в фар3х64

Posted: Thu 05 Dec, 2013 11:53
by raven428
Denis wrote:
raven428 wrote:32х битные плагины в версии х64 вообще никак не запустить или есть какой-то костыль?
А что за плагин?
да много их от того же фар 1.70, в том числе мои, например :)

Re: Вопросы по переходу на Far 3.0 (перенос настроек и др.)

Posted: Thu 05 Dec, 2013 12:31
by Max Rusov
zg wrote:
Max Rusov wrote:Да не выйдет ничего. Можно подумать, плагины только FAR API пользуются.
ну с файлами реестром можно тот же трюк применять, что в x86 фаре. а какие ещё проблемы есть?
Консольное API, например. GetStdHandle и иже с ним.

Re: 32битные плагины в FAR х64?

Posted: Fri 06 Dec, 2013 00:26
by WARP ItSelf
Да не, тут все нормально.

1. Скажем, Far у нас х64.
2. Пишем к нему х64-плагин заглушку.
3. Пишем программу-арбитр х86.
4. Имеем плагин х86.

И понеслась:

1. Far x64 загружает плагин-заглушку.
2. Плагин маршалит данные в программу-арбитр (при вызове GetPluginInfo, например).
3. Программа-арбитр загружает плагин х86 и вызывает что нужно.
4. Программа-арбитр собирает результаты вызова и маршалит их в плагин-заглушку.

Все просто замечательно кроме того, что написать для plugin.hpp это самый маршалинг/демаршалинг это ААА!!!! А plugin.hpp еще и меняется постоянно. Там этот арбитр с заглушкой на полноценный менеджер плагинов потянут.

Re: 32битные плагины в FAR х64?

Posted: Fri 06 Dec, 2013 07:34
by Max Rusov
WARP ItSelf wrote:...написать для plugin.hpp это самый маршалинг/демаршалинг это ААА!!!!
Это, конечно, не просто, но не сильно сложнее чем Far2->Far3 wrapper, только IPC добавить. Но что делать с непредсказуемым множеством функций Win API - мне лично непонятно.