Erstellen neuer Schnittstellen für dasselbe Objekt
In diesem Szenario antwortet der Server auf jede _ OBJID-CLIENTanforderung, indem er einen neuen Schnittstellenzeiger auf dasselbe Objekt abruft.
Im folgenden Beispielcode ist m _ pUIObj ein Zeiger auf ein Objekt, das mehr als eine com-Schnittstelle (Component Object Model) unterstützt. Obwohl ein vorhandenes Objekt wiederverwendet wird, wird jedes Mal, wenn das Objekt abgerufen wird, ein neuer Schnittstellenzeiger erstellt, sodass die Verweisanzahl dekrementiert werden muss.
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.