Callback Technologies Knowledge Base

Digital Rights Management (DRM) with CBFS Storage

This article provides an overview of how CBFS Storage secures confidential information and prevents unauthorized access from third parties to this information.

Getting Started with CBFS Connect

The article shows how to get started with CBFS Connect step by step.

(Windows) Do we need to install the CBFS Disk driver after each restart of the computer?

Do we need to install the CBFS Disk driver after each restart of the computer?

Is CBFS Storage FIPS Certified?

Is CBFS Storage FIPS certified?

How do I prevent the process from being started?

In order to handle the OnProcessCreation event, validate the new process using the information provided in the event handler parameters, and finally throw an ECB…

7 Reasons to Manage Application Data via File System vs. DBMS

7 reasons to choose a file system (CBFS Storage) over a database for managing your application data.

What tools are provided to format storages or check them for errors?

Everything is built in. Check the FormatFixedSize and CheckAndRepair methods in the CBFS Storage engine.…

How do I enable Windows Search on a CBFS Connect drive?

Enabling Windows Search on CBFS Connect drives.

Why don't the GetOriginator*() methods work in OnFileOpenN and OnFileCreateN?

To keep the size of the operation log as small as possible, CBFS Filter doesn't store supplementary information about filesystem events for notifications. You ne…

How can I create a file in a directory protected with the ReadOnly access rule?

Use the CBFSFilter::CreateNonCbFile() method. When calling the method, combine FILE_FLAG_BACKUP_SEMANTICS, FILE_ATTRIBUTE_DIRECTORY, and FILE_FLAG_POSIX_SEMANTIC…

What does "Could not load file or assembly 'CBFSConnectNet****.dll' or one of its dependencies" mean?

Information on the following error: "Could not load file or assembly 'CBFSConnectNet****.dll' or one of its dependencies."

How can I make a file read-only to a certain process?

First you need to set the CallAlOpenCloseCallbacks property to true. Next, you need to inspect the initiator of the request (using the GetOriginator*() methods) …

How do I create a disk for only one user (session)?

How to create a disk for only one user (session)

How can I have a directory as read-only and its subdirectories as read-write?

You need to set the following rules (in C++ syntax below): CallbackFilter::AddFilterAccessRule("C:\\ReadOnly\\*.*",CallbackFilter::ReadOnly); CallbackFilter::Add…

How do I prevent file deletion using callback rules?

Files are deleted by opening the file with the DeleteOnClose flag set, then closing the file. You need to handle the file open operation using the AddFilterCallb…

How do I show different files to different users on the same filesystem?

Showing different files to different users on the same filesystem

How can I make my disk support paths longer than 260 characters?

Making disk support paths longer than 260 characters

Why does my process not receive events on mapped network drives?

CBFS Filter can intercept requests that either originate on the local computer (i.e. the system CBFS Filter works on) or come to this system for processing. It c…

What is this strange file name with a semicolon inside?

When you handle OnCreateFile and / or OnOpenFile request, you can get the file name with a semicolon (":") in it. This means that the request is made to create a…

Is there any integrity check of what process is using CBFS Filter?

CBFS Filter driver will accept any valid requests from any process. The best it can do is to check the caller process' EXE name (this can be done by issuing EXE-…

What happens if the filesystem fails to delete the actual file from the backend data storage?

CBFS Connect is not different from other file systems in this aspect. Information about the file's existence will be removed from the Windows cache, but on the n…

Can I check integrity of the caller process?

As described in this question , you can perform checks in OnOpenFile/OnCreateFile callbacks / event handlers. Authenticode signature of the process' main EXE fil…

If we set filesystem name to NTFS, what effect will this change have?

Setting filesystem name to NTFS and the changes effect

Can I check which process accesses the file?

