QueryInterface
Obwohl es Mechanismen, durch die ein Objekt die Funktionalität ausgedrückt werden, sie bereitstellt statisch gibt (bevor instanziiert wird), ist der einfache COM-Mechanismus, die IUnknown -Methode zu verwenden, die QueryInterface aufgerufen wird.
Jede Schnittstelle wird von IUnknown abgeleitet, enthält jede Schnittstelle eine Implementierung von QueryInterface.Unabhängig von der Implementierung fragt diese Methode ein Objekt mit dem IID der Schnittstelle ab, mit der der Aufrufer einen Zeiger wünscht.Wenn das Objekt, die die herstellen, QueryInterface einen Zeiger auf die Schnittstelle abgerufen werden, während AddRef auch aufrufen.Andernfalls gibt es den E_NOINTERFACE Fehlercode zurück.
Beachten Sie, dass Sie Verweiszählung Regeln jederzeit befolgen müssen.Wenn Sie Release auf einem Schnittstellenzeiger aufrufen, um den Verweiszähler auf null zu verringern, sollten Sie diesen Zeiger nicht erneut verwenden.Gelegentlich müssen Sie sich ein schwacher Verweis auf ein Objekt (das heißt, möchten Sie ein Zeiger auf eine der Schnittstellen abrufen, ohne den Verweiszähler erhöht wird), aber es ist nicht zulässig, hierzu, indem Sie QueryInterface gefolgt von Release aufrufen.Der Zeiger abgerufenen auf diese Weise ist ungültig und sollte nicht verwendet werden.Dies wird schneller deutlich, wenn _ATL_DEBUG_INTERFACES definiert wird, sodass, dieses Makro ist zu definieren eine einfache Methode zum Suchen nach - Verweiszählungsfehlern.