Я использую в интерфейс IShellLink для получения информации из ярлыков.
Функция используется редко, а программа должна всегда находиться в памяти постоянно, хотел сделать, чтобы перед использованием этой функции (читай IShellLink) все что надо загружалось и инициализировалось, а потом соответственно выгружалось.
Однако фактически ничего не выгружается, т.е. после использования этой функции в памяти остаются следующие библиотеки:
Loaded 'C:\WINDOWS\system32\ole32.dll', No symbols loaded.
Loaded 'C:\WINDOWS\system32\clbcatq.dll', No symbols loaded.
Loaded 'C:\WINDOWS\system32\oleaut32.dll', No symbols loaded.
Loaded 'C:\WINDOWS\system32\comres.dll', No symbols loaded.
Loaded 'C:\WINDOWS\system32\linkinfo.dll', No symbols loaded.
Loaded 'C:\WINDOWS\system32\ntshrui.dll', No symbols loaded.
Loaded 'C:\WINDOWS\system32\atl.dll', No symbols loaded.
Loaded 'C:\WINDOWS\system32\netapi32.dll', No symbols loaded.
Loaded 'C:\WINDOWS\system32\userenv.dll', No symbols loaded.
Loaded 'C:\WINDOWS\system32\setupapi.dll', No symbols loaded.
Никаких Unloaded потом нет. Соответсвенно размер памяти, показываемый таксменеджером увеличивается на ~2 Mb (2 до и 4 после ипользования интерфейса)
Естественно делаю CoInitialize(), Release(), CoUninitialize() и даже пробовал CoFreeUnusedLibraries() и CoFreeAllLibraries() — не помогает.
Вот сижу и не знаю как быть.
Ручками делать FreeLibrary? А если потом опять надо будет интерфейсом воспользоваться?