Windows File System Development Kit (FSDK)
Even with the materials available now, file systems development for Windows remains a very challenging task. It can be surprisingly challenging. If you haven’t tried it yourself, take our word for it: we’ve developed several real, commercially-shipping, Windows file systems.
Sure, there are code examples – for some of the interfaces – available in the Windows Driver Kit (and older IFS Kits) and some documentation. You can even use Windows NT File System Internals as an architectural reference with the caveat that it references material that is well over a decade old (circa Windows NT 3.51). Finally, we know that the file systems interfaces may change from release to release of Windows.
There are also kits available, some even open source, that promise to allow you to create Windows file systems in user mode. But how solid are these kits? Who creates them and who supports them? OSR has a proven track record — more than 20 years of experience — in developing file systems for Windows.
Of course, in addition to the technical hurdles, your company probably has marketing and business requirements – get a product to market quicker, with more features, and do it on a smaller budget. Or perhaps you also have a staffing issue; finding file systems experts is challenging enough, but Windows file systems experts are difficult to find and expensive to boot.
The OSR FSDK can help you overcome these obstacles and achieve your goals: hitting that marketing window, keeping your engineering costs under control, and maximizing the functionality your file system provides. How? By providing you with a simple, clean interface in which you can implement your file system functionality without first having to become an expert in Windows file systems.
We’ve put years of effort into building a package that handles the common Windows-specific issues. This frees your scarce development team resources so they can then build the part of your product that adds value rather than simply reinventing the “common code.” You could build an entire driver yourself – but it would take longer to implement, debug, and test (not to mention maintain).
Also, since we set out to make the FSDK a true kit, we loaded it with numerous features that you won’t find in a typical file system example, such as code to ensure that your implementation is correct. The OSR FSDK tells your development team when they’ve done something wrong and provides them with information on how to fix it. This is something you can’t get from source code examples, documentation, seminars, or books. And if that isn’t enough, the entire OSR technical staff is standing behind the FSDK to answer those tough questions – included as part of the FSDK package.
Using the FSDK means that your engineering team members don’t need to spend the time to become experts on the esoteric aspects of the cache manager, virtual memory subsystem, and file system interface. In fact, users of the FSDK don’t need to know much about Windows file systems development issues at all. The FSDK wrapper handles all the hard stuff, and presents a straight-forward interface that’s both documented and supported. And, because the interface is much like the VFS inteface found on UNIX platforms, porting your file system either from or to a UNIX platform is almost easy.
Of course, if you already have a staff of expert Windows internals and file systems folks you might not need the FSDK. Or perhaps you have the years it will take to build that team. But, to be truthful, even clients who have access to the entire Windows source code base have found the FSDK to be useful, strictly as a way to force structure on their code, save development time, and decrease their time to market. Really!
So, free your developers from spending their time reading file system example code, and trying to figure out just how the examples work and why. With the FSDK, your development team can be writing useful code for your file system now.
The FSDK provides a complete implementation of the “upper edge” functions required of Windows file systems. It then presents a simple I/O based interface to your file system, which allows you to focus on implementing your file system’s functionality without worrying about many of the details of interfacing with the operating system. And it does it without sacrificing performance or functionality. The end result? You can deliver a fully-functional Windows system to market quickly.
- Virtual Memory support, which includes:
- The ability to execute binary images (which are demand-paged by the VM system)
- The ability to support file mapping via the Win32 API
- Read-ahead I/O optimizations to minimize unnecessary disk or network traffic (via integration with the existing Cache Manager)
- Write-behind caching to increase user performance perceptions
- Complete support of the integration between the file system and VM cache
- Complete support for mandatory byte range locking
- Complete support for the Windows security model (optionally implemented by your file system) allowing support of access control lists and auditing
- Support for Extended Attributes (supported by NTFS and HPFS)
- Support for automatic generation of compatible short file names (8.3 compliant)
- A royalty-free, non-exclusive license to distribute binary images including the FSDK as part of your product.
For physical file systems, the FSDK offers the following services:
- A sample file system recognizer, allowing your file system driver to be loaded on demand
- Oplock support, which is essential for optimizing LanManager server performance
- Directory change notification, used by applications to detect when file system state has changed
- File system mount and dismount support (for use with removable media, for instance)
- Forced dismounting support (required for scheduled failover in cluster environments)
For network file systems (redirectors), the FSDK offers the following services:
- Integration with the UNC provider interface model
- Handling of the “share” interface used to map network destinations to drive letters
For pseudo file systems (applications which support a file system interface but do not “fit” standard categories) the FSDK offers the following services:
- Dynamic creation and deletion of drive letters as required
- Tight integration – including the ability to work seamlessly with existing services and applications, such as LanManager (CIFS) and Explorer
With the OSR FSDK, your team will be able to be “up and running” – developing file system code – within a matter of days. Because of this, you will be able to get your product to market that much sooner – a key advantage over your competitor who decided to figure it out on their own. Of course, OSR also stands behind the FSDK to facilitate your team’s progress. Should they have problems with the kit, tough technical questions, or problems with Windows, the entire team here at OSR will assist you. After all, we want to guarantee the success of your project!
Kernel-Mode or User-Mode? You Can Choose!
OSR’s FSDK generally supports kernel-mode development, because Windows was designed to work with kernel-mode file systems. User-mode file system designs in Windows are always compromises. However, if your needs are specific and your performance requirements modest, OSR’s FSDK includes optional support for user-mode file system development. When you contact us, we’ll be happy to discuss the pros and cons of both approaches with you and guide you to the solution that will best meet your needs.
Quality Assurance and Support
Your investment in the FSDK is sure to be a valuable one. The FSDK is tested exhaustively by OSR prior to each release to ensure it is of the highest quality. Of course, you are protected against both bugs and obsolescence in the FSDK with one full year of maintenance and support from OSR’s world-class technical staff. Following that initial year, optional support services are available to protect your investment into the future.