笔记 -CoCreateInstance
CoCreateInstance
创建组件的最简单的方法是使用 CoCreateInstance 函数。
在 COM 库中包含一个用于创建组件的名为 CoCreateInstance 的函数。此函数需要
一个 CLSID 参数,在此基础上创建相应组件的一个实例,并返回此组件的某个接口。
CoCreateInstance的声明
HRESULT_stdcallCoCreateInstance(REFCLSIDrclsid,
LPUNKNOWNpUnkOuter,
DWORDdwClsContext,
REFIIDriid,
LPVOID*ppv);
第一个参数:待创建组件的 CLSID。
第二个参数:用于聚合组件。
第三个参数:dwClsContext 的作用是限定所创建的组件的执行上下文。
第四个参数:iid 为组件上待使用的接口的 iid。
CoCreateInstance将在最后一个参数中返回此接口的指针。通过将一个 IID 传给
CoCreateInstance,客户将无需在创建组件之后去调用其 QueryInterface 函数。
CoCreateInstance 的实现
HRESULT CoCreateInstance(const CLSID& clsid,
IUnknown* punkonwnDuter,
DWORD dwClsContext,
const IID& iid,
void** ppv)
{
// Set the out paameter to NULL
*ppv = NULL;
// Create the class factory
// and get an IClassFactroy interface pointer.
IClassFactory* pIFactory = NULL;
HRESULT hr = CoGetClassObject(clsid,
dwClsContext,
NULL,
IID_IClassFactory,
(void**)&pIFactory);
if (SUCCEEDED(hr))
{
// create the component.
hr = pIFactory->CreateInstance(punkonwnDuter, iid, ppv);
pIFactory->Release()();
}
return hr;
}
评论6
最新资源