What's New in CBFS Storage 2020



CBFS Storage 2020 is the latest version of Callback Technologies' popular embedded filesystem product, and represents a major upgrade from CBFS Storage 2017 (both Application and OS Editions). The CBFS Storage 2020 toolkit includes redesigned component APIs, extensively revised and expanded documentation, and numerous internal changes and upgrades.

This article is intended to provide both a high level overview of new features and functionality, as well as in-depth details about how to upgrade existing code from CBFS Storage 2017 to CBFS Storage 2020. Please refer to the CBFS Storage 2020 product page and documentation for more information.

Contents

What's New

Refreshed Product Structure & Terminology

For the 2020 product line, we've reorganized the CBFS Storage product structure in order to deliver greater value to our customers. Instead of dividing up the product into different editions based on functionality, we now divide it up into editions by platform (e.g., .NET, C++, etc.), just like the rest of our products. All of the functionality provided by the Application and OS editions of CBFS Storage 2017 is available in CBFS Storage 2020 in the form of two components: CBVault and CBDrive.

The new CBVault component replaces the old Application Edition; it's a purely user mode component that includes everything you need to create and manipulate vaults and their contents. The new CBDrive component replaces the old OS Edition; it's a superset of the CBVault component that includes all of the same functionality, plus the ability to mount a vault as a virtual drive, which provides end-users and third party applications with easy access to a vault's contents.

As implied above, the other notable terminology change that you'll see in CBFS Storage 2020 is that the "data containers" created by the product are now called vaults instead of "storages". We feel that this new nomenclature makes it easier to document and explain CBFS Storage concepts, which in turn makes the product easier to understand and to use.

Any existing application built with CBFS Storage 2017, whether it uses Application Edition or OS Edition, can be upgraded to CBFS Storage 2020. Refer to the Upgrading section, below, for more information.

Updated Development Experience

A primary goal for Callback Technologies' 2020 product line was to revisit and refine the developer experience. Our efforts in this area have resulted in a number of changes across the board for each product, a few of which are worth noting here.

The CBFS Storage user mode API has been redesigned. The new API is designed to be easier to understand and to use; it is more streamlined and consistent than in previous versions, but just as flexible and performant. Additional details about how the API has changed can be found in the Upgrading section, below.

The product's documentation has also been extensively revised and expanded, making it easier to read and more helpful overall; and the included demo projects have been improved so as to better illustrate the usage of the components.

New Features & Changes

CBFS Storage 2020 includes numerous new features and changes. Here are some of the highlights:

  • Two new methods, CopyToVault and CopyFromVault, have been added to the CBVault component to make it easier to copy files and folders from local filesystems to CBFS Storage vaults, and vice versa.
  • Additional API members have been added to allow for greater control over auto-compaction, verification of file passwords, and more.
  • Additional logging can now be enabled using the LoggingEnabled configuration setting.
  • CBDrive/Windows: The internal libraries used to facilitate communication between the CBFS Storage system driver and the CBDrive component have been rewritten to improve performance.
  • CBDrive/Windows: The various shell helper DLLs have been merged into one Helper DLL.

Upgrading

This section contains information helpful for upgrading existing code from CBFS Storage 2017 (both Application and OS Editions) to CBFS Storage 2020. Please note that a number of finer details and edition-specific differences are omitted due to the general-purpose nature of this content; such information can be found in the CBFS Storage 2020 documentation applicable to your edition.

General

When upgrading to CBFS Storage 2020, there are a number of general changes to keep in mind:

  • The following items in the toolkit have been renamed:
    • The SolFSStorage component from CBFS Storage 2017 Application Edition has been renamed to CBVault.
    • The SolFSStorage component from CBFS Storage 2017 OS Edition has been renamed to CBDrive.
    • The SolFSStream type has been renamed to CBFSStorageStream; and instances of it are now created by calling the new OpenFile and OpenFileEx methods (instead of explicitly using constructors).
  • The concept of a "fixed-size vault" (previously known as a "fixed-size storage") no longer exists; but similar behavior can be accomplished using the new VaultSizeMin and VaultSizeMax properties.
  • A number of infrequently-used properties have been converted to configuration settings (which are get/set using the Config method).
  • The manner in which events (previously known as "callbacks") are used has changed in some editions.
  • The parameter list for a number of events has changed; and the types of parameters passed to events have been simplified in general.
  • Many constants have been renamed; and all constants have moved to a dedicated, product-wide "Constants" class.
  • The manner in which errors are reported during events has changed for some editions.
  • Character set conversion functions have been removed.
  • The licensing scheme for the product has changed.
  • The assembly and namespace names have changed in the .NET edition.
  • CBDrive: The end-user driver deployment procedure has changed.