CBFS Filter offers flexible mechanisms to check the caller process. What you need to do is handle file creation and opening requests (add callback rules for OnOp…

Do we need to install CBFS Filter driver after each restart of computer?

The installation is performed once and this is usually done in the application installer, not in the application itself. However, you add rules and activate the …

When some file request is handled by the callback/event handler (eg. OnReadFile), are other requests for the same file waiting or callback/event handlers can be called for those requests at the same time?

By default, all requests for one file are handled sequentially (i.e. the next callback / event handler is called only after the previous one has been finished). …

Choosing the Right Storage for Application Data

This article discusses the advantages and disadvantages of data storage techniques.

Can CBFS Disk handle images of multipartition disks?

CBFS Disk lets you expose a disk with a file system on it to Windows and applications. Multipartition images don't just contain file systems. They contain some k…

Is CBFS Storage subject to fragmentation?

Fragmentation is not an issue for CBFS Storage; see the following for more information. Fragmentation was a problem on physical HDD disks with moving heads: to r…

Can I obtain the name of a user that accesses a shared folder?

Suppose you have shared the folder on the computer CBFS Filter works on. To get the name of the user, you need to share this folder for named access (not anonymo…

How do I protect my process or thread from being suspended/paused or terminated?

Handle the OnProcessHandleOperation event. This event is fired when some process opens a handle to a process that you want to protect. To prevent process termina…

How do I format a partition to CBFS Storage format?

Before any operation with a physical volume or disk, you must set a valid registration key using the CBFSStorage.SetRegistrationKey method. You can then follow t…

Using PKI-Based Security with CBFS Storage

This article reviews the functions and implementations of PKI-based security with CBFS Storage.

Can we have a WHQL-certified version of the driver?

Unfortunately, this is not possible due to technical reasons. WHQL certification involves a large number of tests conducted by automated software. This software …

How do I collect the log of file operations on the drive (for debugging)?

How to collect the log of file operations on the drive (for debugging)

How do I track file copying?

There's no such file system operation as file copying. The copy operation involves: file_open_for_reading, file_open_for_writing, read, write , and two file_clos…

I have deleted the file in the back-end storage exposed by CBFS Connect. How do I notify the system about this?

Suppose you are exposing a custom file system using CBFS Connect and you (or another application) have deleted a file named "/path/to/filename.ext" from this bac…

How do I know which user initiated a file system event?

Use the GetOriginatorToken method of the CBFS Filter class to get the security token of the process. You can use the security token to retrieve various security-…

Where's the CreationDisposition parameter and how do I distinguish between the Open and Create operations?

Where to find the CreationDisposition parameter and how to distinguish between the Open and Create operations?

In some cases I get the file name in ALL CAPS. What's wrong?

The file name is reported in the same format that was passed to the OS by the calling application. The caller can use short or long path names (or combine them) …

What is the sequence of callbacks called when Explorer opens the directory?

What is the sequence of callbacks called when Explorer opens the directory

How do I monitor files in a folder but not its subfolders?

CBFS Filter supports pass-through rules. These rules let you specify masks for which matching files are not handled using other rules (i.e., are excluded from fi…

I get BSOD with the error code NO_MORE_IRP_STACK_LOCATIONS (35). What's that?

When network disks are monitored, BSOD with error code NO_MORE_IRP_STACK_LOCATIONS (35) is reported. This happens when multiple filters (over 3) are installed du…

I created a local mounting point with the CBFS_SYMLINK_LOCAL | CBFS_SYMLINK_NETWORK combination of flags. Why is this disk visible via Network Neighborhood?

When a mounting point is created with CBFS_SYMLINK_NETWORK, it consists of two parts an optional disk name (either a drive letter, e.g., Z:, or a mounting point)…

How do I hide a folder?

First, note that hiding a folder with CBFS Filter doesn't remove its contents from the disk. The data remains available if the user boots in safe mode or another…

Can I clear the metadata cache?

You can clear the cache for a separate file/directory by using the NotifyDirectoryChange method. The cache for the disk as a whole can be cleared by setting the …

Can I create files and folders that don't really exist on the disk, using CBFS Filter?

Version 3 of CBFS Filter supports the creation of virtual files and directories. There is an additional parameter present in the Create/Open file callback. It s …

Can I delete backend data in the OnCanFileBeDeleted callback/event handler?

OnCanFileBeDeleted can't be used to delete the data because Windows can use this callback just to check whether the file can be deleted (not for the actual delet…

How can I attach a filter to a USB drive?

If the device is already present in the system and has some drive letter, then you just attach the filter to the drive as you do with a regular drive. However, i…

Why does throwing an exception from the OnDeleteFile callback/event handler not prevent file deletion?

This is the correct behavior. Windows can delete a file or directory in two ways: The first way: The file is opened. The "Delete on close" flag is set for the fi…

Troubleshooting: after the network mounting point with a share is created, Explorer can stop showing any SMB shares.

Troubleshooting: After the network mounting point with a share is created, Explorer can stop showing any SMB shares.

The OS caches the data read from the file and decrypted by CBFS Filter. How do I prevent this?

A file data cache is always used by the OS and its file system manager. You can't disable it or prevent the data from being placed into the cache. Before the app…

Why doesn't GetOriginatorProcessName return some process names?

If the GetOriginatorProcessName() method returns false, check the error code using the GetLastError() function from the Windows API. If the buffer is too small, …

Troubleshooting: Windows Search records an error message to the system log, when working on an "NTFS" disk created with CBFS Connect.

When the CBFS Connect name is set to NTFS, Windows starts to use some features specific to NTFS and not supported by CBFS Connect at the moment. In particular, t…

Are drivers available for all major platforms?

The OS edition and drivers are available for Windows, Linux, and macOS. On mobile devices the functionality of the OS edition can be accomplished with the Applic…

From File Systems to the Cloud and Back

The article discusses how software developers can combine the benefits of cloud storage with well-known and established technologies.

How do I get rid of the Windows warning box when installing drivers?

Getting rid of the Windows warning box when installing drivers

How do I limit the size of the storage (for example, when the storage is to be written on a CD or DVD)?

How do I limit the size of the storage (for example, when the storage is to be written on CD or DVD)?

I need to monitor file operations on the server. Is this possible with CBFS Filter?

When you need to track the file operations that are performed on a remote system (usually a file server), you need to understand the specifics and limitations of…

Use of the Callback Mode in CBFS Storage

This article reviews the use of Callback Mode in CBFS Storage

When SerializeCallback is false, do file operations for a file go into one thread?

All file operations for one file go into one thread (i.e., are serialized), but this thread is not always the same. The thread is picked from the worker thread p…

When I set "SectorSize" to 4096 and "StorageType" to "stDiskPnP", some applications can't work with the disk. Why?

In PnP mode the OS builds a stack of drivers on top of the CBFS Connect virtual disk driver (the one that is presented in PnP mode). This driver reports the sect…

Why does the system become slow if I perform lengthy operations in OnOpenFile, OnCreateFile, or OnCloseFile?

CBFS Connect processes requests in several threads parallely. This lets you achieve optimal performance. However, the creation and closing of the files requires …

Why can't I share the folder of a created virtual drive?

The folder can be shared when the mounting point added is a global mounting point (see the description of the parameters of the AddMountingPoint method). You can…

Why doesn't GetOriginatorProcessName return some process names?

the If GetOriginatorProcessName() method returns false, check the error code using the GetLastError() function from the Windows API. If the buffer is too small, …

Why is mounting point I added not visible in Explorer?

Explorer will update information about existing mount points only after it receives the WM_DEVICECHANGE message. This message is broadcast automatically by CBFS …

Why is a timeout necessary?

The timeout mechanism was implemented to avoid possible deadlocks in the system. These deadlocks can occur because of possible complications in the interaction b…

Is there a problem if timeout is disabled?

Usually there isn't. But, there can be some unexpected long waits in the callbacks you implemented and some influence from third-party system components. For exa…

I get "The 'Virtual Storage Mount Notification' add-on from 'EldoS Corporation' is ready for use." message in Internet Explorer 9. What is that?

Getting the Virtual Storage Mount Notification add-on message in Internet Explorer

The Initialize method throws a strange exception saying that the driver is not found. What's the reason?

The exact exception message is the following: "A volume has been accessed for which a file system driver is required that has not yet been loaded". Please check …

Is CBFS Filter a minifilter driver?

CBFS Filter can be installed and used in both legacy and minifilter modes. Please note that in the minifilter mode you need to register and obtain from Microsoft…

Do we need to install CBFS Connect after each restart of the computer?

The installation is performed once and this is usually done in the application installer, not in the application itself.…

eDiscovery Compliance for Existing and Planned Information Systems

This paper discusses the most effective ways to achieve eDiscovery compliance for your enterprise information system.

I have mapped an HDD image, but the system doesn't recognize it. What's wrong?

When the system doesn't recognize mapped images

How can I protect my storage from being accessed by CBFS Storage Explorer or by other users of CBFS Storage?

Use callback mode. In callback mode you are responsible for reading and writing the pages of the storage from/to the underlying media. In callback mode you can t…

How is the password asked for when some application accesses a password-protected file?

If the Password property is set and the file is protected using the same password as specified in the Password property, then this password is used. In other cas…

Why can't I create a directory or file whose name ends with a dot (".")?

This is the way the Windows shell works, and the behavior is consistent with other file systems. With FAR manager or with Windows API functions, you can create a…

Windows 10 now supports long file names. Can we?

CBFS Connect has supported long file names since version 3. The problem with Windows is not that it doesn't support long file names before that patch (it actuall…

7 Tiers of Data Recovery - Software Aspects

This white paper analyzes the advantages of CBFS Storage in the area of data recovery.

What happens if I allow access to the storage for an application that also runs applications? Will these other applications be able to access the drive?

What happens if a an application that accesses the storage also runs another application? Will this other application be able to access the drive?

Why does Explorer read files when I just browse the directory?

The reason why Explorer only reads files when browsing the directory

Can I use GetOriginator* functions in asynchronous notifications?

In asynchronous notifications, only the process name and process Id are available and can be retrieved. OriginatorToken is not available. The reason is that the …

Why is adding files so slow?

When you add files to the storage, you can experience a significant slowdown. This happens when you add a large file to the newly created and resized storage. Th…

Why is the added mounting point not visible in Explorer?

Explorer will update the information about the existing mount points only after it receives the WM_DEVICECHANGE message. This message is broadcasted automaticall…

Custom file systems as optimal solutions for huge media data archives and storages

This paper will mainly discuss and explore the problems and solutions of archive storage management

What is the difference between the OnCreateFileC and OnOpenFileC callbacks?

The differences between the OnCreateFileC and OnOpenFileC callbacks

How do I improve the performance of CBFS Storage?

CBFS Storage performance can be measured as the speed of operations or as the size of the storage file. On the file system level, CBFS Storage operates with page…

Why is it so slow to copy from a CBFS Connect drive as opposed to a regular disk?

Why copying is slow when doing it to/from CBFS Connect drive in opposite to regular disk

Can I access a storage from several applications?

With the Application edition of CBFS Storage, the same storage can be opened by more than one application at the same time only when all applications access the …

I need to expose data stored in a remote location. What samples do I start with?

Most tasks can be accomplished by using the Mapper sample as a template. The SFTPDisk sample (available for VCL and .NET APIs) is a more sophisticated sample tha…

What callbacks must be implemented for virtual files to work?

You need to implement the OnReadFileC and OnWriteFileC callbacks in order to handle reading and writing requests for a file. Optionally, you can handle OnCloseFi…

Can we have asynchronous versions of callbacks / events?

Can we have asynchronous versions of callbacks/events?

Is it possible to create nested virtual directories?

Yes, you can create virtual hierarchies of directories and files, just remember that no "real" file can be placed (created in or moved to) the virtual directory.…

Is it possible to create a "real" file in a virtual directory or move an existing file to the virtual directory?

No, since virtual directories don't really exist on the disk, a file can't be created or moved to a place that doesn't exist.…

How do I make a Recycle Bin on my virtual disk?

How to have a Recycle Bin on a virtual disk.

Why Choose CBFS Connect over Dokan and Dokany?

Professionally maintained products are more reliable and can cost less in the long run

Minifilter and legacy filter usage in Callback File System and CBFS Connect

Information about use of mini filters and legacy filters

How do I get rid of the Windows warning box when installing drivers?

The warning message is shown when the plug-n-play device driver (which is part of the CBFS Disk driver set) is installed. If you install drivers in non-PnP mode,…

eDiscovery Compliance for Existing and Planned Information Systems

This paper discusses the most effective ways to achieve eDiscovery compliance for your enterprise information system.

File Deletion in CBFS Filter

How file deletion works and how to track it

CBFS Connect: A Filesystem Driver SDK for Windows

CBFS Connect is an SDK library that enables you to present various data as the files and directories of a local virtual disk.

FileSystemWatcher and ReadDirectoryChangesW vs. CBFS Filter

CBFS Filter enables you to emulate FileSystemWatcher, and much more.

CBFS Storage vs. ZIP

Comparison of CBFS Storage and ZIP

CBFS Virtual Storage Product Feature Comparison

Developers can use this comparison chart to choose the Callback Technologies product that best fits their needs.