Поделиться через


Метод 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, а также следующие значения.

Код возврата Описание
S_OK
Лицензия успешно создана.
E_NOTIMPL
Этот метод не реализован, так как объекты можно создавать только на полностью лицензированных компьютерах с помощью IClassFactory::CreateInstance.
E_POINTER
Недопустимый указатель, передаваемый в bstrKey или ppvObj . Например, он может иметь значение NULL.
E_NOINTERFACE
Объект можно создать (и лицензионный ключ действителен), за исключением того, что объект не поддерживает интерфейс, указанный в riid.
CLASS_E_NOAGGREGATION
Параметр pUnkOuter не имеет значения NULL, но этот класс объектов не поддерживает агрегирование.
CLASS_E_NOTLICENSED
Ключ, предоставленный в bstrKey , не является допустимым лицензионным ключом.

Комментарии

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

Если фабрика классов не предоставляет лицензионный ключ (то есть IClassFactory2::RequestLicKey возвращает E_NOTIMPL а член fRuntimeKeyAvail в LICINFO имеет значение FALSE в IClassFactory2::GetLicInfo), этот метод также может возвращать E_NOTIMPL. В таких случаях фабрика классов реализует IClassFactory2 , чтобы указать, лицензируется ли компьютер вообще через член fLicVerifiedLICINFO.

Требования

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

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

IClassFactory2

LICINFO