Notes on Upgrading to SAAPI Version 7.4.5

This topic describes the changes that could affect the existing SAAPI programs.

Custom Extensions Usage

When you migrate from 32-bit eRoom to 64-bit eRoom and if you are using Custom Extensions, then custom extensions must be migrated to Microsoft .NET languages with certain requirement and restrictions.

You must implement the Microsoft API Marshal.ReleaseComObject() to release the eRoom objects that are used in Visual Basic .NET custom extension. The eRoom extension DBRowValidation is updated to demonstrate usage of Marshal.ReleaseComObject() and this extension is part of the eRoom Server Installation.

 

Note:  

  • Microsoft API Marshal.ReleaseComObject()  is applicable to all extensions written in .Net environment.

  • This topic only considers limited scenarios encountered when migrating a single sample extension DBRowValidation.

 

When you migrate the custom extension from Visual Basic 6.0 to Visual Basic .NET, the following technical challenge exists:

  • Visual Basic 6.0 code is a native code. Therefore, when the object goes "out of scope", then it is released and/or destroyed automatically. Visual Basic 6.0 does not support the 64-bit version.

  • The .NET Runtime manages all activities such as, when the memory must be released based on .NET framework rules and design. In .NET, there is no control of when CLR Garbage collector releases the "out of scope" objects.
    In .NET, memory management is non-deterministic. All eRoom COM objects used or created by custom extension should be released explicitly using Microsoft API Marshal.ReleaseComObject() from custom extensions only.

 

Using Custom Extensions with eRoom gives more information.