QueryInterface

Ačkoli existují mechanismy, pomocí kterých objekt může vyjádřit funkce, které poskytuje staticky (před vytvořením instance), základním mechanismem MODELU COM je použít metodu IUnknown volanou QueryInterface.

Každé rozhraní je odvozeno z IUnknown, takže každé rozhraní má implementaci QueryInterface. Bez ohledu na implementaci tato metoda dotazuje objekt pomocí IID 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.

Mějte na paměti, že vždy musíte dodržovat pravidla počítání odkazů. Pokud zavoláte Release ukazatel rozhraní, který sníží počet odkazů na nulu, neměli byste tento ukazatel znovu použít. Někdy může být nutné získat slabý odkaz na objekt (to znamená, že chcete získat ukazatel na jedno z jeho rozhraní bez zvýšení počtu odkazů), ale není přijatelné to udělat voláním QueryInterface následovaným 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 počet chyb odkazů.

Viz také

Úvod do modelu COM
QueryInterface: Navigace v objektu