Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Xors3D

Xors3D Графический движок с поддержкой DirectX9

Ответ
 
Опции темы
Старый 13.11.2016, 18:11   #16
DarkInside
Разработчик
 
Аватар для DarkInside
 
Регистрация: 08.08.2011
Сообщений: 505
Написано 191 полезных сообщений
(для 369 пользователей)
Ответ: Не полная загрузка системы

Как dll в отдельном потоке исполнять? Можно без обертки обойтись? (в виде еще одного exe, который вызывает dll и передает данные в главный exe)
(Offline)
 
Ответить с цитированием
Старый 13.11.2016, 20:29   #17
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Ответ: Не полная загрузка системы

Основная программа выделяет память для обмена и передаёт её адрес в качестве параметра командной строки для запуска второй программы.
Вторая программа запускается, парсит адрес памяти для обмена, начинает главный цикл. В цикле выполняется (блокирующая) функция из DLL; после каждого выполнения, результаты сохраняются в память для обмена.
В той же памяти для обмена можно выделить бит, для сигнализации о необходимости остановки: главная программа поднимает бит, а вторичная, в очередной раз перезаписывая данные, его проверяет.

Но мне это не нравится: тут много потенциально опасных мест из-за отсутствия адекватной синхронизации (например, на случай расширения ТЗ). Думаю, антивирусные системы просто взвоют. К тому же - вторичную программу сможет использовать злоумышленник, если не шифровать параметры её запуска.
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
DarkInside (13.11.2016)
Старый 13.11.2016, 20:59   #18
DarkInside
Разработчик
 
Аватар для DarkInside
 
Регистрация: 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
mr.DIMAS
Дэвелопер
 
Аватар для mr.DIMAS
 
Регистрация: 26.12.2006
Адрес: Санкт-Петербург
Сообщений: 1,572
Написано 547 полезных сообщений
(для 1,540 пользователей)
Ответ: Не полная загрузка системы

Насколько мне известно, блиц уже сто лет как опенсорс. Берем его потрошка, прикручиваем многопоточность, параллельно переводя на C++14. Хотя кому оно надо
__________________

(Offline)
 
Ответить с цитированием
Старый 14.11.2016, 00:03   #20
DarkInside
Разработчик
 
Аватар для DarkInside
 
Регистрация: 08.08.2011
Сообщений: 505
Написано 191 полезных сообщений
(для 369 пользователей)
Ответ: Не полная загрузка системы

Не, блиц тут не при чем.
(Offline)
 
Ответить с цитированием
Старый 14.11.2016, 12:47   #21
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 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)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
DarkInside (14.11.2016)
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 23:34.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com