dllGetClassObject 函数 (combaseapi.h)
从 DLL 对象处理程序或对象应用程序中检索类对象。
OLE 不提供此函数。 支持 OLE 组件对象模型 (COM) 的 DLL 必须在 OLE 对象处理程序或 DLL 应用程序中实现 DllGetClassObject 。
语法
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 ,并从支持 COM 的) DLL 中导出它。示例
下面是在 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 |
标头 | combaseapi.h (包括 Objbase.h) |