Метод IClassFactory2::CreateInstanceLic (ocidl.h)
Создает экземпляр лицензированного объекта для указанного лицензионного ключа. Этот метод является единственным возможным способом создания объекта на нелицензированных компьютерах.
Синтаксис
HRESULT CreateInstanceLic(
[in] IUnknown *pUnkOuter,
[in] IUnknown *pUnkReserved,
[in] REFIID riid,
[in] BSTR bstrKey,
[out] PVOID *ppvObj
);
Параметры
[in] pUnkOuter
Указатель на управляющий интерфейс IUnknown на внешнем неизвестном объекте, если этот объект создается в составе агрегата. Если объект не является частью агрегата, этот параметр должен иметь значение NULL.
[in] pUnkReserved
Этот параметр не используется и должен иметь значение NULL.
[in] riid
Ссылка на идентификатор интерфейса, используемого для взаимодействия с вновь созданным объектом.
[in] bstrKey
Ключ лицензии времени выполнения, ранее полученный из IClassFactory2::RequestLicKey , необходимый для создания объекта.
[out] ppvObj
Адрес переменной указателя, получающей указатель интерфейса, запрошенный в riid. После успешного возврата *ppvObj содержит запрошенный указатель интерфейса. При возникновении ошибки реализация должна присвоить *ppvObjзначение NULL.
Возвращаемое значение
Этот метод может возвращать стандартные возвращаемые значения E_INVALIDARG, E_OUTOFMEMORY и E_UNEXPECTED, а также следующие значения.
Код возврата | Описание |
---|---|
|
Лицензия успешно создана. |
|
Этот метод не реализован, так как объекты можно создавать только на полностью лицензированных компьютерах с помощью IClassFactory::CreateInstance. |
|
Недопустимый указатель, передаваемый в bstrKey или ppvObj . Например, он может иметь значение NULL. |
|
Объект можно создать (и лицензионный ключ действителен), за исключением того, что объект не поддерживает интерфейс, указанный в riid. |
|
Параметр pUnkOuter не имеет значения NULL, но этот класс объектов не поддерживает агрегирование. |
|
Ключ, предоставленный в bstrKey , не является допустимым лицензионным ключом. |
Комментарии
Примечания для разработчиков
Если фабрика классов не предоставляет лицензионный ключ (то есть IClassFactory2::RequestLicKey возвращает E_NOTIMPL а член fRuntimeKeyAvail в LICINFO имеет значение FALSE в IClassFactory2::GetLicInfo), этот метод также может возвращать E_NOTIMPL. В таких случаях фабрика классов реализует IClassFactory2 , чтобы указать, лицензируется ли компьютер вообще через член fLicVerifiedLICINFO.Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows 2000 Professional [только классические приложения] |
Минимальная версия сервера | Windows 2000 Server [только классические приложения] |
Целевая платформа | Windows |
Header | ocidl.h |