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