Callbacks (Operating System Edition only)

The callbacks (events, delegates) are used in CBFS Storage to let the application provide custom data storage and handling (encryption and compression). Also, callbacks are used to notify the application about progress of time-consuming applications.

The use of callbacks is transparent, however the implementor of callback handlers should be aware of the following:

  1. the callback handler procedure must avoid using any file operations in buffered mode (both explicit and implicit). All files, access to which is done from callbacks, should be opened with FILE_FLAG_NO_BUFFERING flag.
  2. no APC (asynchronous procedure calls) should be performed.
Failure to follow the above restrictions will cause the system-wide dead-lock.

While for OnProgress and compression/encryption callbacks the above restrictions are not a big problem, implementation of virtual disks is a bit complicated. We suggest that the application performs all operations asynchronously, i.e. maintains it's own cache and performs all reading/writing to the actual file system outside of the callback procedures.