AGetInterface

 (Available in 01 TS COM - TS_COM_InterfaceSafe)

Purpose

Get a interface from the enclosed COM object

Syntax

oAIUnknown:=oInterfaceSafe:AGetInterface( TS_GUID_IUnknown( ) )

Arguments

pStruIID
_WinGUID

Description

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

Returns

Instance of 'TS_AbstractIUnknown'

Example

ACCESS AIDispatch AS TS_AbstractIDispatch PASCAL CLASS TS_InterfaceSafe
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_InterfaceSafe
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
   hResult:=SELF:QueryInterface( 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:QueryInterface(pStruIID,@oAIUnknown,lQueryForAIUnknown)"
      oAIUnknown:=NULL_OBJECT
   END
   #IFDEF TS_COMGLOBALDATA_CRITICALSECTION
      LeaveCriticalSection( oCOMGlobalData:_COMGGeneralPurposeSection )
   #ENDIF
   TSTrace Leave
RETURN oAIUnknown