同じオブジェクトへの新しいインターフェイスを作成する

このシナリオでは、サーバーは、同じオブジェクトへの新しいインターフェイス ポインターを取得することによって、各 OBJID_CLIENT 要求に応答します。

次のコード例では、 m_pUIObj は、複数のコンポーネント オブジェクト モデル (COM) インターフェイスをサポートするオブジェクトへのポインターです。 既存のオブジェクトが再利用されても、オブジェクトが取得されるたびに新しいインターフェイス ポインターが作成されるため、参照カウントをデクリメントする必要があります。

case WM_GETOBJECT:
   if ((DWORD)lParam == OBJID_CLIENT)
   {
      // Get a new interface to the same object. 
      IAccessible *pAcc = NULL;
      // The following increments the reference count. 
      m_pUIObj->QueryInterface(IID_IAccessible, (LPVOID*)&pAcc); 
      LRESULT lAcc = LresultFromObject(IID_IAccessible, wParam, 
            (LPUNKNOWN) &pAcc); 
      // Release our reference to the object.             
      pAcc->Release();               
      return lAcc;
   }
   break;  // Fall through to DefWindowProc.