Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
Prostoe reshenie 03.07.01 21:29 Число просмотров: 820
Автор: + <Mikhail> Статус: Elderman
|
Napishi svou DLL kak COM object, i kogda vse objects budut ubity v DLL togda reference DLL = 0 i eta dll vygruzitsia is pamiati avtomaticheski:
Example :
dobavliesh krome svoih export Foo eche:
DllCanUnloadNow()
DllGetClassObject()
Object tebe nuzhen tolko dlia togo chto upravliat` zagruzkoii tvoee dll.
Kogda ty sozdaesh object CoCreateInstance(), tvoia Dll zagruzitsia v pamiat` i poka object suchestvuet dll budet v pamiti. Kak tolko Vse instances tvoego object (v tvoem sluchae tolko odna) budut ubity, to COM vygruzit tvou Dll ( eto kogda zovetsia CoUninitialize()) , no esli problemy vyzyvat` etu CoUninitialize() togda , sozdaii svoi object kak Shellextention dlia Explorera. Dll CanUnloadNow() budet vyzuvat`sia avtomaticheski (by default stoit zaderzhka, no esli est registry key
HKLM\software\microsoft\Windows\CurrentVersion\Explorer\AlwayUnloadDll (Default) = 1 ,togda budet vyzyvatsia DllCanUn. . . nemedlenno) , i vse chto tebe nado budet sdelat` , eto : esli ty hochesh Dll byt` zagruzhennoi togd DllCanUnloadNow() = FALSE, kak tolko reshish izbavitsia DllCanUnloadNow()=TRUE.
|
|
|