A model in which filter drivers are managed to receive callbacks for I/O requests
in which the filter drivers have registered an interest. Per-volume instances of
filter drivers register with a filter manager for pre-callbacks (for I/O to the
file system) and post-callbacks (for I/O from the file system), and identify which
I/O requests (e.g., create, read, write) they are registering to receive callbacks.
The filter manager orders the instances for callbacks. When an I/O request is received,
the filter manager converts the I/O request to callback data and calls the interested
filters in the callback order, whereby the filter instances can process the I/O
data. As the request returns from the file system, filters desiring post callbacks
are called in the reverse order. Efficient context management for the filters and
other functions, such as non-reentrant file I/O, are also provided by the model.