|
Xors3D Графический движок с поддержкой DirectX9 |
13.11.2016, 18:11
|
#16
|
Разработчик
Регистрация: 08.08.2011
Сообщений: 505
Написано 191 полезных сообщений (для 369 пользователей)
|
Ответ: Не полная загрузка системы
Как dll в отдельном потоке исполнять? Можно без обертки обойтись? (в виде еще одного exe, который вызывает dll и передает данные в главный exe)
|
(Offline)
|
|
13.11.2016, 20:29
|
#17
|
Зануда с интернетом
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений (для 20,935 пользователей)
|
Ответ: Не полная загрузка системы
Основная программа выделяет память для обмена и передаёт её адрес в качестве параметра командной строки для запуска второй программы.
Вторая программа запускается, парсит адрес памяти для обмена, начинает главный цикл. В цикле выполняется (блокирующая) функция из DLL; после каждого выполнения, результаты сохраняются в память для обмена.
В той же памяти для обмена можно выделить бит, для сигнализации о необходимости остановки: главная программа поднимает бит, а вторичная, в очередной раз перезаписывая данные, его проверяет.
Но мне это не нравится: тут много потенциально опасных мест из-за отсутствия адекватной синхронизации (например, на случай расширения ТЗ). Думаю, антивирусные системы просто взвоют. К тому же - вторичную программу сможет использовать злоумышленник, если не шифровать параметры её запуска.
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
13.11.2016, 20:59
|
#18
|
Разработчик
Регистрация: 08.08.2011
Сообщений: 505
Написано 191 полезных сообщений (для 369 пользователей)
|
Ответ: Не полная загрузка системы
Ну я примерно так и представлял обертку.
Только хотел какой-то готовый интерфейс для обмена использовать. Кстати, какой интерфейс лучше (с минимальной задержкой и при этом наиболее надежный)? WIN_MESSAGE можно или может TCP/IP поднять с отчетом о доставке, чтобы синхронизацию обеспечить? Есть еще вариант через консольную утилиту невидимый ram-disk создать и обмениваться через простое чтение-запись файлов.
UAC может мозг вынести, но его легко можно обойти через ring 2 (RunAsSystem). Если основное приложение запущено от имени системы, оно может творить что угодно (запускать exe), UAC не будет вмешиваться.
вторичную программу сможет использовать злоумышленник, если не шифровать параметры её запуска.
|
если он обладает навыками, чтобы выцепить, с какими параметрами exe должен запускаться, то он так же в состоянии выцепить параметры, с которыми должна вызываться сама dll, не вижу тут принципиальной разницы
|
(Offline)
|
|
13.11.2016, 23:58
|
#19
|
Дэвелопер
Регистрация: 26.12.2006
Адрес: Санкт-Петербург
Сообщений: 1,572
Написано 547 полезных сообщений (для 1,540 пользователей)
|
Ответ: Не полная загрузка системы
Насколько мне известно, блиц уже сто лет как опенсорс. Берем его потрошка, прикручиваем многопоточность, параллельно переводя на C++14. Хотя кому оно надо
__________________
|
(Offline)
|
|
14.11.2016, 00:03
|
#20
|
Разработчик
Регистрация: 08.08.2011
Сообщений: 505
Написано 191 полезных сообщений (для 369 пользователей)
|
Ответ: Не полная загрузка системы
Не, блиц тут не при чем.
|
(Offline)
|
|
14.11.2016, 12:47
|
#21
|
Зануда с интернетом
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений (для 20,935 пользователей)
|
Ответ: Не полная загрузка системы
Сообщение от DarkInside
Ну я примерно так и представлял обертку.
Только хотел какой-то готовый интерфейс для обмена использовать.
|
Ну или непосредственно сырую память (new/delete все дела) или Виндовую надстроечку - OpenFileMapping сотоварищи ( Разделяемая память):
В операционной системе Windows для создания разделяемой памяти используется функция CreateSharedMemory[13] из пакета Win32-SDK. C другой стороны, возможно использование функций CreateFileMapping и MapViewOfFile[14] из MSDN.
|
Это, конечно, не предел мечтаний, с другой стороны - под стать архитектуре с двумя приложениями
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 17:10.
|