List 2-19 GetClassObject APIの実装

  1: HRESULT GetClassObject(REFCLSID clsid, REFIID riid, void** ppvObj)
  2: {
  3:     HRESULT hr;    // メソッドの実行結果を保持する
  4: 
  5:     // ClassFactoryオブジェクトを生成する
  6:     CClassFactory *pClassFactory = new CClassFactory;
  7:     if( pClassFactory == NULL)
  8:         return E_OUTOFMEMORY;
  9:     // インタフェースのアドレスを取得する
 10:     hr = pClassFactory->QueryInterface(riid,ppvObj);
 11:     // インタフェースの取得に失敗した場合,ClassFactoryオブジェクトを解放する
 12:     if( hr != S_OK)
 13:         pClassFactory->Release();
 14:     return hr;
 15: }