1 简介

  • 类厂:用于创建COM对象的COM对象
  • 目标:完成COM对象的创建过程,更好地把客户与对象隔离开来。
  • 特殊性:实现一个或多个创建接口,缺省的接口为IClassFactory, 类厂本身没有CLSID

类厂与COM对象一一对应
image.png

2 获取类厂指针

  1. HRESULT DllGetClassObject(
  2. const CLSID& clsid, # COM对象的CLSID
  3. const IID& iid, # 客户提供, 一般写IID_IClassFactory就可以了
  4. (void **)ppv # 工厂指针, 先声明IClassFactory* pcf = NULL; 然后把 (LPVOID*)&pcf 传到这个函数里
  5. );

3 类厂接口

  1. class IClassFactory : public IUnknown
  2. {
  3. virtual HRESULT __stdcall CreateInstance(IUnknown *pUnknownOuter, const IID& iid, void **ppv) = 0;
  4. virtual HRESULT __stdcall LockServer(BOOL bLock) = 0;
  5. };