QueryInterface

Přestože existují mechanismy, pomocí kterých může objekt vyjádřit funkce, které poskytuje staticky (před vytvořením instance), je základním mechanismem modelu COM použít metodu s IUnknown 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 na objekt pomocí rozhraní, na IID 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.

Nezapomeňte, že musíte vždy dodržovat pravidla počítání odkazů. Pokud zavoláte ukazatel rozhraní pro dekrementování počtu odkazů na nulu, neměli Release byste tento ukazatel používat znovu. V některých případech může být nutné získat slabý odkaz na objekt (to znamená, že budete 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 následovaným QueryInterfaceRelease . Ukazatel získaný tímto způsobem je neplatný a neměl by se používat. To je při definování patrnější, takže definování tohoto makra je užitečný způsob, jak najít _ATL_DEBUG_INTERFACES chyby počítání odkazů.

Viz také

Úvod do modelu COM
: Navigace v objektu