Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.145.201.71] |
|
Сообщ.
#1
,
|
|
|
Всех приветствую!
Подскажите, как (и можно ли) в Delphi (интересует, в частности 7, да и вообще в целом) создать shared data секцию в DLL и объявить в ней переменные (или типизированные константы)? Т.е. чтобы DLL некоторую общую область памяти, независимо от того, из какого процесса она вызвана. |
Сообщ.
#2
,
|
|
|
Нет, нельзя.
|
Сообщ.
#3
,
|
|
|
Если в эту область памяти не писать - она и так будет шаред между первыми семи процессами которые подгрузят эту DLL. При записи страницы памяти будут отключены от механизма шаринга.
Проверить явзяется ли страница шареной можно через вызов QueryWorkingSet который в итоге вернет массив вот таких структур https://docs.microsoft.com/en-us/windows/wi...rking_set_block |
Сообщ.
#4
,
|
|
|
Я думаю товарищу нужно что то типа такого https://docs.microsoft.com/en-us/previous-v...270058(v=vs.60) дельфийский линкер такого не поддерживает.
|
Сообщ.
#5
,
|
|
|
Цитата Rouse_ @ Зачем же она нужна, если в неё не писать?Если в эту область памяти не писать - она и так будет шаред Нужно писать, конечно Но я уже понял, что не сделаешь и сделал через Named shared memory |
Сообщ.
#6
,
|
|
|
Цитата jack128 @ дельфийский линкер такого не поддерживает Тут скорее связка линкер + сишный рантайм. |