реклама на сайте
подробности

 
 
> DLL, Глупый вопрос. :)
muravei
сообщение Jul 26 2016, 10:44
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 538
Регистрация: 13-08-05
Пользователь №: 7 591



Можно ли в длл(свою) загрузить другую длл.
Оно , конечно, не долго попробовать...
Но , может , этого не стоит и делать. laughing.gif
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
jcxz
сообщение Jul 26 2016, 12:25
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(muravei @ Jul 26 2016, 16:44) *
Можно ли в длл(свою) загрузить другую длл.
Оно , конечно, не долго попробовать...
Но , может , этого не стоит и делать. laughing.gif

А что значит "в длл загрузить длл"?
Как я понимаю: при вызове функции DLL, она отображается в память вызвавшего процесса, и продолжается собственно выполнение этого же процесса.
Если изнутри этой функции вызвать другую функцию DLL - ну и что? Таких вызовов полно. Произойдёт опять отображение той второй DLL на память этого же процесса.
У каждого процесса своя копия образа всех отображённых в него DLL.
Т.е. - у DLL нет своей памяти и "грузить", соответственно, туда невозможно. Память есть у процесса. Туда и отображаются DLL.
Go to the top of the page
 
+Quote Post
muravei
сообщение Jul 26 2016, 13:52
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 538
Регистрация: 13-08-05
Пользователь №: 7 591



Цитата(jcxz @ Jul 26 2016, 16:25) *
. Память есть у процесса. Туда и отображаются DLL.

Естественно, но , например, при завершении процесса, кто ее выгрузит из памяти?
Процесс , то не знает...
Go to the top of the page
 
+Quote Post
jcxz
сообщение Jul 27 2016, 06:58
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(muravei @ Jul 26 2016, 19:52) *
Естественно, но , например, при завершении процесса, кто ее выгрузит из памяти?
Процесс , то не знает...

Это дело системы - выгружать или нет. Эта DLL может использоваться и другими процессами.
Система может, например, завести счётчик использования, инкрементировать его при каждом отображении в память процесса, декрементировать при завершении такого процесса. И когда счётчик станет ==0 - значит DLL больше не нужна, можно её выгрузить.

Цитата(k155la3 @ Jul 26 2016, 19:54) *
Возможно имеется ввиду не загрузка, а "зависимые" DLL
когда одно DLL тянет за собой целый парвоз-состав.

В любом случае: выполняется не DLL, а процесс и только у него есть контекст. А при вызове функции DLL данным процессом, она отображается в память процесса. Неважно - вызвана эта функция из кода процесса или из кода функции другой DLL, уже отображенной в памятть процесса - для системы она вызвана из процесса, так как вызвана из его памяти.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th August 2025 - 20:38
Рейтинг@Mail.ru


Страница сгенерированна за 0.01659 секунд с 7
ELECTRONIX ©2004-2016