CBFS Connect 2024 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: 24.0.9075
Date: November 5, 2024
- [FIX] [CBFS/Windows] The PnP Bus driver could fail to install.
Version: 24.0.9035 Date: September 26, 2024
- [NEW] [CBFS] Added the
WriteRequestsMemoryLimitAbsolute
andWriteRequestsMemoryLimitPercent
configuration settings to further limit the amount of physical memory used when huge amount of data are written to a slow backend. - [FIX] [CBFS, FUSE] If the media insertion process was aborted (e.g., due to an error returned by one of the event handlers called during mounting), the driver in some cases could get stuck.
- [FIX] [Windows] A memory leak could occur in Windows in non-Unicode editions (Go, Rust, ANSI-based C++) when events were fired.
Version: 24.0.9013 Date: September 4, 2024
- [NEW] [CBFS] Added the
PhysicalMemoryWriteUseLimit
configuration setting to limit the amount of physical memory used when huge amount of data are written to a slow backend. - [FIX] [CBFS, FUSE] A file opened with
FILE_FLAG_DELETE_ON_CLOSE
could stay undeleted during closing if there was another process (File Explorer) monitoring and scanning the directory of the file at the same time.
Version: 24.0.9000
Date: August 22, 2024
- [NEW] [CBFS] Added the
StorageNamePrefix
configuration setting, which can be used to add a fixed part to storage object names in the system, so that antivirus and similar software can be configured to skip (or not block) these volumes.
Version: 24.0.8990
Date: August 12, 2024
- [FIX] On Windows 7, the installer now installs the drivers signed by Microsoft using SHA-256. Some Windows 7 systems support SHA256 signatures, others don't.
- [FIX] Deinstallation could fail when executed from a 32-bit process in a 64-bit environment (i.e., via WOW64)
Version: 24.0.8980
Date: August 2, 2024
- [NEW] Initial release of version 2024
Version: 22.0.8971
Date: July 24, 2024
- [FIX] Addressed the rare race condition that occurred in the driver when the storage was deleted.
Version: 22.0.8963
Date: July 16, 2024
- [FIX] Addressed the rare INVALID_IO_BOOST_STATE error in the driver.
Version: 22.0.8942
Date: June 25, 2024
- [FIX] The
Uninstall
function of the Installer DLL didn't work (regression in rev.8783).
Version: 22.0.8868
Date: April 12, 2024
- [FIX] [FUSE] Read/Write operations could report an error (regression in v.22.0.8858).
Version: 22.0.8858
Date: April 2, 2024
- [NEW] Now, the
Uninstall
method on Windows will return an error if the driver is in use (e.g., there is some application running that has created one or more storages).
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, the
Truncate
event was fired with an emptyFileContext
. - [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 been 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
andNonExistentFilesCacheEnabled
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 theERROR_RETRY
error code to ask the driver to re-send a lock request after the interval defined in theLockRetryInterval
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 theSetFileAttributes
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 toNotifyDirectoryChange
- [NEW] Added the
CacheDuringLockPurge
andCacheDuringLockGetSize
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 slowGetFileInfo
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 toseOnOneWorkerThread
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
andUseObjectIds
configuration settings have been converted into properties. - [IMPORTANT] [CBFS]
NotifyDirectoryChange
now reports an error if it was notERROR_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 theOnGetFileInfo
event - [NEW] [CBFS] Added the
RequestedInfo
parameter to theOnEnumerateDirectory
andOnGetFileInfo
events - [NEW] [CBFS] Added the
Key
parameter to theOnFileLock
andOnFileUnlock
events - [FIX] [CBFS] The
FileContext
andHandleContext
parameters in theCleanupFile
andCloseFile
events are By-Reference now (so, you can change the parameter value). - [FIX] [CBFS] In the
CloseFile
event, renamed theDeleteFile
parameter toPendingDeletion
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 theWriteFile
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 beforeWriteFile
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
andGetDriverStatus
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 toAddMountingPoint
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 theSynchronousCleanupCall
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
andOnThreadTermination
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 reportERROR_NOT_SUPPORTED
to the driver by default. Within theFsctl
event theResultCode
parameter must explicitly be set toERROR_SUCCESS
to report successful completion, overriding the predefined value ofERROR_NOT_SUPPORTED
. - [IMPORTANT] For network mounting points, Explorer's
Disconnect
command and consolenet 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
andOpenFile
events. Now they are passed and theAttributes
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, theSTGMP_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 theOnGetFileInfo
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 theAddMountingPoint
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