Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

выгрузка


KJ ©   (2007-05-30 19:44:00) 

Пишу длл и хочу вней написать динамическую выгрузку себя
тоесть чтоб прога не держала мою длл

ЗЫ обычно это в проге  выгружают но хочу в длл
или как можно другой прогой скажем 'отпустить требуюмую длл'


KJ   (2007-06-09 20:54:00) [1]

решил пропатчиванием памяти и прога отпускает длл
завернул в одну функцию


KJ   (2007-05-31 00:14:00) [2]

по русски

при запуске программа N динамически грузит длл D
N- моя исходников нет (сама она FreeLibrary неделает), D- пишу сам

работает и через некоторое время мне надо заменить D
на другую не прибивая N так как он занят вычислениями
и неиспользует D что видно трассировкой между D и N

как нибудь выгружаем D (у N остается просто недействительный
хэндл и другие указатели)

заменяем длл D - когда прогу перезапустят (может через сутки)
он будет работать уже с новой длл


Loginov Dmitry   (2007-05-30 23:20:00) [3]

> он туп


кто туп?


> подсмотрел монитором


смотрят обычно в/на монитор, а не наоборот ))

В общем, расскажи что ты хочешь, только по-русски.


KJ   (2007-05-30 23:05:00) [4]

нет требуется заменить длл , без убития процесса (ЗАДАЧ),
он туп и поэтому обращается все вольшь несколько раз к ней и позже
не обращается - подсмотрел монитором

впрочем после перезапуска проги (через пару часов он загрузит уже новую длл filter32.dll)


Loginov Dmitry   (2007-05-30 22:01:00) [5]

> А с однократной загрузкой увсе работет надежно как дубина


Дак и не нужна она многократная выгрузка, если планируется не раз обращаться к функциям Dll-ки.


Kostafey   (2007-05-30 21:44:00) [6]

> Очень сильно сомневаюсь, что ошибки возникали из-за
> многократной загрузке\выгрузке(если это делается корректно)
> .

Я тоже в этом сомневаюсь ;))))

Однако, даже если брать стандартные примеры по этому вопросу из букварей,
то ошибки тоже возникают, просто нужно раз 50 произвести загрузку/выгрузку.
Нет, серьезно.
При увеличении объема кода библиотеки количество операций загрузки/выгрузки
до появления ошибки уменьшается.


> Их в другом месте искать надо.

Надо, но возможно они есть, возможно нет...
Пока копать в этом направлении нет ни времени ни смысла.
А с однократной загрузкой увсе работет надежно как дубина :)))


Riply   (2007-05-30 21:35:00) [7]

> [7] Kostafey ©   (30.05.07 21:29)
>Не надо делать выгрузку Dll.
>Вот не надо и все.
>Когда код dll немного разросся, то при многократной загрузке/выгрузке
>dll возникали ошибки. В самой же dll ничего криминального не было -
>все очень простенько.
Очень сильно сомневаюсь, что ошибки возникали из-за
многократной загрузке\выгрузке(если это делается корректно).
Их в другом месте искать надо.


Kostafey   (2007-05-30 21:29:00) [8]

Не надо делать выгрузку Dll.
Вот не надо и все.
У меня была такая ситуация, когда приходилось работать не имея возможности вностить
изменения в код основного приложения.

Когда код dll немного разросся, то при многократной загрузке/выгрузке
dll возникали ошибки. В самой же dll ничего криминального не было -
все очень простенько.

Самый надежный способ (imho) - делать загрузку dll при первом обращении к
ней и... и все.
Выгрузится она вместе с приложением.


Riply   (2007-05-30 21:22:00) [9]

> [5] Riply ©   (30.05.07 21:19)
В принципе, ihmo, можно выгрузить как из самой DLL - ки, так и с помощью RemouteThread


Riply   (2007-05-30 21:19:00) [10]

> [4] Loginov Dmitry ©   (30.05.07 21:17)
>Самовыгрузка DLL - это нечто ))
>Есть подозрение, что FreeLibrary без AV не сработает.
Зависит от личных отношений целевого процесса и DLL - ки :)


Riply   (2007-05-30 21:17:00) [11]

> [2] KJ   (30.05.07 20:58)
>LoadLibrary делает прога, исходников которых нет
HMODULE hLibModule не извесен, но есть путь и имя
А кто мешает его узнать(как один из вариантов) в самой DLL ?
>а как у себя сделать FreeLibrary ?
FreeLibraryAndExitThread ?
Не помню точно названия :(


Loginov Dmitry   (2007-05-30 21:17:00) [12]

Самовыгрузка DLL - это нечто ))
Есть подозрение, что FreeLibrary без AV не сработает.


KJ   (2007-05-30 20:58:00) [13]

LoadLibrary делает прога, исходников которых нет

а как у себя сделать FreeLibrary ?

HMODULE hLibModule не извесен, но есть путь и имя


Desdechado   (2007-05-30 19:49:00) [14]

LoadLibrary
FreeLibrary


Наверх

Титульная страница Поиск, карта сайта Написать письмо