Unwritten Rules and Many Permutations

It may surprise you to learn that most of the rules for creating interoperable File System Minifilters are unwritten, ridiculously complex, and are constantly changing.  This even includes application interoperability.  The result is FESF doesn’t achieve any of these categories of interoperability automatically.  There’s work involved for every, single, release.

This is true, even though we here at OSR helped originate the filtering approach used by modern File System Filters and Minifilters.  We pioneered the development of “same stack” filtering back in the 1990’s.  Microsoft officially endorsed this approach starting in the mid-2000’s, and it is the approach that they currently recommend. The result has been dramatically increased interoperability, across the whole ecosystem.

Even when “same stack” filtering is used, however, the work involved to achieve interoperability can be daunting.  While an application reading an encrypted file and being presented with decrypted data might seem reasonably straight-forward, supporting even this simple operation can involve stunningly complex interactions with the I/O Subsystem, the Memory Manager, the Cache Manager, and the underlying file system. 

The case above becomes even more complicated when the differing behavior of various Windows versions are added into the mix.

Then consider the differences that occur due to the (multiple different versions of) underlying Microsoft file systems.

Then add into the mix the multiple Microsoft-developed File System Minifilters that ship with each version of Windows.

And finally, don’t forget to account for the unique behaviors introduced by any coexisting third-party products, such as antivirus filters, backup filters, license managers, hierarchical storage subsystems, etc., each of which can vary from release to release.