CBVault Component

The following table describes how to upgrade from the old Application Edition's SolFSStorage component API to the new CBVault component API:

SolFSStorage Component (2017, App Ed.) CBVault Component (2020)
Properties
AutoCompact property Renamed to AutoCompactAt.
Compression property Renamed to DefaultFileCompression.
CompressionLevel property This property is now the DefaultFileCompressionLevel configuration setting.
CurrentSize, CurrentFreeSpace, Size, and FreeSpace properties Renamed to VaultSize, VaultFreeSpace, PossibleSize, and PossibleFreeSpace. Refer to the CBVault Size Property Notes for more information.
FileName property Renamed to VaultFile.
FilesEncryption and FilesPassword properties Renamed to DefaultFileEncryption and DefaultFilePassword.
FixedSize property Removed.
MaxNonPagedLength property This property is now a configuration setting.
MaxSize property Renamed to VaultSizeMax.
PartSize property This property is now a configuration setting.
StorageEncryption and StoragePassword properties Renamed to VaultEncryption and VaultPassword.
UseParentSize property Removed. This property is unnecessary for the CBVault component; refer to the CBVault Size Property Notes for more information.
UseTransactions property Renamed to UseJournaling.
Methods
CheckPassword method Renamed to CheckVaultPassword.
Close method Renamed to CloseVault.
Compact method Renamed to CompactVault.
DeleteAndRenameFile method Merged into the MoveFile method.
DeleteDirectory method Merged into the DeleteFile method.
FindByQueryClose method Merged into the FindClose method.
FindByQueryFirst method Renamed to FindFirstByQuery.
FindByQueryNext method Merged into the FindNext method.
ForceCreateDirectory method Merged into the CreateDirectory method.
FormatFixedSize method Removed. To achieve a similar effect, set the VaultSizeMin and VaultSizeMax properties to the same (non-zero) value before creating a vault with the OpenVault method.
GetInfo method Removed. This information is available via the component's properties.
GetLastAccessTime method Removed.
GetLastWriteTime method Removed. This information is available via the LastWriteTime property.
GetLinkDestination method Merged into the ResolveLink method.
GetVersion method Removed.
IsSolFSStorage method Renamed to IsCBFSStorageVault.
Link method Renamed to CreateLink.
Open method Renamed to OpenVault.
OpenReadOnly method Removed. To open a vault in read-only mode, enable the ReadOnly property before calling the OpenVault method.
Reopen method Removed.
SetEncryption method Renamed to UpdateVaultEncryption.
SetLicenseKey method Removed. Refer to the "Licensing Instructions" topic in the documentation for information about how to license the component for use in each edition.
Events
FileClose event Renamed to VaultClose.
FileCreate event Renamed to VaultCreate.
FileDelete event Renamed to VaultDelete.
FileFlush event Renamed to VaultFlush.
FileGetParentSize event Renamed to VaultGetParentSize.
FileGetSize event Renamed to VaultGetSize.
FileOpen event Renamed to VaultOpen.
FileRead event Renamed to VaultRead.
FileSeek event Removed. Position information is passed directly in the VaultRead and VaultWrite events.
FileSetSize event Renamed to VaultSetSize.
FileWrite event Renamed to VaultWrite.

CBVault Size Property Notes:

  • The VaultSize and VaultFreeSpace properties will always reflect the actual size and free space of a vault.
  • The PossibleSize and PossibleFreeSpace properties will always reflect the maximum possible size and free space of a vault (taking into account both the amount of "parent" storage space available for the vault to use for automatic growth, and any size limit imposed by the VaultSizeMax property).
Refer to the documentation for more information.

CBDrive Component

The following table describes how to upgrade from the old OS Edition's SolFSStorage component API to the new CBDrive component API:

