About the IFS Kit

Updated: November 2, 2004

The primary goal of the Microsoft Windows Installable File System (IFS) Kit is to provide all of the materials necessary to design, build, and debug file systems and file system filter drivers for Windows 2000 and later operating systems. The information here provides a quick overview of what's available in the IFS Kit, plus links to key resources.

On This Page

Who Uses the IFS Kit?  Who Uses the IFS Kit?
What Does the IFS Kit Contain?  What Does the IFS Kit Contain?
What's Not in the IFS Kit?  What's Not in the IFS Kit?
Filter Manager Information and Resources from Microsoft  Filter Manager Information and Resources from Microsoft
Quick FAQs and Resources for the IFS Kit  Quick FAQs and Resources for the IFS Kit
IFS Kit and File System Resources from OSR  IFS Kit and File System Resources from OSR
About the IFS Kit Documentation  About the IFS Kit Documentation
About File Systems, File System Drivers, and File System Filters  About File Systems, File System Drivers, and File System Filters


Who Uses the IFS Kit?

The IFS Kit is provided to meet the specific needs of certain developers, including:

  • Developers who create and support minifilters under the Filter Manager, which is a file system filter driver provide by Microsoft to simplify the development of filter drivers.
    This is the recommended implementation for filter drivers.

  • Developers who create and maintain file system filter drivers to support the needs of their products. This involves legacy implementations that should be used only when developing filter drivers for Windows NT 4.0 or earlier versions of Windows.

  • File system developers who want to implement a file system under Windows 2000 or later operating systems. For this audience, the kit includes the interface for the file system driver model.

To write file system or file system filter drivers, you must be an experienced developer familiar with Windows kernel-mode driver programming.

If you are trying to create virtual files or directories to be viewed through the Windows Shell, the shell extension interfaces may be a better option. Shell extension modules are user-mode DLLs that are registered with the Windows Shell. For more information on these interfaces, please refer to the Platform SDK section of the MSDN Online Library.

Top of page Top of page

What Does the IFS Kit Contain?

The IFS Kit is a superset of the Windows DDK. The DDK contains the headers, libraries, samples, documentation, and build environments for building a device driver for the Windows 2000, Windows XP and Windows Server 2003 platforms. In addition to what the DDK provides, the IFS Kit supplies all the headers and libraries that are needed to build a file system driver or file system filter driver using the DDK build environment. It also includes documentation and samples that are specific to file systems and file system filter drivers, including minifilters developed to the Filter Manager model.

The Windows DDK contains a complete build environment, including the Microsoft C/C++ compiler from Microsoft Visual Studio .NET. Other C/C++ compilers might work with the IFS Kit, but have not been tested.

File System Driver Samples. Current samples include:

  • CDFS, the CD-ROM ISO-9660 media file system

  • FastFAT, the FAT media file system

  • SMBMRX, a simplified sample version of the RDR2-based SMB network redirector

Minifilter Driver Samples. Current samples include:

  • CDO, a minifilter that has a control device object

  • Ctx, context samples

  • MetaDataManager, a minifilter that flushes private metadata when volumes dismount or the system shuts down

  • Minispy, a minifilter that monitors file I/O on local and network drives

  • Nullfilter, a stub template for a minifilter

  • Passthrough, a minifilter that registers for all operations but does no work

  • Scanner, a minifilter that scans the contents of a file

  • Swapbuffers, a minifilter that swaps buffers for read/write operations

Legacy Filter Driver Samples. Current samples include:

  • Sfilter

  • Filespy

Top of page Top of page

What's Not in the IFS Kit?

The IFS Kit currently does not provide the following:

  • No formal specification of on-disk format for NTFS, FAT or CDFS.
    As noted earlier, the FAT and CDFS file systems are provided as source samples in the kit, and the standard file system IOCTLs are provided.

  • No interfaces for writing a file system from which the operating system can boot.

  • No interface to built-in file system utilities such as CHKDSK, FORMAT, COMPRESS, CONVERT, FTDisk, and so on, plus no Utility DLL interfaces, such as UFAT.DLL and UNTFS.DLL. These utilities work only for system-supplied file systems.

Note Unless otherwise stated, built-in utilities cannot be used with third-party file systems. Developers of new file systems must write their own utilities.

Top of page Top of page

Filter Manager Information and Resources from Microsoft

The Filter Manager is a file system filter driver provided by Microsoft that simplifies the development of third-party filter drivers and solves many of the problems with the existing legacy filter driver model, such as the ability to control load order through an assigned altitude. A filter driver developed to the Filter Manager model is called a minifilter.

