书上说CoGetClassObject通过调用DllGetClassObject实现返回要求的接口指针,但是比如下面的一个例程中,在Client中通过调用CoGetClassObject(CLSID_XXX,CLSCTX_SERVER,NULL,IID_IClassFactory,(void**)&pFactory);
可以正确返回类工厂指针,如果修改IID_IClassFactory则返回错误。但是DllGetClassObject中并没有对IID_IClassFactory的判断,请教原因!
STDAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, void** ppObject)
{
if(rclsid==CLSID_XXX)
{
CS_Factory* pf=new CS_Factory;
if(FAILED(pf->QueryInterface(riid, ppObject)))
{
delete pf;
*ppObject=NULL;
return E_INVALIDARG;
}
}
else
return CLASS_E_CLASSNOTAVAILABLE;
return NO_ERROR;
}