SolFSStorage Component (2017, OS Ed.) CBDrive Component (2020)
Properties
AutoCompact property Renamed to AutoCompactAt.
CallbackTimeout property Renamed to Timeout.
Compression property Renamed to DefaultFileCompression.
CompressionLevel property This property is now the DefaultFileCompressionLevel configuration setting.
CurrentSize, CurrentFreeSpace, Size, and FreeSpace properties Renamed to VaultSize, VaultFreeSpace, PossibleSize, and PossibleFreeSpace. Refer to the CBDrive Size Property Notes for more information.
DestroyOnProcessTerminated property Renamed to DestroyOnTermination.
FileName property Renamed to VaultFile.
FilesEncryption and FilesPassword properties Renamed to DefaultFileEncryption and DefaultFilePassword.
FixedSize property Removed.
MaxNonPagedLength property This property is now a configuration setting.
MaxSize property Renamed to VaultSizeMax.
PartSize property This property is now a configuration setting.
StorageEncryption and StoragePassword properties Renamed to VaultEncryption and VaultPassword.
UseParentSize property Renamed to ReportPossibleSize. This property's usage has been simplified, refer to the CBDrive Size Property Notes for more information.
UseTransactions property Renamed to UseJournaling.
Methods
CheckPassword method Renamed to CheckVaultPassword.
Close method Renamed to CloseVault.
Compact method Renamed to CompactVault.
ConvertFileNameToStorage and ConvertFileNameToSystem methods Renamed to ConvertToVaultPath and ConvertToDrivePath.
DeleteAndRenameFile method Merged into the MoveFile method.
DeleteDirectory method Merged into the DeleteFile method.
DeleteDeniedProcess and DeleteGrantedProcess methods Renamed to RemoveDeniedProcess and RemovedGrantedProcess.
DeleteMountingPoint method Renamed to RemoveMountingPoint.
FindByQueryClose method Merged into the FindClose method.
FindByQueryFirst method Renamed to FindFirstByQuery.
FindByQueryNext method Merged into the FindNext method.
ForceCreateDirectory method Merged into the CreateDirectory method.
FormatFixedSize method Removed. To achieve a similar effect, set the VaultSizeMin and VaultSizeMax properties to the same (non-zero) value before creating a vault with the OpenVault method.
GetAccessDeniedProcess and GetAccessDeniedProcessCount methods. Removed. This information is available via the AccessDeniedProcesses collection property (.NET/Java editions) or the various AccessDeniedProcess* properties (other editions).
GetAccessGrantedProcess and GetAccessGrantedProcessCount methods. Removed. This information is available via the AccessGrantedProcesses collection property (.NET/Java editions) or the various AccessGrantedProcess* properties (other editions).
GetInfo method Removed. This information is available via the component's properties.
GetLastAccessTime method Removed.
GetLastWriteTime method Removed. This information is available via the LastWriteTime property.
GetLinkDestination method Merged into the ResolveLink method.
GetModuleStatus method Split into the GetDriverStatus and GetModuleVersion methods.
GetMountingPoint method Removed. This information is available via the MountingPoints collection property (.NET/Java editions) or the various MountingPoint* properties (other editions).
GetState method Removed. This information is available via the VaultState property.
GetVersion method Removed.
Install and Uninstall methods Usage has changed; refer to the documentation for more information.
InstallIcon, IconInstalled, and UninstallIcon methods Renamed to RegisterIcon, IsIconRegistered, and UnregisterIcon.
IsSolFSStorage method Renamed to IsCBFSStorageVault.
IsSolFSVolume method Renamed to IsCBFSStorageVolume.
Link method Renamed to CreateLink.
Open method Renamed to OpenVault.
OpenReadOnly method Removed. To open a vault in read-only mode, enable the ReadOnly property before calling the OpenVault method.
Reopen method Removed.
SetCurrentStorageSize method Removed. Use the VaultSize property instead.
SetEncryption method Renamed to UpdateVaultEncryption.
SetLicenseKey method Removed. Refer to the "Licensing Instructions" topic in the documentation for information about how to license the component for use in each edition.
Events
FileClose event Renamed to VaultClose.
FileCreate event Renamed to VaultCreate.
FileDelete event Renamed to VaultDelete.
FileFlush event Renamed to VaultFlush.
FileGetParentSize event Renamed to VaultGetParentSize.
FileGetSize event Renamed to VaultGetSize.
FileOpen event Renamed to VaultOpen.
FileRead event Renamed to VaultRead.
FileSeek event Removed. Position information is passed directly in the VaultRead and VaultWrite events.
FileSetSize event Renamed to VaultSetSize.
FileWrite event Renamed to VaultWrite.

CBDrive Size Property Notes:

  • The VaultSize and VaultFreeSpace properties will always reflect the actual size and free space of a vault.
  • The PossibleSize and PossibleFreeSpace properties will always reflect the maximum possible size and free space of a vault (taking into account both the amount of "parent" storage space available for the vault to use for automatic growth, and any size limit imposed by the VaultSizeMax property).
  • The ReportPossibleSize property controls which pair of values the CBDrive component uses when reporting the size and free space of the virtual drive to the operating system.
Refer to the documentation for more information.

We appreciate your feedback. If you have any questions, comments, or suggestions about this article please contact our support team at support@callbacktechnologies.com.