QueryInterface
オブジェクトが機能を表現できる機構が、静的に提供する (インスタンス化される前に) ですが、基本的な COM の機構は QueryInterfaceという IUnknown のメソッドを使用することです。
すべてのインターフェイスは IUnknownから派生しているため、すべてのインターフェイスに QueryInterfaceの実装があります。 実装に関係なく、このメソッドは呼び出し元は、ポインターを取得するインターフェイスの IID を使用してオブジェクトを照会します。 また AddRefの呼び出し中にインターフェイスをサポートするオブジェクト、QueryInterface がインターフェイスへのポインターを取得します。 それ以外の場合は E_NOINTERFACE のエラー コードを返します。
参照カウント の規則には常に従う必要があります。 ゼロに参照カウントをデクリメントするためのインターフェイス ポインターの [リリース] を呼び出すと、このポインターを使用しないでください。 ときどきオブジェクト (つまり、参照カウントをインクリメントしませんの 1 つがインターフェイスへのポインターを取得する) への弱い参照を取得する必要がある QueryInterface を **[リリース]**後に呼び出さないことで行います。は適切ではありません。 このような方法で取得されたポインターは無効なため、使用しないでください。 _ATL_DEBUG_INTERFACES が定義されているため、このマクロを定義すると、参照カウント バグを検出する便利な方法です。この場合も簡単に明確になります。