RegisterTypeLib

 (Available in 01 TS COM - TS_COM_ServerInfo)

Source

METHOD RegisterTypeLib( pstruTypeLibGUID AS _WinGUID, cTypeLib AS STRING ) AS LOGIC  ; ...
...PASCAL CLASS TS_ServerInfo
LOCAL oServerInfoGuard AS TS_ServerInfoGuard
LOCAL poAITypeLib AS TS_AbstractITypeLib PTR
LOCAL oServerInfo AS TS_ServerInfo
LOCAL pWordString AS PTR
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
         pWordString:=TS_String2UniCodeBSTR( cTypeLib )
         IF pWordString<>NULL_PTR
            #IFDEF TS_TRACETIMED_ENABLE
               _TS_TraceTimedEnter( TS_TT_SYM_EXTERNAL, TS_TT_SYM_DLL_OLE32, #LoadTypeLib  ; ...
              ... )
            #ENDIF
            hResult:=LoadTypeLib( pWordString, @poAITypeLib )
            #IFDEF TS_TRACETIMED_ENABLE
               _TS_TraceTimedLeave( TS_TT_SYM_EXTERNAL, TS_TT_SYM_DLL_OLE32, #LoadTypeLib  ; ...
              ... )
            #ENDIF
            IF TS_HFailed( hResult, TRUE )
               TSTrace Warning "!LoadTypeLib(pWordString,@poAITypeLib)" cTypeLib
               lRetVal:=FALSE
            ELSE
               PTR( @oAITypeLib ):=poAITypeLib
               #IFDEF TS_TRACETIMED_ENABLE
                  _TS_TraceTimedEnter( TS_TT_SYM_EXTERNAL, TS_TT_SYM_DLL_OLE32, # ; ...
                 ... RegisterTypeLib )
               #ENDIF
               hResult:=RegisterTypeLib( poAITypeLib, pWordString, NULL_PTR )
               #IFDEF TS_TRACETIMED_ENABLE
                  _TS_TraceTimedLeave( TS_TT_SYM_EXTERNAL, TS_TT_SYM_DLL_OLE32, # ; ...
                 ... RegisterTypeLib )
               #ENDIF
               IF TS_HFailed( hResult, TRUE )
                  TSTrace Warning "!RegisterTypeLib(poAITypeLib,pWordString,NULL_PTR)"  ; ...
                 ... cTypeLib
                  lRetVal:=FALSE
               ELSE
                  lRetVal:=TRUE
               END
               #IFDEF TS_TRACETIMED_ENABLE
                  _TS_TraceTimedEnter( TS_TT_SYM_EXTERNAL, TS_TT_SYM_ITYPELIB, #Release  ; ...
                 ... )
               #ENDIF
               oAITypeLib:Release( )
               #IFDEF TS_TRACETIMED_ENABLE
                  _TS_TraceTimedLeave( TS_TT_SYM_EXTERNAL, TS_TT_SYM_ITYPELIB, #Release  ; ...
                 ... )
               #ENDIF
               oAITypeLib:=NULL_OBJECT
            END
            SysFreeString( pWordString )
         ELSE
            TSTrace Warning "oString:WordString==NULL_PTR" cTypeLib
            lRetVal:=FALSE
         END
      END
      oServerInfo:=oServerInfoGuard:FREEREF( )
      oServerInfoGuard:=NULL_OBJECT
   ELSE
      TSTrace Warning "!SELF:IsValidObject"
      lRetVal:=FALSE
   END
   TSTrace Leave
RETURN lRetVal