CBFS Connect 2022 Changelog

This document provides high-level information about new features, fixes, and functionality changes between minor versions releases of CBFS Connect. The information provided here is also available as an RSS feed.

For more details or if you have any questions please contact support@callback.com


Version: 22.0.8783
Date: January 18, 2024

  • [FIX] [CBFS] Now, the driver picks the file IDs of the generated "." ".." directory listing entries from the directory being enumerated and its parent directory accordingly.
  • [FIX] [FUSE] On Linux, Truncate was fired with an empty FileContext.
  • [FIX] [FUSE] On Windows, when a file was opened twice, first closing operation erased a shared FileContext.
  • [NEW] [Windows] The MUP module of Windows tends to send requests that don't belong to the CBFS driver (have a wrong FileObject in them), and the driver initiated system bugcheck as such a behavior was treated as a fatal error. Now, the driver just returns an error code to MUP.

Version: 22.0.8707
Date: November 3, 2023

  • [NEW] [CBFS] A system integrity check was introduced in recent versions of Windows that prevented processes launched from system services (including Windows Installer and any setup scripts) from accessing directory junctions. A workaround has ben added - now, folder mounting points are created in the context of a system process.
  • [FIX] On slow computers (with 1-2 cores), mounting could fail due to the OS not providing the necessary information in time. A workaround was added.

Version: 22.0.8678
Date: October 5, 2023

  • [FIX] A bit of memory leaked when directory enumeration with a non-empty mask was handled in Windows.
  • [NEW] [FUSE] Added MetadataCacheEnabled and NonExistentFilesCacheEnabled configuration settings in Windows. Disabling these caches enables proper reading of remote changes by refreshing directory contents.

Version: 22.0.8623
Date: August 11, 2023

  • [NEW] [CBFS] Now, a LockFile event handler can return the ERROR_RETRY error code to ask the driver to re-send a lock request after the interval defined in the LockRetryInterval configuration setting.
  • [FIX] The drivers could not be installed on Windows 2012 R2 Server due to the problems with signature validation (the OS doesn't accept Microsoft's own SHA2 signature). The INSTALL_FORCE_SHA1_DRIVERS flag was added to address this problem.
  • [FIX] Directories could not be opened if MAXIMUM_ALLOWED access rights flag was specified.

Version: 22.0.8573
Date: June 22, 2023

  • [FIX] The driver could not be loaded (crashed) on Windows 11 for ARM (regression introduced in build 8551).

Version: 22.0.8558
Date: June 7, 2023

  • [FIX] The driver could not be loaded in Windows 10 builds prior to 2004.

