Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.10.16;
Скачать: CL | DM;

Вниз

GetProcAddress   Найти похожие ветки 

 
френк   (2005-09-21 22:18) [0]

Указатель на функцию DLL, который возвращает GetProcAddress является постоянным для конкретной DLL? или он может измениться после освобождения модуля и при повторной его загрузке?

Знаю, что туплю, наверняка. Но прошу вас - поясните.


 
Anton_K ©   (2005-09-21 22:22) [1]

Может измениться.


 
френк   (2005-09-21 22:26) [2]

спасибо, вы меня уверили )


 
evvcom ©   (2005-09-22 09:24) [3]

После FreeLibrary может произойти Load другой Library по тем же адресам и последующий Load интересующей Library загрузит ее уже по другим адресам. Отсюда и смена адреса.


 
френк   (2005-09-23 13:38) [4]

но если не было другого LoadLibrary ? требуется ли все-таки рефрешить указатели, если небыло других вызовов ? простите, возможно, я зря так привезался с этим )


 
isasa ©   (2005-09-23 13:41) [5]

Если указатель нужен, зачем выгружать DLL ????


 
evvcom ©   (2005-09-23 13:55) [6]


> требуется ли все-таки рефрешить указатели, если небыло других
> вызовов

Откуда ты знаешь были или нет другие вызовы? Если ты ничего не подгружаешь, это еще не значит, что и система ничего не подгружает. Кроме того, имеется куча программ, которые вешают глобальные хуки и внедряют в адресные пространства чужих процессов свои dll. Ты об этом можешь даже не догадываться, но это факт. Поэтому, если тебя не раздражают сообщения Access Violation, то можешь и не рефрешить указатели.


 
evvcom ©   (2005-09-23 13:56) [7]

а лучше ответь на [5]


 
begin...end ©   (2005-09-23 14:15) [8]

> френк   (21.09.05 22:18)

> Указатель на функцию DLL, который возвращает GetProcAddress
> является постоянным для конкретной DLL? или он может измениться
> после освобождения модуля и при повторной его загрузке?

В общем случае -- может измениться. В частном случае -- когда DLL скомпонована с указанием нужного базового адреса загрузки и запретом загрузки по альтернативным адресам -- не может измениться, но при этом вполне вероятна ситуация, когда DLL не загрузится совсем, т.к. нужная область АП процесса может быть уже занята.


 
френк   (2005-09-23 21:19) [9]

теперь все понятно. спасибо всем.

относительно [5] - спросил просто из спортивного интереса )


 
Poirot ©   (2005-09-24 15:36) [10]

Скажу по секрету страшную тайну - адрес абсолютный может, а вот относительный нет:)
А базовый адрес относительно которого переводятся относительные в абсолютные он есть как раз HMODULE который возвращает таки LoadLibrary :) Вот вам и ответ:)
Полагаясь на то, что поведение загрузчика не отличается разнообразием то что можно таки и не вызывать повторно GetProcAddress ^)



Страницы: 1 вся ветка

Текущий архив: 2005.10.16;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.046 c
14-1127485865
oldman
2005-09-23 18:31
2005.10.16
Вопросик по Си-Билдер... (детсад)


2-1127120457
Новичок1
2005-09-19 13:00
2005.10.16
Народ посоветуйте как сделать остановку программы


14-1127711424
Priest
2005-09-26 09:10
2005.10.16
Какой профиль для пластиковых окон лучше?


14-1127337530
Yorick_cool
2005-09-22 01:18
2005.10.16
Кафка-Замок


2-1125919611
JTAG
2005-09-05 15:26
2005.10.16
Помогите кто работал с функцией ShellExecute