COM逐步教程
2006-07-22 22:54:38 来源:WEB开发网第8步:
一个进程内的COM对象其实和一个简单的Win32 DLL并没有什么两样,它们都遵守一个特定的协议。每个COM DLL都必须有一个名为DllGetClassObject的导出函数,客户端将会调用这个函数来获得类工厂(IUnknown或IClassFactory)的一个实例,然后紧接着是CreateInstance方法。创建一个新文件(Exports.cpp),在其中实现DllGetClassObject。
STDAPI DllGetClassObject(const CLSID& clsid,
const IID& iid,
void** ppv)
{
//
//检查请求的COM对象是否在此DLL之中
//DLL中可以实现多个COM对象
//
if (clsid == CLSID_AddObject)
{
//
//iid为类工厂指定了请求的接口
//客户端可以请求IUnknown、IClassFactory、IClassFactory2
//
CAddFactory *pAddFact = new CAddFactory;
if (pAddFact == NULL)
return E_OUTOFMEMORY;
else
{
return pAddFact->QueryInterface(iid , ppv);
}
}
//
//如果控制达到了这里,那么这就表示该DLL中没有实现用户指定的对象
//
return CLASS_E_CLASSNOTAVAILABLE;
}
更多精彩
赞助商链接