For white papers and other related resources, see File System Filter Drivers on WHDC.

Top of page Top of page

Quick FAQs and Resources for the IFS Kit

Q: How do I get the IFS Kit?

The IFS Kit is distributed as part of the Windows Driver Kit (WDK).

Q: Does WHQL offer "Designed for Windows" Logo Program testing for file system filter drivers?

WHQL testing is available currently only for anti-virus file system filter drivers. There is no testing program for other types of file system filter drivers or for file systems. However, most HCTs for the anti-virus file system filter drivers can also be used to test compatibility and reliability of other file systems and filter drivers, even though no WHQL test program covers these kinds of drivers.

Q: Does Microsoft offer support for the IFS Kit?

Yes, through regular Microsoft support programs for developers.

For more support resources, see "IFS Kit and File System Resources from OSR" later in this article.

Top of page Top of page

IFS Kit and File System Resources from OSR

OSR Discussion Forum. For technical questions about developing file systems or file system filter drivers, use the public forum provided through the NTFSD mailing list sponsored by OSR. To subscribe to and use the forum, go to the OSR ListServer This link leaves the Microsoft.com site page and follow the instructions to join the NTFSD mailing list.

This is a public peer-to-peer discussion forum. Microsoft does not offer formal support on this mailing list, but does monitor and contribute to help ensure accuracy of information.

More IFS Kit and File System Development Resources from OSR

Top of page Top of page

About the IFS Kit Documentation

The following list previews topics in the IFS Kit (in 2004), giving you a glimpse into both the documentation provided and the scope of activities supported by the IFS Kit.

  • Design Guide
    • File System Filter Drivers
      • File System Fundamentals
      • Introduction to File System Filter Drivers
      • Filtering I/O Request packets (IRPs) and Fast I/O
      • Writing IRP Dispatch Routine
      • Using IRP Completion Routines
      • Tracking Per-Stream Context in a File System Filter Driver
    • File System Minifilter Drivers
      • Creating an INF File for a Minifilter Driver
      • Writing a DriverEntry Routine for a Minifilter Driver
      • Writing a FilterUnloadCallback Routine for a Minifilter Driver
      • Writing Preoperation and Postoperation Callback Routines
    • Network Redirector Drivers
      • Introduction to Remote File Systems
      • Introduction to Network Redirectors
      • Kernel Network Redirector Driver Components
    • File Systems Security
  • Reference
    • Cache Manager Routines
    • Executive Support Routines
    • File System Runtime Library Routines
    • FltXxx (Minifilter) Routines
    • I/O Manager Routines
    • Kernel Support Routines
    • Memory Manager Routines
    • Network Mini-Redirector Routines
    • Object Manager routines
    • Process Structure Routines
    • Runtime Library Routines
    • Security Reference Monitor Routines
    • ZwXxx Routines
    • IRP Function Codes
    • Minifilter User Mode Application Functions
  • System Structures
    • File Context Structures
    • Minifilter Structures and Callbacks
    • Security Structures
    • Other System Structures
  • OSR Technical Articles
Top of page Top of page

About File Systems, File System Drivers, and File System Filters

A file system is a software component that manages files on a hard disk or other local storage device such as an optical drive. There are two main types of file system drivers: local (media-based) and remote (network-based).

A file system driver is implemented as a Windows kernel-mode driver. In addition to the IRP interface exposed in the Windows DDK, a file system driver must be integrated with different features of the system such as the cache manager, memory manager, security, synchronization, and locking.

Local file systems have their own on-media format and are used on local media by the operating system. Examples of local file systems include NTFS, FAT, and CDFS.

Remote file systems are necessary when a client obtains data from a remote computer. This is generally done by asking a remote server to send the data. To make the network connection/file operations appear as local file operations, network file systems are accessed through a file system on the Windows client computer. This file system is often called a redirector or a requestor. The redirector translates these requests into a client/server network protocol transmitted across the network media, using various redirector/server network protocols.

A file system filter driver is an optional driver that adds value to or modifies the behavior of another driver, specifically, a file system. It is a kernel-mode component that runs as part of the NTexecutive. A file system filter driver can filter I/O operations for one or more file systems or file system volumes. Depending on the nature of the driver, filter can mean log, observe, modify, or even prevent. Typical applications for file system filter drivers include antivirus, encryption, replication, and hierarchical storage management products. For more information, see File System Filter Drivers.

For more general information on Windows and NTFS, see Inside Windows 2000, Third Edition, by David Solomon and Mark Russinovich.

Top of page Top of page