List 2-15 CClassFactory::QueryInterfaceメソッドの実装

  1: HRESULT __stdcall CClassFactory :: QueryInterface(REFIID riid, void** ppvObj)
  2: {
  3:     if (IsEqualIID(riid ,IID_IUnknown) || IsEqualIID(riid ,IID_IClassFactory))
  4:         // IClassFactoryインタフェースのアドレスを*ppvObjポインタに設定する
  5:         *ppvObj = static_cast(this);
  6:         // *ppvObj = (IClassFactory*)this;と同じ
  7:     else
  8:     {
  9:         // インタフェースが見つからない場合
 10:         *ppvObj = NULL;
 11:         return E_NOINTERFACE;
 12:     }
 13:     // インタフェースが見つかったときには参照カウントを増やす
 14:     AddRef();
 15:     return S_OK;
 16: }