QueryInterface

 (Available in 01 TS COM - TS_COM_IClassFactory)

Source

METHOD QueryInterface( pstruIID AS _WinGUID, poAIUnknown AS TS_AbstractIUnknown PTR  ; ...
...) AS LONG PASCAL CLASS TS_IClassFactory
LOCAL hResult AS LONG
   TSTrace Enter
   IF TS_ValidQueryInterfaceRequest( SELF, pStruIID, poAIUnknown, @hResult )
      IF TS_IsEqualGUID( pStruIID, TS_GUID_IClassFactory( ) )
         SELF:AddRef( )
         OBJECT( PTR( _CAST, poAIUnknown ) ):=SELF
      ELSE
         hResult:=SUPER:QueryInterface( pStruIID, poAIUnknown  ; ...
        ... )
         DO CASE
         CASE hResult==E_NOINTERFACE
            IF TS_ShowNotSupportedInterfaces( )
               TS_DebOutSTRING( "Interface '"+TS_GUID2String( pStruIID )+"' not supported"  ; ...
              ... )
            END
            OBJECT( PTR( _CAST, poAIUnknown ) ):=NULL_OBJECT
         CASE TS_HFailed( hResult, TRUE )
            TSTrace Warning "SUPER:QueryInterface(pStruIID,poAIUnknown)"
            OBJECT( PTR( _CAST, poAIUnknown ) ):=NULL_OBJECT
         END
      END
   END
   TSTrace Leave
RETURN hResult