Форум: "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