Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Новый участник


Сообщения: 2
Благодарности: 1

Профиль | Отправить PM | Цитировать


С вопросом выше полностью разобрался самостоятельно.
Оказывается при вызове функции из длл, переменные можно передать как через параметры, так и через стек.
Здесь есть официальный пример.

https://nsis.sourceforge.io/Examples/Plugin/exdll.c

В местном справочнике по NSIS удалось найти зачем.
В плагинах файл "System: Вызов функций из внешних библиотек"

Как я понял как параметры можно передать ограниченное кол-во переменных, а через стек не ограниченно + через стек безопаснее. Цитирую

Цитата:
Очень полезное свойство у системного плагина - отдельный(приватный) стек. Очень помогает при написании макросов и сложных функций.
Позволяет сохранить все исходные значения переменных в приватный стек до использования макроса, и восстановить все эти значения
переменных, после завершения макроса или функции в исходное(оригинальное) состояние.
Вы не будете получать конфликтов значений, при использовании одновременно одинаковых переменных.
S cохраняет значения переменых $R0 - $R9
L восстанавливает значения переменых $R0 - $R9

s cохраняет значения переменых $0 - $9
l восстанавливает значения переменых $0 - $9
Единственно важно помнить, что согласно офф документации, параметры передаются в любом случае справа на лево "https://nsis.sourceforge.io/Docs/Chapter4.html#plugindlls" Зачем сделано так для меня загадка...

И отвечая на свои же вопросы для моего примера:
1) В стеке находится то что в него засунули (ДА ЛАДНО?!), ну а именно в моём случае это параметры для функции. Ничего особенного в этом стеке нет.
2) В стек пишет NSIS, но он может доставать из стека например результат внешней функции.
3) Из стека читает функция (она сама разбирает стек и забирает нужное).
4) Стек располагается где-то в системе (не важно где). Он один и он глобальный (для всего процесса) т.е. для скрипта NSIS и всей подключённой либы вместе..
5) Подробнее про подключение динамических библиотек можно почитать
5.1) официальная документация с примерами "https://nsis.sourceforge.io/Docs/Chapter4.html#plugindlls"
5.2) замечательный хелпер этого сообщества. Ссылка, я думаю излишняя

По итогу. Свою проблему решил в полном объёме. Спасибо сообществу за замечательный хелпер без него как без рук уже (он у меня работает не корректно и не отображает содержимое страниц. Приходится доставать оттуда нужные html ручками хз почему, а форум хелпера мёртв).
Это сообщение посчитали полезным следующие участники:

Отправлено: 03:45, 19-06-2020 | #2457