Поделиться через


Создание новых интерфейсов для того же объекта

В этом сценарии сервер отвечает на каждый запрос 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.