OLE32LibraryLoad

 (Available in 01 TS COM - TS_COM_ServerInfo)

Source

METHOD OLE32LibraryLoad( dwCoInitMode AS DWORD, phResult AS LONG PTR ) AS LOGIC PASCAL  ; ...
...CLASS TS_ServerInfo
LOCAL lCanCoInitializeEx AS LOGIC
LOCAL hOLE32Library AS PTR
LOCAL lRetVal AS LOGIC
   TSTrace Enter
   IF SELF:IsValidObject
//    TS_ShowOLE32LibraryUseCount()
      IF LOGIC( _CAST, SELF:_COMGlobalData:_ShowOLE32LibraryUseCount  ; ...
     ... ) 
         TSTrace Shw _( SELF:_SuperGlobalData:_OLE32LibraryUseCount  ; ...
        ... )
      END
      DO CASE
      CASE phResult==NULL_PTR
         TSTrace Warning "phResult==NULL_PTR"
         lRetVal:=FALSE
      CASE IsBadWritePtr( phResult, _SIZEOF( LONG ) )
         TSTrace Warning "IsBadWritePtr(phResult,_SizeOf(LONG))"
         lRetVal:=FALSE
      CASE TS_HFailed( LONG( phResult ), TRUE )
         lRetVal:=FALSE
      CASE SELF:_SuperGlobalData:_OLE32LibraryUseCount ; ...
     ... <0L
         TSTrace Warning "SELF:_SuperGlobalData:_OLE32LibraryUseCount<0L"
         LONG( phResult ):=E_FAIL
         lRetVal:=FALSE
      CASE SELF:_SuperGlobalData:_OLE32LibraryUseCount ; ...
     ... >0L
         IF SELF:_SuperGlobalData:_OLE32LibraryHandle ; ...
        ... ==NULL_PTR
            TSTrace Warning "SELF:_SuperGlobalData:_OLE32LibraryHandle==NULL_PTR"
            lRetVal:=FALSE
         ELSE
            SELF:_SuperGlobalData:_OLE32LibraryUseCount ; ...
           ... +=1L
            lRetVal:=TRUE
         END
      OTHERWISE
         IF SELF:_SuperGlobalData:_OLE32LibraryHandle ; ...
        ... <>NULL_PTR
            TSTrace Warning "SELF:_SuperGlobalData:_OLE32LibraryHandle<>NULL_PTR"
            SELF:_SuperGlobalData:_OLE32LibraryHandle ; ...
           ... :=NULL_PTR
         END
         IF GetProcAddress( GetModuleHandle( PSZ( _CAST, "OLE32" ) ), PSZ( _CAST,  ; ...
        ... "CoInitializeEx" ) )==NULL_PTR
            lCanCoInitializeEx:=FALSE
         ELSE
            lCanCoInitializeEx:=TRUE
         END
         IF dwCoInitMode==COINIT_AUTO
            IF lCanCoInitializeEx
               dwCoInitMode:=COINIT_MULTITHREADED
            ELSE
               dwCoInitMode:=COINIT_DEFAULT
            END
         END
         #IFDEF TS_TRACETIMED_ENABLE
            _TS_TraceTimedEnter( TS_TT_SYM_EXTERNAL, TS_TT_SYM_DLL_KERNAL32, #LoadLibrary  ; ...
           ... )
         #ENDIF
         hOLE32Library:=LoadLibrary( PSZ( _CAST, "OLE32.DLL" ) )
         #IFDEF TS_TRACETIMED_ENABLE
            _TS_TraceTimedLeave( TS_TT_SYM_EXTERNAL, TS_TT_SYM_DLL_KERNAL32, #LoadLibrary  ; ...
           ... )
         #ENDIF
         DO CASE
         CASE hOLE32Library==NULL_PTR
            TSTrace Warning "hOLE32Library==NULL_PTR"
            LONG( phResult ):=E_FAIL
         CASE dwCoInitMode==COINIT_DEFAULT .OR. dwCoInitMode==COINIT_NONE
            #IFDEF TS_TRACETIMED_ENABLE
               _TS_TraceTimedEnter( TS_TT_SYM_EXTERNAL, TS_TT_SYM_DLL_OLE32, #CoInitialize  ; ...
              ... )
            #ENDIF
            LONG( phResult ):=TS_CoInitialize( NULL_PTR )
            #IFDEF TS_TRACETIMED_ENABLE
               _TS_TraceTimedLeave( TS_TT_SYM_EXTERNAL, TS_TT_SYM_DLL_OLE32, #CoInitialize  ; ...
              ... )
            #ENDIF
            IF TS_HFailed( LONG( phResult ), TRUE )
               TSTrace Warning "TS_CoInitialize(NULL_PTR)"
               LONG( phResult ):=E_FAIL
            ELSE
               SELF:_SuperGlobalData:_OLE32LibraryHandle ; ...
              ... :=hOLE32Library
            END
         CASE lCanCoInitializeEx
            #IFDEF TS_TRACETIMED_ENABLE
               _TS_TraceTimedEnter( TS_TT_SYM_EXTERNAL, TS_TT_SYM_DLL_OLE32, #CoInitializeEx  ; ...
              ... )
            #ENDIF
            LONG( phResult ):=TS_CoInitializeEx( NULL_PTR, dwCoInitMode )
            #IFDEF TS_TRACETIMED_ENABLE
               _TS_TraceTimedLeave( TS_TT_SYM_EXTERNAL, TS_TT_SYM_DLL_OLE32, #CoInitializeEx  ; ...
              ... )
            #ENDIF
            IF TS_HFailed( LONG( phResult ), TRUE )
               TSTrace Warning "TS_CoInitializeEx(NULL_PTR,dwCoInitMode)"
               LONG( phResult ):=E_FAIL
            ELSE
               SELF:_SuperGlobalData:_OLE32LibraryHandle ; ...
              ... :=hOLE32Library
            END
         OTHERWISE
            TSTrace Warning "!lCanCoInitializeEx, Use COINIT_DEFAULT or COINIT_AUTO"
            LONG( phResult ):=E_FAIL
         END
         IF SELF:_SuperGlobalData:_OLE32LibraryHandle ; ...
        ... ==NULL_PTR
            TSTrace Warning "SELF:_SuperGlobalData:_OLE32LibraryHandle==NULL_PTR"
            lRetVal:=FALSE
         ELSE
            SELF:_SuperGlobalData:_OLE32LibraryUseCount ; ...
           ... +=1L
            lRetVal:=TRUE
         END
      END
//    TS_ShowOLE32LibraryUseCount()
      IF LOGIC( _CAST, SELF:_COMGlobalData:_ShowOLE32LibraryUseCount  ; ...
     ... ) 
         TSTrace Shw _( SELF:_SuperGlobalData:_OLE32LibraryUseCount  ; ...
        ... )
      END
   ELSE
      TSTrace Warning "!SELF:IsValidObject"
      lRetVal:=FALSE
   END
   TSTrace Leave
RETURN lRetVal