Главная страница
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.02 c
6-52301
Vladimir Bolotin
2003-10-22 21:27
2003.12.16
поддержка нескольких протоколов (POP3, IMAP,...)


1-52144
sprit
2003-12-02 23:58
2003.12.16
GetMem, потеря указателя


4-52440
soniko
2003-10-08 11:22
2003.12.16
Проблема с RasSetEntryProperties()


1-52222
alexnmsk
2003-12-04 14:55
2003.12.16
InplaceEditor


14-52397
Ломброзо
2003-11-21 10:15
2003.12.16
Ё-моё, с Днем Рож#дения!