![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
dllmain vs init-final
Gu © (2012-01-08 14:59:00)есть ли смысл в dll связываться с конструкцией инициализасии в dpr
begin
DllProc := @DllMain;
DllMain (DLL_PROCESS_ATTACH) ;
end;
если проще подключить юнит и инициализацию и завершение библиотеки производить в
initialization
DllInit;
finalization
Dllfinal;
end.
? Имеею ли эти способы большие отличия?
RWolf (2012-01-08 19:02:00) [1]С DllMain связано много тонкостей, лучше её не использовать.
Rouse_ (2012-01-08 15:27:00) [2]
> DllProc := @DllMain;
> DllMain (DLL_PROCESS_ATTACH) ;
Данная конструкция применяется только в тех случаях, когда нужно контролировать DllProc. Обычно в случаях хуков, когда необходимо получить уведомление о подгрузке/выгрузке библиотеки. А отправка DLL_PROCESS_ATTACH (при получении которого выполняется некая инициализация) производится из-за того, что данное сообщение уже было отправлено в DllProc до ее подмены на DllMain
Dimka Maslov (2012-01-08 15:17:00) [3]Модулю должно быть глубоко индиферрентно, куда он подключён (на всякий случай есть IsLibrary). При этом в системные переменные лезть нужно тогда и только тогда, когда знаешь к чему это приведёт. Секции же initilization и finalization предназначены именно для того, в честь чего они названы. Внимание, вопрос! На кой надо вместо них городить огороды?