Callback Technologies Knowledge Base

Does CBFS Filter include any patented technologies?

CBFS Filter itself doesn't include patented technologies. However, there exist several US patents ( US5937406 , US7502782 , US8224837 , maybe more) which you can…

Does CBFS Connect include any patented technologies?

Does CBFS Connect include any patented technologies

Digital Rights Management (DRM) with CBFS Storage

This article reviews the way CBFS Storage secures confidential information and prevents unauthorized access from third parties to this information.

Getting started with CBFS Connect

The article reviews how to get started step by step with CBFS Connect

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

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

(Windows) Do we need to install drivers after each restart of computer?

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

Is CBFS Storage FIPS-certified?

The primary function of CBFS Storage is to store data in a convenient way. If you need a certified security module, it's not a problem with CBFS Storage take any…

How do I prevent the process from being started?

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

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

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

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

Everything is built-in. Check FormatFixedSize() and CheckAndRepair() methods in CBFS Storage engine.…

How do I enable Windows Search on CBFS Connect drive?

Enabling Windows Search on CBFS Connect drive

GetOriginator*() methods don't work in OnFileOpenN and OnFileCreateN. Why is it so?

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 ReadOnly access rule?

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

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

The meaning of "Could not load file or assembly 'CBFSNet.dll' or one of its dependencies".

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

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

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 the directory read-only and its subdirectories as read-write?

You need to set the following rules (C++ syntax below): CBFSFilter::AddFilterAccessRule( span class= span class= CBFSFilter::AddFilterAccessRule( span class= spa…

How do I prevent file deletion using callback rules?

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

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 file existence will be removed from Windows cache, but on next scan of th…

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 multi-partition disks?

CBFS Disk lets you expose the disk with a file system on it to Windows and applications. Multi-partition images don't [just] contain file systems. They contain s…

Is CBFS Storage subject to fragmentation?

Fragmentation was a problem on physical HDD disks with moving heads: to read and write sectors, the HDD has to reposition heads and this slows down reading and w…

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

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

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

You need to handle OnProcessHandleOperation event. This event is fired when some process opens a handle to your process, which you want to protect. To prevent pr…

How do I format the partition to CBFS Storage format?

Before any operation with physical volume or disk, you must set a valid registration key by CBFSStorage.SetRegistrationKey method. First of all, you have to form…

Using PKI-based security with CBFS Storage

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

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

Possibilities to have a WHQL-certified version of the driver

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_close …

I have deleted the file in the backend storage, exposed by CBFS Connect. How do I notify the system about this?

Notifying the system when deleting the file in the backend storage exposed by CBFS Connect

How do I know which user initiated the filesystem event?

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

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

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

In some cases I get the file name in ALL CAPS. What

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

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 the folder but not its subfolders?

Starting with version 2.2 CBFS Filter supports pass-through rules. These rules let you specify masks, for which matching files are not handled using other rules …

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

I get BSOD with error code BSOD with error code NO_MORE_IRP_STACK_LOCATIONS (35). What

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

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

How do I hide a folder?

First you need to realize 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 m…

Can I clear metadata cache?

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

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

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

Can I perform deletion of the backend data in 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 (and not for actual delet…

How can I attach a filter to 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 throwing an exception from OnDeleteFile callback/event handler doesn’t prevent file deletion?

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

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

Problem If a network mounting point is created and the specified server name is the same as the computer name (which is used by the system for SMB shares), then …

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

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. However, this is…

Why doesn't GetOriginatorProcessName return some process names?

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

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

When 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, this …

Are drivers available for all major platforms?

OS edition (and drivers) is available for Windows and MacOS X. Linux and FreeBSD versions are in permanent beta state. Mobile devices unfortunately don't have an…

From File Systems To The Cloud And Back

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

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

Getting rid of 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 CD or DVD)?

You can create a growing storage with a maximum size set (set MaxPageCount property), or you can create a storage with fixed preset size (see FormatFixedSize met…

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 the remote system (usually a file server), you need to understand the specifics and limitations …

Use of 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 po…

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

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

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 possible performance. However, the creation and closing of the files …

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

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

Why doesn't GetOriginatorProcessName return some process names?

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

Why the added mounting point is 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 timeout necessary?

Timeout mechanism was implemented to avoid possible deadlocks in the system, this because of possible complication in interaction between CBFS Connect, Windows, …

Is there a problem if timeout is disabled?

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

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

Initialize method throws a strange exception saying that the driver is not found. What

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

Is CBFS Filter a mini-filter driver?

Starting with the version 3.1, CBFS Filter can be installed and used in both Legacy and Mini-filter modes. Please note that in the mini-filter mode you need to r…

Do we need to install CBFS Connect after each restart of 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 ways to make your enterprise information system eDiscovery compliant the most effective way.

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 the 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 dot (".")?

The reason why it is impossible to create a directory or file whose name ends with dot (".")?

Windows 10 started to support long file names. Can we?

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

7 Tiers of Data Recovery - Software Aspects

This white paper analyzes advantages of CBFS Storage use in the area of data recovery following a disastrous event of any nature.

What happens, if the application, for which access to the storage is allowed, runs other application? Will this other application be able to access the drive?

The answer depends on how the access is granted. If you grant access only to a certain process, then the children of this process won't be able to access the dri…

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

The reason why Explorer reads files when browsing the directory

Can I use GetOriginator* functions in notifications (which are asynchronous)?

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

Why is addition of the file so slow?

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

Why the added mounting point is 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 OnCreateFileC and OnOpenFileC callback?

The differences between OnCreateFileC and OnOpenFileC callback

How do I improve CBFS Storage performance?

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

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

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

Can I access the 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 remote location. What sample(s) do I start with?

What samples to use when exposing stored data in remote location

What callbacks must be implemented for virtual files to work?

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

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 or moved to) in 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, the file can't be created or moved to the place that doesn't exist.…

How to have 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 prodcuts are more reliable and can cost less in the long run

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

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

eDiscovery Compliance for Existing and Planned Information Systems

This paper discusses the ways to make your enterprise information system eDiscovery compliant the most effective way.

File Deletion in CBFS Filter

How file deletion works and how to track it

Filesystem Driver SDK for Windows - CBFS Connect

CBFS Connect is a library (SDK, software development kit) for presenting various data as files and directories of a local virtual disk.

FileSystemWatcher and ReadDirectoryChangesW vs. CBFS Filter

CBFS Filter is a developer component that monitors and controls disk activity, tracks file and directory operations, alters file data, encrypts files, and much m…

CBFS Storage vs. Zip

Comparison of CBFS Storage and ZIP

CBFS Virtual Storage Product Feature Comparison

Callback Technologies offers several products with different yet often confused functionality. This comparison chart is aimed at helping the developers choose the product that fits their needs most of all.