LoadTypeLib

 (Available in 01 TS COM - TS_COM_ServerInfo)

Source

METHOD LoadTypeLib( pstruTypeLibGUID AS _WinGUID ) AS LOGIC PASCAL CLASS TS_ServerInfo
LOCAL oServerInfoGuard AS TS_ServerInfoGuard
LOCAL oOldAITypeLib AS TS_AbstractITypeLib
LOCAL poAITypeLib AS TS_AbstractITypeLib PTR
LOCAL oServerInfo AS TS_ServerInfo
LOCAL oAITypeLib AS TS_AbstractITypeLib
LOCAL lRetVal AS LOGIC
LOCAL hResult AS LONG
   TSTrace Enter
   IF SELF:IsValidObject
      TSTrace ToDo "Check for 'TypeLib' resource in EXE or DLL first!"
      oServerInfoGuard:=TS_ServerInfoGuard{ }
      oServerInfo:=oServerInfoGuard:Get( )
      DO CASE
      CASE pstruTypeLibGUID==NULL_PTR
         TSTrace Warning "pstruTypeLibGUID==NULL_PTR"
         lRetVal:=FALSE
      CASE IsBadReadPtr( pstruTypeLibGUID, _SIZEOF( _WinGUID ) )
         TSTrace Warning "IsBadReadPtr(pstruTypeLibGUID,_SizeOf(_WinGUID))"
         lRetVal:=FALSE
      OTHERWISE
         #IFDEF TS_TRACETIMED_ENABLE
            _TS_TraceTimedEnter( TS_TT_SYM_EXTERNAL, TS_TT_SYM_DLL_OLE32, #LoadRegTypeLib  ; ...
           ... )
         #ENDIF
         hResult:=LoadRegTypeLib( pstruTypeLibGUID, 1, 0, 0, @poAITypeLib )
         #IFDEF TS_TRACETIMED_ENABLE
            _TS_TraceTimedLeave( TS_TT_SYM_EXTERNAL, TS_TT_SYM_DLL_OLE32, #LoadRegTypeLib  ; ...
           ... )
         #ENDIF
         DO CASE
         CASE TS_HSucceeded( hResult, FALSE )
            PTR( @oAITypeLib ):=poAITypeLib
            oOldAITypeLib:=SELF:_SuperGlobalData:_AITypeLib
            SELF:_SuperGlobalData:_AITypeLib:=oAITypeLib
            oAITypeLib:=NULL_OBJECT
            IF oOldAITypeLib<>NULL_OBJECT
               #IFDEF TS_TRACETIMED_ENABLE
                  _TS_TraceTimedEnter( TS_TT_SYM_EXTERNAL, TS_TT_SYM_ITYPELIB, #Release  ; ...
                 ... )
               #ENDIF
               oOldAITypeLib:Release( )
               #IFDEF TS_TRACETIMED_ENABLE
                  _TS_TraceTimedLeave( TS_TT_SYM_EXTERNAL, TS_TT_SYM_ITYPELIB, #Release  ; ...
                 ... )
               #ENDIF
               oOldAITypeLib:=NULL_OBJECT
            END
            lRetVal:=TRUE
         OTHERWISE
            TSTrace Warning "!LoadRegTypeLib(pstruTypeLibGUID,1,0,0,@poAITypeLib)"
            lRetVal:=FALSE
         END
      END
      oServerInfo:=oServerInfoGuard:FREEREF( )
      oServerInfoGuard:=NULL_OBJECT
   ELSE
      TSTrace Warning "!SELF:IsValidObject"
      lRetVal:=FALSE
   END
   TSTrace Leave
RETURN lRetVal