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并且 LICINFO 中的 fRuntimeKeyAvail 成员在 IClassFactory2::GetLicInfo) 设置为 FALSE,则此方法也可以返回E_NOTIMPL。 在这种情况下,类工厂实现 IClassFactory2 只是为了指定计算机是否完全通过 LICINFO 的 fLicVerified 成员获得许可。要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 2000 Professional [仅限桌面应用] |
最低受支持的服务器 | Windows 2000 Server [仅限桌面应用] |
目标平台 | Windows |
标头 | ocidl.h |