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
bstrKeyppvObj 中传递的指针无效。 例如,它可能为 NULL
E_NOINTERFACE
可以 (创建对象,并且许可证密钥) 有效,但对象不支持 riid 指定的接口。
CLASS_E_NOAGGREGATION
pUnkOuter 参数为非 NULL,但此对象类不支持聚合。
CLASS_E_NOTLICENSED
bstrKey 中提供的密钥不是有效的许可证密钥。

注解

实施者说明

如果类工厂未提供许可证密钥 (即 IClassFactory2::RequestLicKey 返回E_NOTIMPL并且 LICINFO 中的 fRuntimeKeyAvail 成员在 IClassFactory2::GetLicInfo) 设置为 FALSE,则此方法也可以返回E_NOTIMPL。 在这种情况下,类工厂实现 IClassFactory2 只是为了指定计算机是否完全通过 LICINFOfLicVerified 成员获得许可。

要求

要求
最低受支持的客户端 Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器 Windows 2000 Server [仅限桌面应用]
目标平台 Windows
标头 ocidl.h

另请参阅

IClassFactory2

LICINFO