public void DisownClassObject()
{
if( _sgsObject == IntPtr.Zero )
throw new SGSException( RC.EINPROC, "FreeClassObject - object is not allocated" );
Marshal.WriteIntPtr( _sgsObject, NI.VarObj.offsetOfIface, _sgsNullObjectInterface );
HDL.Free( Marshal.ReadIntPtr( _sgsObject, NI.VarObj.offsetOfData ) );
Marshal.WriteIntPtr( _sgsObject, NI.VarObj.offsetOfData, IntPtr.Zero );
FreeClassObject();
}