Version: 22.0.8551
Date: May 31, 2023

  • [NEW] Add the ImplicitAttributeUpdates configuration setting that defines whether the SetFileAttributes event fires when a file is modified.
  • [NEW] Improved the network redirector code to recognize links to drives (e.g., subst'ed drives).
  • [NEW] Added the CBFS_NOTIFY_FLAG_SKIP_LOCKED_FILE flag to use in calls to NotifyDirectoryChange
  • [NEW] Added the CacheDuringLockPurge and CacheDuringLockGetSize configuration settings.
  • [FIX] FileCache modes other than System still used the system cache in some cases.

Version: 22.0.8480
Date: March 21, 2023

  • [FIX] The Helper DLL could stop the operating system from rebooting in some situations.
  • [FIX] Fixed a possible invalid memory access in the NotifyDirectoryChange method
  • [FIX] Minor improvements in the installation procedure.

Version: 22.0.8476
Date: March 17, 2023

  • [FIX] The Ejected event didn't work.
  • [FIX] Improved the installation procedure in situations where the driver is busy and cannot be updated immediately during the Install() call.
  • [FIX] A component could block when a virtual drive was deleted.

Version: 22.0.8464
Date: March 5, 2023

  • [IMPORTANT] Changed the default result value in Fsctl and Ioctl events from 0 to ERROR_INVALID_FUNCTION. Event handlers must set the result code to 0 explicitly now.
  • [FIX] [CBFS, FUSE] An Access Violation error could happen when the disk is stopped (v2022 regression).
  • [FIX] The installation function could return "File not found" error while everything looked correct. This occurred when the driver was installed, no reboot was required and the driver was not started.

Version: 22.0.8446
Date: February 15, 2023

  • [NEW] Added the FireFileInfoOutOfBand configuration setting to address possible bottlenecks that can occur in the case of slow GetFileInfo event handling.

Version: 22.0.8441
Date: February 10, 2023

  • [FIX] If an error occured in one of the methods, in some cases, it was not reported via OnError, and an exception (where applicable) didn't contain an error message.
  • [FIX] [FUSE] The macOS library didn't export right symbols.

Version: 22.0.8425
Date: January 25, 2023

  • [FIX] An error could occur in some situations if the file open event failed with an error.
  • [FIX] [CBFS] Minor fixes in operations inside Docker containers.
  • Documentation updates

Version: 22.0.8400
Date: December 31, 2022

  • [NEW] Initial release of version 2022
  • [NEW] CBFS FUSE merged into CBFS Connect. FUSE now uses the driver of CBFS (so that cbfs.cab is to be deployed on Windows when using FUSE there).
  • [NEW] CBFS Cache merged into CBFS Connect
  • [NEW] CBFS Connect became available on Linux
  • [NEW] [CBFS] The component got interoperability with Docker containers with process isolation. Now, an application running on the host can create a virtual drive in the container, and a container application can create a virtual drive visible by the host. The kernel-mode driver is always installed in the host system, though (it is not possible to install it in the container).
  • [IMPORTANT] The Initialize method will fail with an error if the kernel-mode driver is not installed OR if the version of the driver is lower than the version of the user-mode library.
  • [IMPORTANT] The SerializeEvents property has been changed to an enumeration. The former value of "true" corresponds to seOnOneWorkerThread value.
  • [NEW] [CBFS] Added the ContainerId configuration setting.
  • [NEW] [CBFS] Added the SupportCompressedAttribute property
  • [IMPORTANT] [CBFS] The default value of the NonexistentFilesCacheEnabled configuration setting has been reversed (now, it's true).
  • [IMPORTANT] [CBFS] The default value of the ForceFileClose configuration setting has been reversed (now, it's true).
  • [IMPORTANT] [CBFS] Multiple improvements have been made in the NotifyDirectoryChange method of CBFS - it can now be used to send notifications about multiple files as well as send rename/move notifications.
  • [IMPORTANT] [CBFS, FUSE] Event handlers can now inform the driver that the file, for which they have been called, has been changed externally. This is done by returning ERROR_FILE_INVALID error from the event handlers.
  • [IMPORTANT] [CBFS] The UseFileIds and UseObjectIds configuration settings have been converted into properties.
  • [IMPORTANT] [CBFS] NotifyDirectoryChange now reports an error if it was not ERROR_IO_PENDING.
  • [FIX] On Windows Server 2012-2019 systems, doing "dir \localhost{sharename}\mask." caused all files to be returned instead because the driver passed the "." mask to the user mode.
  • [FIX] Most properties are not runtime-only now.
  • [IMPORTANT] [CBFS] Added the ReparseTag parameter to the OnGetFileInfo event
  • [NEW] [CBFS] Added the RequestedInfo parameter to the OnEnumerateDirectory and OnGetFileInfo events
  • [NEW] [CBFS] Added the Key parameter to the OnFileLock and OnFileUnlock events
  • [FIX] [CBFS] The FileContext and HandleContext parameters in the CleanupFile and CloseFile events are By-Reference now (so, you can change the parameter value).
  • [FIX] [CBFS] In the CloseFile event, renamed the DeleteFile parameter to PendingDeletion to avoid ambiguity with the C++/Win32 defines.

Version: 20.0.8416
Date: January 16, 2023

  • [FIX] An error could occur in some situations if the file open event failed with an error.

Version: 20.0.8410
Date: January 10, 2023

  • [FIX] On Windows Server 2012-2019 systems, doing "dir \localhost{sharename}\mask." caused all files to be returned instead because the driver passed the "." mask to the user mode.
  • [FIX] The use of NotifyDirectoryChange in parallel to directory enumeration could cause strange effects in the component behavior when operating under heavy load. This could include passing an empty or invalid context to an event handler, not returning from the NotifyDirectoryChange call, or not being able to shut down the application.

Version: 20.0.8348
Date: November 9, 2022

  • [NEW] Added the UpdateLastWriteTimeOnContentsChange config setting.
  • [NEW] Added the TranslateDOSCharsInEnumMasks config setting.
  • [FIX] Now, the ForceFileClose config setting also has effect on EXE and DLL files (these kinds of files are handled differently by the OS when it comes to caching and release of references).
  • [FIX] Writing to a named stream of a file could cause side effects when trying to read the main data stream of this file during the same virtual drive session (data was not lost but could not be read).
  • [FIX] The SetFileSize event could still occur if the WriteFile event failed.
  • [FIX] A race condition could occur in the driver during directory enumeration, leading to unexpected behavior.
  • [FIX] OnCleanupFile could be missing if the file in question was renamed.
  • [FIX] In the network redirector module, NpCancelConnection implementation now doesn't delete a storage but just removes the mounting point.

Version: 20.0.8181
Date: May 26, 2022

  • [FIX] Icon-related functions could fail to work with confusing errors.

Version: 20.0.8173
Date: May 18, 2022

  • [FIX] Regression: In the Java edition, thread management was not functioning correctly, which could cause the MountMedia method to fail.

Version: 20.0.8132
Date: April 7, 2022

  • [FIX] UnmountMedia could occasionally fail to unmount the virtual media after files were closed.
  • [FIX] The SetFileSize event was not fired before WriteFile in rare cases (when a rare FastIO data write request was handled)
  • [FIX] BSOD could occur in rare cases if the user-mode application was forcefully terminated (e.g., during debugging).
  • [FIX] ClusterSize could not be set to 64K or more. Fixed.
  • [FIX] The length of the short file name buffer was reported incorrectly to the top-level library code and this prevented short file names from being returned. Fixed.
  • [FIX] Driver Verifier reported allocation of memory in non-paged pool without Nx flag. Workardound added.

Version: 20.0.8069
Date: February 3, 2022

  • [NEW] Added support for x64 operations on Windows 11/ARM64 systems. Now, the installation methods executed in x64 mode can install the drivers and the helper DLL to such as system.
  • [NEW] Added handling of MDL requests, used by SMB redirector.
  • [FIX] In some situations, when the UnusedMetadataLifetime config setting was used, the driver could deadlock during enumerating expired items in the metadata cache.
  • [FIX] BSOD during updating the nonexistent files cache from NotifyDirectoryChange.

Version: 20.0.8039
Date: January 4, 2022

  • [FIX] GetModuleVersion and GetDriverStatus sent a request that caused old versions of the driver to throw a kernel-mode exception that caused a BSOD. A workaround has been added.

Version: 20.0.8031
Date: December 27, 2021

  • [NEW] GetModuleVersion now requests the version from the running filesystem driver, if one is available. This helps to obtain the version of the running driver in the period between the driver update and system restart.
  • [FIX] The helper DLL is now activated only in "explorer.exe", which should reduce the chance that it misses notifications after the host process quits.

Version: 20.0.8012
Date: December 8, 2021

  • [NEW] Added the UnusedMetadataLifetime config setting for fine-grain control over items' lifetime in the metadata cache.
  • [NEW] User-mode worker threads, used for event dispatching, are now deleted and created in a more resource-savvy manner.
  • [FIX] The ZeroOriginatorBufferBeforeMapping config setting was not recognized.

Version: 20.0.7983
Date: November 9, 2021

  • [FIX] Improved handling of FsCtl requests, sent to the volume.
  • [FIX] A sporadic C++ exception could happen upon deletion of the component or application shutdown due to a compiler quirk.

Version: 20.0.7979
Date: November 5, 2021

  • [NEW] Process tracking library improved, so the loaded driver should cause a slightly lower effect on system operations.
  • [FIX] Network redirector could block WSL2 operations.

Version: 20.0.7921
Date: September 8, 2021

  • [NEW] Preliminary support for Windows 11.
  • [FIX] Docker failed to work in process isolation mode when CBFS Connect driver was installed. A workaround has been implemented.
  • [FIX] Improved compatibility with CD-ROM devices when they are installed in the system.
  • [NEW] Node.js edition (Beta).

Version: 20.0.7880
Date: July 30, 2021

  • [FIX] Regression: In build 7860, the NotifyDirectoryChange method could lead to a deadlock under certain circumstances.

Version: 20.0.7860
Date: July 9, 2021

  • [NEW] Added UseObjectIds config setting.
  • [FIX] In some cases, even when SerializeAccess was set to true, some events on the same file could occur in parallel.

Version: 20.0.7836
Date: June 15, 2021

  • [NEW] Added the SupportUnlockAllRequests config setting and improved handling of IRP_MN_UNLOCK_ALL and IRP_MN_UNLOCK_ALL_BY_KEY events.
  • [NEW] Added the UseFileIds config setting that controls whether the driver advertises file IDs support.
  • [NEW] Added the new value of 2 ("NotSupported") to the USNJournalPolicy config setting.
  • [IMPORTANT] When handling a request to open a file by ID, the driver first searches the metadata cache now, and fires GetFileNameByFileId only when the file has not been found in the cache.
  • [FIX] A buffer overrun was possible in the GetFileNameByFileId event invocation code.
  • [FIX] FileId, reported in response to a specific request, was reversed, and this caused the fsutil tool show the reversed value.
  • [FIX] If the UpdateFileMetadataOnOpen config setting was enabled, reparse points did not always work as intended.
  • [FIX] An explicit change of file attributes or times didn't cause an updated ChangeTime to be passed to the SetFileAttributes event handler.
  • [FIX] [.NET Standard] Removed various attribute class types that are already present in .NET Standard core assemblies.

Version: 20.0.7767
Date: April 7, 2021

  • [FIX] Relaxed the validation of the ServerName part of the network path, passed to AddMountingPoint when creating a network mounting point.

Version: 20.0.7765
Date: April 5, 2021

  • [IMPORTANT] Due to the change of Microsoft policies, on Windows 7, the installer now installs the drivers, signed by Microsoft using SHA-2 algorithm. This requires SHA-2 hotfixes to be installed on target Windows 7 systems.
  • [NEW] Added support for the "net view" command to be able to show the share, created from the network mounting point, in the list.
  • [NEW] Now, if you need to update file size and attributes when the file is opened (e.g., to replace a placeholder file with actual data), it's possible to do this using the new UpdateFileMetadataOnOpen config setting.
  • [FIX] A crash could occur randomly upon shutdown of the class instance on heavy load due to a race condition.

Version: 20.0.7745
Date: March 16, 2021

  • [NEW] The OnCleanupFile event can be made synchronous (optionally) via the SynchronousCleanupCall config setting
  • [NEW] Added the VolumeGuidName configuration setting that returns the volume's GUID-based name of the created virtual disk.
  • [FIX] Reparse point handling has been reworked for better flexibility.
  • [FIX] Under heavy system load, it was possible that one or more worker threads were destroyed later than the component, and this could lead to an error on application shutdown.
  • [FIX] Regression: the OnThreadCreation and OnThreadTermination events were not fired.

Version: 20.0.7685
Date: January 15, 2021

  • [FIX] On some Windows 7 versions, MountMedia could fail due to a Windows timing issue (mounting is finalized by the OS after it returns execution from the mounting function to the caller). A workaround has been implemented.

Version: 20.0.7671
Date: January 1, 2021

  • [NEW] Added SynchronousCleanupFile config setting.

Version: 20.0.7668
Date: December 29, 2020

  • [FIX] Regression: PnP Bus driver could not be installed.

Version: 20.0.7662
Date: December 23, 2020

  • [FIX] Regression: MountMedia failed on 32-bit systems.

Version: 20.0.7649
Date: December 10, 2020

  • [IMPORTANT] Now, if HandleAllFsctls is set, the component will report ERROR_NOT_SUPPORTED to the driver by default. Within the Fsctl event the ResultCode parameter must explicitly be set to ERROR_SUCCESS to report successful completion, overriding the predefined value of ERROR_NOT_SUPPORTED.
  • [IMPORTANT] For network mounting points, Explorer's Disconnect command and console net use X: /DELETE command are handled by attempting to delete the storage that corresponds to the mounting point.
  • [NEW] Added SupportSearchIndexer configuration setting.
  • [NEW] Added SupportPosixStyleDeletion configuration setting.
  • [FIX] Regression: if the MountMedia operation failed, the storage was left in the "half-active" state where most methods would not work.
  • [FIX] A user-mode crash could happen after the use of the NotifyDirectoryChange method.
  • [FIX] Various improvements in RouteToFile-related functionality.
  • [FIX] A junction point could not be renamed or deleted as this required explicit support for junction points.
  • [FIX] Kernel-mode logging didn't work when enabled via the registry.
  • [FIX] In some combinations of parameters, system-initiated reduction of file size didn't work correctly.
  • [FIX] In very large files, a block in the middle of the file was read as empty (filled with zeros).
  • [FIX] Handle creator information could be retrieved incorrectly.
  • [FIX] A handle was leaking during CreateStorage/DeleteStorage calls.
  • [FIX] Alternate data streams of directories were visible but not accessible.
  • [FIX] If the storage was deleted without unmounting media first, GetActive continued to return true.
  • [FIX] If the storage had been ejected, DeleteStorage didn't clear the list of mounting points.
  • [FIX] An attempt to mount a virtual disk as CD-ROM if another CD-ROM was already mounted could fail due to a bug in the system driver.
  • [FIX] PNP Bus driver could not be used after installation until the system is rebooted.
  • [FIX]: Icons were not displayed on x86 systems.

Version: 20.0.7545
Date: August 28, 2020

  • [IMPORTANT] File creation flags were not passed to CreateFile and OpenFile events. Now they are passed and the Attributes parameter of these events contains flags as well. If the code assumed this parameter to contain only attributes, it must be updated - the passed value must be binary-AND'ed with 0xFFFF (65535) to clear all higher bits.
  • [IMPORTANT] When a non-zero LUID is passed to the AddMountingPoint method, the STGMP_LOCAL flag is assumed.
  • [FIX] Deletion of the mounting point with non-zero LUID by index caused an Access Violation error.
  • [FIX] Calling DeleteStorage did not clear the list of mounting points.
  • [FIX] Windows could not mount ISO files from non-removable non-PnP virtual disks.
  • [FIX] When MetadataCache was disabled, some in-memory data was still used and the OnGetFileInfo event was not fired.
  • [FIX] The functions that validate server name and share name, passed to AddMountingPoint, have been improved to accept Unicode characters and other allowed characters.

Version: 20.0.7479
Date: June 23, 2020

  • [NEW] Added STGMP_AUTOCREATE_DRIVE_LETTER flag to the AddMountingPoint method.
  • [NEW] Added ForceFileClose configuration setting.
  • [NEW] Sporadic BSOD happened during file renaming.

Version: 20.0.7452
Date: May 27, 2020

  • [NEW] Virtual disks can be bind-mounted to Docker container images.
  • [NEW] RAD Studio 10.4 support in Delphi and C++Builder editions.
  • [FIX] A deadlock could happen when accessing the network from event handlers of the virtual disk, mounted as a network mounting point.

Version: 20.0.7437
Date: May 12, 2020

  • [FIX] BSOD may occur during file/directory renaming.
  • [FIX] In the non-Unicode versions of some APIs (Delphi, C++ Builder, C++), the events which include changeable string parameters could randomly fail.

Version: 20.0.7416
Date: April 21, 2020

  • [FIX] BSOD may occur file deletion or when handling the NotifyDirectoryChange request.
  • [FIX] Maximum filesystem name length was too short. Expanded to support 2x the previous length.
  • [FIX] Various minor fixes

Download Changelog