Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Извлекает объект класса из обработчика или приложения объекта DLL.
OLE не предоставляет эту функцию. Библиотеки DLL, поддерживающие объектную модель КОМПОНЕНТОВ OLE (COM), должны реализовывать DllGetClassObject в обработчиках объектов OLE или в приложениях DLL.
Синтаксис
HRESULT DllGetClassObject(
[in] REFCLSID rclsid,
[in] REFIID riid,
[out] LPVOID *ppv
);
Параметры
[in] rclsid
ИДЕНТИФИКАТОР CLSID, который свяжет правильные данные и код.
[in] riid
Ссылка на идентификатор интерфейса, который вызывающий объект будет использовать для взаимодействия с объектом класса. Обычно это IID_IClassFactory (определяется в заголовках OLE как идентификатор интерфейса для IClassFactory).
[out] ppv
Адрес переменной указателя, которая получает указатель интерфейса, запрошенный в riid. После успешного возврата *ppv содержит запрошенный указатель интерфейса. При возникновении ошибки указатель интерфейса имеет значение NULL.
Возвращаемое значение
Эта функция может возвращать стандартные возвращаемые значения E_INVALIDARG, E_OUTOFMEMORY и E_UNEXPECTED, а также следующие значения.
Код возврата | Описание |
---|---|
|
Объект был успешно получен. |
|
Библиотека DLL не поддерживает класс (определение объекта). |
Комментарии
Если вызов функции CoGetClassObject находит объект класса, который должен быть загружен в библиотеку DLL, CoGetClassObject использует экспортированную функцию DLL DllGetClassObject .
Примечания к вызывающим абонентам
Не следует вызывать DllGetClassObject напрямую. Если объект определен в библиотеке DLL, CoGetClassObject вызывает функцию CoLoadLibrary для загрузки библиотеки DLL, которая, в свою очередь, вызывает DllGetClassObject.Примечания для разработчиков
Необходимо реализовать DllGetClassObject в библиотеках DLL , поддерживающих COM, и экспортировать его из.Примеры
Ниже приведен пример (на C++) реализации DllGetClassObject. В этом примере DllGetClassObject создает объект класса и вызывает его метод QueryInterface для получения указателя на интерфейс, запрошенный в riid. Реализация освобождает ссылку на интерфейс IClassFactory , так как возвращает вызывающему объекту указатель на IClassFactory .
HRESULT _export CALLBACK DllGetClassObject
(REFCLSID rclsid, REFIID riid, LPVOID * ppvObj)
{
HRESULT hr = E_OUTOFMEMORY;
*ppvObj = NULL;
CClassFactory *pClassFactory = new CClassFactory(rclsid);
if (pClassFactory != NULL) {
hr = pClassFactory->QueryInterface(riid, ppvObj);
pClassFactory->Release();
}
return hr;
}
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows 2000 Professional [только классические приложения] |
Минимальная версия сервера | Windows 2000 Server [только классические приложения] |
Целевая платформа | Windows |
Header | combaseapi.h (включая Objbase.h) |