![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как выполнить финанльные операции в DLL пр ее выгрузке из памяти?
Rudis © (2004-09-02 14:08:00)В общем проблема такая, имеется ряд DLL-ок с однотипными процедурами, создания формы, удаления ее и задания хендла для IBDataBase. Все однотипно, только содержимое форм разное. При выгрузке динамически подгруженных библиотек происходит ошибка. DLLProc использовал, когда выгружаю одну DLL-ку - проблем нет, но если у меня их две то после выгрузки ругается на попытку чтения для несуществующего элемента. Что любопытно, адрес DLLProc, пока не поменял, я сохраняю в локальной переменной в DLL-ке, но он nil, хоть до этого я предыдущий и назначал.
Digitman (2004-09-02 15:02:00) [1]
> Может недопонимаю как DLLProc работает? (Более чем вероятно)
скорей всего так и есть
> сохраняю в локальной переменной в DLL-ке
и эта переменная, будь она хоть локальная хоть глобальная, имеет смысл только для ДАННОГО экземпляра ДЛЛ ... в других экземплярах ДЛЛ эта переменная - своя, и она не имеет ничего общего с аналогичными по назначению переменными в прочих загружаемых экз-рах ДЛЛ
имеется ввиду, что если в 1.dll и в 2.dll была декларирована некая переменная old_dllproc: Pointer, то при однократных LoadLibrary('1.dll') и LoadLibrary('2.dll') в контекстах различных процессовсистемой будут созданы две совершенно независимых области памяти в секциях инициализированных данных каждого из этих процессов
Rudis (2004-09-02 14:56:00) [2]Я только сейчас подумал, а не от того ли это, что я Application.Handle в ДЛЛ-ке меняю на Хендл проги, но не восстанавливаю при выгрузке? К сожалению проверить до вечера не смогу, с собой исходников на работе нету...
Может еще какие варианты есть подскажите, авось до завтрешнего утра получится сделать...
Rudis (2004-09-02 14:50:00) [3]> "до этого" - это когда ?
Ну, может малость сумбурно излагаю, голова уже не варит, третьи сутки мудохаюсь над этим, а время гонит, еще вчера прогу установить должен был.
Имеется ввиду, что я в каждой загружаемой ДЛЛ-ке сохраняю прежнее значение DLLProc, и опосля всего ее восстанавливаю.
Как говорится на всякий який...
Так вот, при выгрузке одной из библиотек все ок, а как выгружаю вторую - так гемор, ацесс виолейшн. А мне таких штук 10-15 надо.
Может недопонимаю как DLLProc работает? (Более чем вероятно)
Но что то делать нужно...
kaZaNoVa (2004-09-02 14:27:00) [4]в делфе - у меня не разу не получалось !
вот на асме , си, dll_process_datach (как-то так) пашет ....
а на делфе что-то не хочет ...
Digitman (2004-09-02 14:25:00) [5]
> хоть до этого я предыдущий и назначал
"до этого" - это когда ?