Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.12.16;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.007 c
3-52115
Fighter
2003-11-24 09:28
2003.12.16
Объединение таблиц из разных папок


3-52063
GIL
2003-11-25 12:29
2003.12.16
Очистка поля


4-52436
Ал
2003-10-22 10:20
2003.12.16
Как узнать, что запущен скринсэйвер и корректно завершить его?


14-52407
Слэш
2003-11-20 23:38
2003.12.16
Чем hi-колорные иконки рисовать можно?


14-52392
Думкин
2003-11-21 04:43
2003.12.16
С днем рождения! 21 ноября.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский