AGetInterface

 (Available in 01 TS COM - TS_COM_DelegateIUnknown)

Purpose

Get a interface from the enclosed COM object

Syntax

oAIUnknown:=oDelegateIUnknown:AGetInterface( TS_GUID_IUnknown( ) )

Arguments

pStruIID
_WinGUID

Description

This is the prefered method of getting an exported interface from the DelegateIUnknown object, using this method is prefered above the 'QueryInterface' method.

Returns

Instance of 'TS_AbstractIUnknown'

Example

ACCESS AIDispatch AS TS_AbstractIDispatch PASCAL CLASS TS_DelegateIUnknown
LOCAL oAIDispatch AS TS_AbstractIDispatch
   TSTrace Enter
   oAIDispatch:=SELF:AGetInterface( TS_GUID_IDispatch( ) )
   TSTrace Leave
RETURN oAIDispatch

Source

METHOD AGetInterface( pStruIID AS _WinGUID ) AS TS_AbstractIUnknown PASCAL CLASS  ; ...
...TS_DelegateIUnknown
LOCAL oCOMGlobalData AS _TS_COMGlobalData
LOCAL oAIUnknown AS TS_AbstractIUnknown
LOCAL hResult AS LONG
   TSTrace Enter
   oCOMGlobalData:=_TS_ModuleGetCOMGlobalData( )
   #IFDEF TS_COMGLOBALDATA_CRITICALSECTION
      EnterCriticalSection( oCOMGlobalData:_COMGGeneralPurposeSection )
   #ENDIF
   IF SELF:FInit
      IF pStruIID<>NULL_PTR
         hResult:=SELF:CMQueryInterface( pStruIID, @oAIUnknown  ; ...
        ... )
         DO CASE
         CASE hResult==E_NOINTERFACE
            IF TS_ShowNotSupportedInterfaces( )
               TS_DebOutSTRING( "Interface '"+TS_GUID2String( pStruIID )+"' not supported"  ; ...
              ... )
            END
            oAIUnknown:=NULL_OBJECT
         CASE TS_HFailed( hResult, TRUE )
            TSTrace Warning "SELF:CMQueryInterface(pStruIID,@oAIUnknown)"
            oAIUnknown:=NULL_OBJECT
         CASE oAIUnknown==NULL_OBJECT
            TSTrace Warning TS_HResult2String( hResult )+" .AND. oAIUnknown==NULL_OBJECT"
            oAIUnknown:=NULL_OBJECT
         END
      ELSE
         TSTrace Warning "pStruIID==NULL_PTR"
         oAIUnknown:=NULL_OBJECT
      END
   ELSE
      TSTrace Warning "!SELF:FInit"
      oAIUnknown:=NULL_OBJECT
   END
   #IFDEF TS_COMGLOBALDATA_CRITICALSECTION
      LeaveCriticalSection( oCOMGlobalData:_COMGGeneralPurposeSection )
   #ENDIF
   TSTrace Leave
RETURN oAIUnknown