![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
выгрузка
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