Функция DllCanUnloadNow (combaseapi.h)

Определяет, используется ли библиотека DLL, реализующая эту функцию. В противном случае вызывающий объект может выгрузить библиотеку DLL из памяти.

OLE не предоставляет эту функцию. Библиотеки DLL, поддерживающие модель COM, должны реализовывать и экспортировать Библиотеку DllCanUnloadNow.

Синтаксис

HRESULT DllCanUnloadNow();

Возвращаемое значение

Если функция выполнена успешно, возвращаемое значение будет S_OK. В противном случае это S_FALSE.

Комментарии

Вызов DllCanUnloadNow определяет, используется ли библиотека DLL, из которой она экспортируется. Библиотека DLL больше не используется, если она не управляет существующими объектами (число ссылок на все ее объекты равно 0).

Примечания к вызывающим абонентам

Не нужно вызывать DllCanUnloadNow напрямую. OLE вызывает его только через вызов функции CoFreeUnusedLibraries . При возврате S_OK CoFreeUnusedLibraries освобождает библиотеку DLL.

Примечания для разработчиков

Необходимо реализовать DllCanUnloadNow в и экспортировать его из библиотек DLL, которые должны быть динамически загружены с помощью вызова функции CoGetClassObject . (Также необходимо реализовать и экспортировать функцию DllGetClassObject в той же библиотеке DLL).

Если библиотеке DLL, загруженной через вызов CoGetClassObject , не удается экспортировать DllCanUnloadNow, библиотека DLL не будет выгружена до тех пор, пока приложение не вызовет функцию CoUninitialize для освобождения библиотек OLE.

Библиотека DllCanUnloadNow должна возвращать S_FALSE, если имеются ссылки на объекты, управляемые библиотекой DLL.

Требования

Требование Значение
Минимальная версия клиента Windows 2000 Professional [только классические приложения]
Минимальная версия сервера Windows 2000 Server [только классические приложения]
Целевая платформа Windows
Header combaseapi.h (включая Objbase.h)

См. также раздел

Dllgetclassobject