Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2002.12.23;
Скачать: [xml.tar.bz2];

Вниз

Можно ли выгрузить из памяти dll и как?   Найти похожие ветки 

 
Alexander   (2002-11-10 11:13) [0]

Загружаю её в память не я и мне достоверно известно, что она уже не используется. Она, конечно и сама через некоторое время выгрузиться, но мне нужно ускорить этот процесс (uninstall программы)


 
Наезжалкин   (2002-11-10 11:54) [1]

Попробуйте FreeLibrary(). Сильная вещь!


 
Reindeer Moss Eater   (2002-11-10 12:23) [2]

Не поможет, хоть и сильная вешь.


 
Relict   (2002-11-10 13:57) [3]

а зачем её выгружать если она(dll) уже не используется
зразу смело удаляй
операционнка сама ее выгрузит как поступит команда на удаление
в чем проблемма то?


 
Song   (2002-11-10 14:16) [4]

GetModuleHandle()+FreeLibrary()
Стыдно должно быть, товарищ, такие вопросы задавать! ;-)


 
Aleksey Pavlov   (2002-11-10 14:39) [5]

Забавно, господа, получается у вас.
Постановка задачи:
"Загружаю её в память не я и мне достоверно известно, что она уже не используется."
Можно сделать вывод, что счётчик ссылок обнулён и DLL находится в памяти только из-за "привычки" Windows ненадолго сохранять в памяти последнии загруженные физические образы DLL уже после обнуления ссылок на них.
Таким образом, попытка GetModuleHandle()+FreeLibrary() будет неудачной.
Насколько мне известно, документированных способов очистки физ. памяти из-под "обнулённой" DLL "вручную" не существует.
Система сама освободит память, когда потребуется.


 
Song   (2002-11-10 15:07) [6]

2Aleksey Pavlov © (10.11.02 14:39)
Можно сделать цикл постоянного исполнения FreeLibrary пока dll не будет вытащена.


 
Reindeer Moss Eater   (2002-11-10 15:24) [7]

Это лишь отменит отображение DLL в адресное пространство процесса, занятого циклическим выполнением FreeLibrary.

Если библиотека была загружена еще кем-то, то ничего реально не выгрузится.


 
kig   (2002-11-10 19:31) [8]

Если используется XP, то можно попробывать

CoFreeUnusedLibrariesEx
Unloads any DLLs that are no longer in use and whose unload delay has expired.

void CoFreeUnusedLibrariesEx(

DWORD dwUnloadDelay, //The unload delay for DLLs no longer in use

DWORD dwReserved //Reserved for future use

);

Parameters
dwUnloadDelay
[in] The delay in milliseconds between the time that the DLL has stated it can be unloaded until it becomes a candidate to unload. Setting dwUnloadDelay=INFINITE uses the system default delay (10 minutes). Setting dwUnloadDelay=0 forces the unloading of any DLLs without any delay.

dwReserved

[in] Reserved for future use; must be zero.


 
Alex44   (2002-11-10 19:33) [9]

Windows cachiruet dll"s, i, v obshem, pravil"no delaet. IMHO, esli DLL ne zanyata ni kem drugim, to ona vygruzitsya, esli potrebovat" mnogo pamyati.



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

Форум: "WinAPI";
Текущий архив: 2002.12.23;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.008 c
14-74928
lak_b
2002-12-01 15:03
2002.12.23
файлы ресурсов


3-74587
@andrew
2002-11-19 17:32
2002.12.23
SQL. Замучился искать в доках!!! Хелп!!! Можно ли в переменную...


1-74835
Fantom
2002-12-12 08:54
2002.12.23
RichEdit как установить позицию курсора?


3-74542
Evyshka
2002-12-03 16:50
2002.12.23
Поиск по записям


14-74981
Romychk
2002-11-29 11:32
2002.12.23
Вирусы





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский