Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.12.16;
Скачать: CL | DM;

Вниз

Область памяти для двух приложений   Найти похожие ветки 

 
Dimaxx ©   (2003-12-03 01:46) [0]

Сабж. Надоть создать область, чтобы главное приложение и библиотеки могли писать и читать в нее, менять размер области и т.п. Если быть еще точнее, то надо что-то типа MemoryStream. Киньте примерчиком, плз.

PS: Прошу не пинать, если кому вопрос покажется банальным. Я с такими вещами дел не имел, а вот теперь понадобилось.


 
TUser ©   (2003-12-03 05:57) [1]

Думаю, что надо сделать dll, которую будут использовать все модули твоей проги. Память у dll одна, вот там и создавай TMemoryStream.


 
Radionov Alexey ©   (2003-12-03 07:55) [2]

>TUser © (03.12.03 05:57) [1]
Про "память у DLL" - неверно

>Dimaxx © (03.12.03 01:46)
Используй MMF (Memory Mapped Files). Описание в Win32SDK


 
Amoeba   (2003-12-03 13:14) [3]

В кладовке лежит TMMFStream


 
Dimaxx ©   (2003-12-04 01:20) [4]

Спасибочки!!...


 
nikkie ©   (2003-12-04 01:30) [5]

>чтобы главное приложение и библиотеки могли писать и читать в нее

памяти у "приложения" нет. память есть у процесса. если ты используешь dll, то они загружаются в тот же процесс, поэтому адресное пространство то же самое. MMF нужен, если надо общаться 2 разным процессам.


 
Dimaxx ©   (2003-12-05 01:22) [6]

Нихрена! Я гружу статически dll"ку, запрашиваю в главной программе блок памяти, заполняю и передаю указатель в dll. Читает превосходно, но стоит записать туда что-либо, "Access violation..." в dll. Приехали, как говорится.


 
Юрий Зотов ©   (2003-12-05 01:54) [7]

> Dimaxx © (05.12.03 01:22) [6]

nikkie совершенно прав. А Ваше AV - просто следствие ошибки, либо непонимания деталей. При вызове очень многих функций API мы делаем абсолютно то же самое (Exe выделяет буфер и передает в DLL его адрес, а DLL в этот буфер пишет) - и ведь не возникает никаких проблем, не так ли?

ММФ для Вашей задачи - это стрельба из пушки по воробьям.


 
Юрий Зотов ©   (2003-12-05 02:08) [8]

> TUser © (03.12.03 05:57) [1]

> Думаю, что надо сделать dll, которую будут использовать все
> модули твоей проги.
А что такое "модуль программы"?

> Память у dll одна, вот там и создавай TMemoryStream.
У DLL вообще нет никакой памяти. Но если бы даже она и была, то передавать объект из DLL в Exe (или наоборот) - не есть хорошо.

> Radionov Alexey © (03.12.03 07:55) [2]
> Amoeba (03.12.03 13:14) [3]

Да, действительно, в теме человек написал "для двух приложений". Однако же, из текста вопроса ясно, что речь на самом деле идет только об одном процессе. Тогда зачем ММФ? Не проще ли в одной из DLL выделить буфер и экспортировать функции доступа к нему?



Страницы: 1 вся ветка

Текущий архив: 2003.12.16;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.012 c
1-52180
maxXP
2003-12-03 15:04
2003.12.16
Как получить код нажатой клавиши клавиатуры


14-52369
Goida
2003-11-22 21:57
2003.12.16
Хочу создать сайт. Но как?


7-52416
Fox-Programmer
2003-10-09 19:37
2003.12.16
Блокировать доступ к определённым файлам и папкам


14-52342
music lover
2003-11-18 00:01
2003.12.16
cd mp3


1-52133
Zhirnov Maxim
2003-12-05 16:05
2003.12.16
Как написать алгоритм поиска по всему реестру Windows?