Прошло много времени с тех пор, как я коснулся COM, так что будьте добры;) Это под WindowsCE 5.0 с SQLServerCE 2.0.
После вызова этого для загрузки SQLServerCE 2.0: -
IDBInitialize *pIDBInitialize = NULL;
CoCreateInstance(CLSID_SQLSERVERCE_2_0, NULL, CLSCTX_INPROC_SERVER, IID_IDBInitialize, (void**)&pIDBInitialize);
Загрузка модуля происходит для SSCE20.dll, который, очевидно, загружает механизм SQLServerCE в пространство процесса.
Что я не понимаю, так это если я сделаю это сразу после: -
pIDBInitialize->Release();
Я не вижу выгрузки модуля dll, поэтому SSCE20.dll (и друзья) все еще загружаются в мой процесс.
Теперь я попробовал CoFreeUnusedLibraries (), который, как я полагаю, заставляет COM очищать любые неиспользуемые библиотеки, но, похоже, это не помогает.
Во время выполнения я хочу иметь возможность полностью выгрузить dll SQLServerCE 2.0 из процесса, чтобы упростить обновление до 3.5SP1.
Я подозреваю, что это как-то связано с моделью совместно используемой dll, которую Microsoft использует под WindowsCE ... но я могу ошибаться:)
Заранее спасибо,
Дэвид.