QueryInterface

I když existují mechanismy, kterými může objekt vyjádřit funkce, které poskytuje staticky (před vytvořením instance), základním mechanismem modelu COM je použití IUnknown metody s názvem QueryInterface.

Každé rozhraní je odvozeno z IUnknown, takže každé rozhraní má implementaci QueryInterface. Bez ohledu na implementaci se tato metoda dotazuje objektu IID pomocí rozhraní, na které volající chce ukazatel. Pokud objekt podporuje toto rozhraní, QueryInterface načte ukazatel na rozhraní a zároveň volá AddRef. V opačném případě vrátí E_NOINTERFACE kód chyby.

Všimněte si, že musíte vždy dodržovat pravidla počítání odkazů . Pokud zavoláte Release na ukazatel rozhraní ke snížení počtu odkazů na nulu, neměli byste tento ukazatel znovu použít. Občas můžete potřebovat získat slabý odkaz na objekt (to znamená, že můžete chtít získat ukazatel na jedno z jeho rozhraní bez zvýšení počtu odkazů), ale není přijatelné to provést voláním QueryInterface následované Release. Ukazatel získaný takovým způsobem je neplatný a neměl by být použit. To se snadněji projeví, když _ATL_DEBUG_INTERFACES je definováno, takže definování tohoto makra je užitečný způsob, jak najít chyby při počítání odkazů.

Viz také

Úvod do modelu COM
QueryInterface: Navigace v objektu