# Installable File System

> Mediated Wiki article. Canonical URL: https://mediated.wiki/source/Installable_File_System
> Markdown URL: https://mediated.wiki/source/Installable_File_System.md
> Source: https://en.wikipedia.org/wiki/Installable_File_System
> Source revision: 1335286390
> License: Creative Commons Attribution-ShareAlike 4.0 International (https://creativecommons.org/licenses/by-sa/4.0/)

Filesystem API

The **Installable File System** (**IFS**) is a [filesystem API](/source/Filesystem_API) in [MS-DOS](/source/MS-DOS)/[PC DOS](/source/PC_DOS) 4.x, [IBM](/source/IBM) [OS/2](/source/OS%2F2) and [Microsoft Windows](/source/Microsoft_Windows) that enables the [operating system](/source/Operating_system) to recognize and load [drivers](/source/Software_driver) for [file systems](/source/File_system).

## History

When [IBM](/source/IBM) and [Microsoft](/source/Microsoft) were co-developing OS/2, they realized that the [FAT file system](/source/FAT_file_system) did not offer some of the features modern OSes would require, and Microsoft began developing the [High Performance File System](/source/High_Performance_File_System) (HPFS), codenamed *Pinball*.

Instead of coding it inside the kernel, as FAT was, Microsoft developed a "driver-based" filesystem API that could allow them and other developers to add new filesystems to the kernel without needing to modify it.

When Microsoft stopped working on OS/2, IBM continued using the IFS interface and Microsoft implemented a similar one in Windows NT.

## Implementations

### Additional file systems in DOS

The IFS framework was never implemented in [DOS](/source/DOS). To provide additional filesystems on top of [FAT](/source/File_Allocation_Table), like [MSCDEX](/source/MSCDEX) adds [ISO 9660](/source/ISO_9660) to read CD-ROMs, the [network redirector](/source/Network_redirector) was used instead.[1]

### IFS in OS/2

The IFS provided a basic and powerful interface for programming filesystems. It was introduced in 1989 in OS/2 1.20, along with the HPFS filesystem.

Filesystem drivers executed in kernel-space ([ring 0](/source/Ring_0_(computer_security))) and are divided in four principal pieces: microIFS, miniIFS, IFS, helpers.

Only the IFS and the filesystem code itself is required and it is loaded via an "[IFS](/source/IFS_(CONFIG.SYS_directive))=" statement in the [CONFIG.SYS](/source/CONFIG.SYS) file. It is a [NE](/source/New_Executable) [16-bit](/source/16-bit) [dynamically loaded library](/source/Dynamically_loaded_library). No matter if it is a [32-bit](/source/32-bit) OS/2 (2.0 and newer), the IFS is always 16-bit (although extraofficially you can make a 32-bit IFS).

The microIFS is a piece of code that loads in memory the kernel and the miniIFS and jumps to kernel execution. It is usually in the boot portion of the filesystem.

The miniIFS is a piece of code that is called by the kernel to load the first IFS statement that appears in the CONFIG.SYS file, so the first IFS statement must be the boot's filesystem for the system to be able to boot.

The helpers are 16-bit (for OS/2 1.x) or 32-bit (for OS/2 2.x and up), are executed in user-space ([ring 3](/source/Ring_3_(computer_security))) and contain the code used for typical filesystem maintenance, and are called by [CHKDSK](/source/CHKDSK) and [FORMAT](/source/Disk_formatting) utilities.

This four-piece scheme allowed developers to dynamically add a new bootable filesystem, as the [ext2](/source/Ext2) driver for OS/2 demonstrated.

[CD-ROM](/source/CD-ROM) filesystem driver ([ISO 9660](/source/ISO_9660)) was added in OS/2 2.0, [UDF](/source/Universal_Disk_Format) was added in OS/2 4.0 and [JFS](/source/IBM_Journaled_File_System_2_(JFS2)) was added in OS/2 4.5. [ArcaOS](/source/ArcaOS), the latest packaging of OS/2, has a number of filesystem drivers available, including FAT32.[2] There was also an official 32-bit HPFS IFS, called [HPFS386](/source/HPFS386) that improved performance and added some features, like variable size cache and [Access Control Lists](/source/Access_Control_Lists), and was available only in certain OS/2 server editions. The FAT filesystem was never removed from the kernel and officially never an IFS, although there are FAT IFS that added features like [long file names](/source/Long_filename) (LFNs), [FAT32](/source/FAT32) support, etc.

Network file-sharing protocols like [NFS](/source/Network_File_System_(protocol)) and [SMB](/source/Server_Message_Block) are also implemented using IFS, and the IFS interface never changed.

### IFS in Windows 3.11 and 9x

**IFSHLP.SYS** (the **Installable File System** Helper) is an [MS-DOS](/source/MS-DOS) device driver that was first released as part of Microsoft [Windows for Workgroups](/source/Windows_for_Workgroups) 3.11. It enables native [32-bit file access](/source/32-bit_file_access) in [Windows 386 Enhanced Mode](/source/Windows_3.0#Memory_modes) by bypassing the 16-bit DOS API and ensuring that no other [real mode](/source/Real_mode) driver intercepts [INT 21h](/source/INT_21h) calls.

The protected mode counterpart of IFSHLP.SYS is [IFSMGR.386](https://en.wikipedia.org/w/index.php?title=IFSMGR.386&action=edit&redlink=1) in Windows 3.11 and [IFSMGR.VXD](https://en.wikipedia.org/w/index.php?title=IFSMGR.VXD&action=edit&redlink=1) in Windows 95 and Windows 98.[3][4]

### IFS in Windows NT

The IFS API is part of the [Windows Driver Kit](/source/Windows_Driver_Kit).

When Microsoft stopped developing OS/2 and concentrated on what was then called OS/2 NT, they took the IFS ideas with it, along with the HPFS filesystem.

Instead of being a four-piece scheme, NT IFS was redesigned into a two-piece scheme. microIFS and miniIFS were removed from the scheme. IFS and helpers remain as the same, but later, in Windows NT 4.0, a [defragmentation](/source/Defragmentation) helper (DEFRAG) was added. Microsoft's original NTLDR was coded for loading the NT kernel from FAT, [HPFS](/source/High_Performance_File_System) or [NTFS](/source/NTFS), but subsequent versions dropped HPFS support. All of the drivers and helpers became 32-bit [PE executables](/source/Portable_Executable). The FAT file system was moved out of the Kernel to an IFS and was heavily optimized for performance, taking advantage of the 32-bit processing capabilities (being called [FASTFAT](/source/FASTFAT)).

Original Windows NT 3.1 incorporated FAT, HPFS (Pinball) and the newly created NTFS drivers, along with a new and improved CD-ROM filesystem driver that incorporated long file names using the [Microsoft Joliet](/source/Joliet_(file_system)) filesystem.

Windows NT 3.51 added per-file compression to NTFS and to the IFS interface. In Windows NT 4.0 HPFS was removed. In Windows 2000 FASTFAT was updated to support FAT32 and [UDF](/source/Universal_Disk_Format) was added.

Windows 2000 modified the IFS interface to add per-file encryption.

Network file-sharing protocols and antivirus are also implemented using IFS 'file system filter' drivers which intercept file I/O operations.[5]

[Apple](/source/Apple_Inc.) started including read only [HFS+](/source/HFS%2B) drivers in [Mac OS X 10.6](/source/Mac_OS_X_10.6)'s version of [Boot Camp](/source/Boot_Camp_(software))[6] for use in [Windows XP](/source/Windows_XP), [Windows Vista](/source/Windows_Vista), and [Windows 7](/source/Windows_7).

## Further reading

- Rajeev Nagar (1997). *Windows NT File System Internals, A Developer's Guide*. O'Reilly. [ISBN](/source/ISBN_(identifier)) [1-56592-249-2](https://en.wikipedia.org/wiki/Special:BookSources/1-56592-249-2).

- Helen Custer (1994). *Inside Windows NT File System*. Microsoft Press. [ISBN](/source/ISBN_(identifier)) [1-55615-660-X](https://en.wikipedia.org/wiki/Special:BookSources/1-55615-660-X).

- Helen Custer (1993). *Inside Windows NT*. Microsoft Press. [ISBN](/source/ISBN_(identifier)) [1-55615-481-X](https://en.wikipedia.org/wiki/Special:BookSources/1-55615-481-X).

## See also

- [Virtual file system](/source/Virtual_file_system)

- [List of file systems](/source/List_of_file_systems)

- [Comparison of file systems](/source/Comparison_of_file_systems)

- [Network redirector](/source/Network_redirector)

- [Dokan Library](/source/Dokan_Library)

## References

1. **[^](#cite_ref-1)** Duncan, Ray (1989-02-14). ["Power Programming: Comparing DOS and OS/2 File Systems"](https://books.google.com/books?id=kggOZ4-YEKUC&pg=PA321). *PCMag*. **8** (3): 321. [ISSN](/source/ISSN_(identifier)) [0888-8507](https://search.worldcat.org/issn/0888-8507). [OCLC](/source/OCLC_(identifier)) [960872918](https://search.worldcat.org/oclc/960872918). Retrieved 2025-10-06. p. 324: …in a thinly disguised form, installable file systems have been supported in DOS for quite a while! The network redirector, which first appeared in DOS Version 3.1, is really just an installable file system. … The CD-ROM extensions, which Microsoft has been selling for some time now, are another example of an installable file system. The structure of a CD-ROM disk is nothing at all like that of a FAT-format disk.

1. **[^](#cite_ref-2)** ["FAT32 Installable File System Driver"](https://www.arcanoae.com/wiki/fat32/). Retrieved 2020-09-04.

1. **[^](#cite_ref-3)** Peter H. S. Madsen. ["Guide to CONFIG.SYS & AUTOEXEC.BAT"](http://madsenworld.dk/con_auto/index-uk.htm#14a).

1. **[^](#cite_ref-4)** [*Google Books search results for IFSHLP*](https://books.google.com/books?dq=isbn%3A9781565922006&q=IFSHLP). Retrieved 2011-04-13.

1. **[^](#cite_ref-5)** ["About file system filter drivers - Windows drivers"](https://docs.microsoft.com/en-us/windows-hardware/drivers/ifs/about-file-system-filter-drivers). 15 December 2021.

1. **[^](#cite_ref-6)** ["Snow Leopard's Boot Camp Includes HFS + Windows Drivers"](http://www.macrumors.com/2009/05/06/snow-leopards-boot-camp-includes-hfs-windows-drivers/). 6 May 2009. Retrieved 14 September 2012.

## External links

- [File systems driver design guide](https://docs.microsoft.com/windows-hardware/drivers/ifs/) at [Microsoft Docs](/source/Microsoft_Docs)

### ext2/ext3/ext4

- [Ext2Fsd](/source/Ext2Fsd) is a [GPL](/source/GNU_General_Public_License) file system driver for Windows 2000 to Windows 8 (32Bit and 64Bit); it supports writing/multiple codepages, ext3 htree, journal since version 0.50 available

- [ext2 IFS for Windows NT](https://web.archive.org/web/20100116125644/http://uranus.chrysocome.net/linux/ext2ifs.htm) (Read only)

- [Ext2IFS](/source/Ext2IFS) / [Another ext2-3 IFS for Windows NT/2000/XP/2003](http://www.fs-driver.org/) (Read/Write; support for UTF-8 file names and ext3 htree; ext3 journal not supported )

### ReiserFS

- [ReiserFS IFS for Windows NT](http://rfsd.sf.net/) (Read only)

### HFS

- [Commercial HFS IFS for Windows NT](https://web.archive.org/web/20150510214930/http://macdrive.com/)

### OS/2

- [HFS IFS for OS/2](https://web.archive.org/web/20150110193853/http://www.student.nada.kth.se/~f96-bet/HFS/)

- [NTFS and FAT IFS for OS/2](http://www.dsteiner.com/products/software/os2/vfat.htm) [Archived](https://web.archive.org/web/20170620004724/http://www.dsteiner.com/products/software/os2/vfat.htm) 2017-06-20 at the [Wayback Machine](/source/Wayback_Machine)

- [FTP server offering IFS drivers for OS/2](http://hobbes.nmsu.edu/h-browse.php?dir=/pub/os2/system/drivers/filesys) [Archived](https://web.archive.org/web/20170502082453/http://hobbes.nmsu.edu/h-browse.php?dir=%2Fpub%2Fos2%2Fsystem%2Fdrivers%2Ffilesys) 2017-05-02 at the [Wayback Machine](/source/Wayback_Machine)

### Other

- [CBFS Storage](https://callbacktechnologies.com/cbfsstorage/) - cross-platform single-file virtual filesystem with encryption and compression

- [CBFS Connect](https://callbacktechnologies.com/cbfsconnect/) - SDK that lets developers create installable virtual file systems for Windows in user mode

- [MiniSpy Sample](https://github.com/microsoft/Windows-driver-samples/tree/main/filesys/miniFilter/minispy) - a Windows filter driver sample from Microsoft

- [EaseFilter](https://www.easefilter.com/kb/minifilter-framework.htm) - a file system filter driver framework for developers in Windows user mode

- [RomFS](http://www.acc.umu.se/~bosse/) - Windows driver examples

- [WinFUSE](https://web.archive.org/web/20141217230958/http://palissimo.de/) - a .NET based Filesystem in USErspace framework that uses SMB instead of IFS

- [Dokany](https://dokan-dev.github.io/) - an MIT-licensed framework for filesystems in Windows userspace that uses a separate kernel driver, with available .NET bindings

v t e Microsoft Windows components APIs Architecture 9x NT Booting process Games Management tools App Installer Command Prompt Control Panel Device Manager DirectX Diagnostic Tool Disk Cleanup Drive Optimizer Driver Verifier Event Viewer IExpress Management Console Netsh Performance Monitor PowerShell Recovery Console Resource Monitor Settings Sysprep System Configuration System File Checker System Information System Policy Editor System Restore Task Manager Windows Backup Windows Error Reporting Windows Ink Windows Installer Windows Update Windows Insider WinRE WMI Apps 3D Viewer Calculator Calendar Camera Character Map City Art Search Clipchamp Clock Company Portal Copilot Edge Fax and Scan Feedback Hub Get Help Magnifier Mail Media Player 2022 Mesh Messaging Mobility Center Money Movies & TV Narrator News Notepad OneDrive OneNote Paint PC Manager People Phone Link Photos Quick Assist Remote Desktop Connection Snipping Tool Sound Recorder Speech Recognition Sticky Notes Store Terminal To Do Weather Whiteboard Windows App Xbox Shell Action Center Aero AutoPlay AutoRun ClearType Explorer Search IFilter Indexing Service Namespace Saved search Special folder Start menu Task View Taskbar Windows Spotlight Windows XP visual styles Services BITS CLFS Error Reporting Multimedia Class Scheduler Service Control Manager Shadow Copy Task Scheduler Wireless Zero Configuration File systems CDFS DFS exFAT FAT IFS NTFS EFS Hard link links Mount Point Reparse point TxF ReFS UDF Server Active Directory Active DRM Services DFS Replication Distributed Transaction Coordinator DNS Domains Folder redirection Group Policy Hyper-V IIS MSMQ Network Access Protection Print Services for UNIX PWS Remote Desktop Services Remote Differential Compression Remote Installation Services Roaming user profiles Server Core SharePoint System Resource Manager Windows Deployment Services Windows Media Services WSUS Architecture Boot Manager Console CSRSS Desktop Window Manager Enhanced Write Filter Graphics Device Interface Hardware Abstraction Layer I/O request packet Imaging Format Kernel Transaction Manager Library files Logical Disk Manager LSASS MinWin NTLDR Ntoskrnl.exe Object Manager Open XML Paper Specification Portable Executable DLL EXE Registry Resource Protection Security Account Manager Server Message Block Shadow Copy SMSS System Idle Process USER WHEA Winlogon WinUSB Security Security and Maintenance AppLocker BitLocker Credential Guard Data Execution Prevention Defender Family features Kernel Patch Protection Mandatory Integrity Control Protected Media Path User Account Control User Interface Privilege Isolation Windows Firewall Compatibility COMMAND.COM Windows Subsystem for Linux WoW64 API Active Scripting JScript VBScript WSH COM ActiveX ActiveX Document COM Structured storage DCOM OLE OLE Automation Transaction Server DirectX Native .NET Universal Windows Platform WinAPI Windows Mixed Reality Windows Runtime WinUSB Games Solitaire Collection Surf Discontinued Games 3D Pinball Chess Titans FreeCell Hearts Hold 'Em InkBall Purble Place Solitaire Spider Solitaire Tinker Apps ActiveMovie Address Book Anytime Upgrade Backup and Restore Cardfile CardSpace CD Player Chat Contacts Cortana Desktop Gadgets Diagnostics DriveSpace DVD Maker Easy Transfer Edge Legacy Fax Food & Drink Groove Music Health & Fitness Help and Support Center HyperTerminal Imaging Internet Explorer Journal Make Compatible Maps Media Center Meeting Space Messaging Messenger Mobile Device Center Movie Maker MSN Dial-Up NetMeeting NTBackup Outlook Express Paint 3D Pay Phone Companion Photo Gallery Photo Viewer Program Manager Skype Sports Start Steps Recorder Sysedit Syskey Tips Travel WinHelp WordPad Write Others Desktop Cleanup Wizard File Protection Games for Windows HPFS Interix Media Control Interface MS-DOS 7 Next-Generation Secure Computing Base POSIX subsystem ScanDisk Video for Windows Virtual DOS machine Windows on Windows Windows Services for UNIX Windows SideShow Windows System Assessment Tool Windows To Go WinFS Spun off to Microsoft Store DVD Player File Manager Hover! Mahjong Minesweeper Category List

v t e OS/2 Developers Companies Microsoft (1.0 to 1.3 only) IBM People Ed Iacobucci (chief architect) Barry Appelman Joe Belfiore Moshe Dunie Naveen Jain Susan Kare Galina Kofman Barry Leiba Gordon Letwin John R. Patrick Mark Zbikowski Major versions 1.0 1.1 1.2 1.21 1.3 2.0 2.1 Warp 3.0 Warp Connect Warp Connect (PowerPC Edition) Warp 4.0 Warp 4.5 Components Information Presentation Facility Installable File System LAN Server Presentation Manager Windows Libraries for OS/2 Workplace Shell Technology and concepts Common User Access High Performance File System Pinball Journaled File System New Executable Shadow System Object Model Systems Application Architecture Successors eComStation ArcaOS See also Odin (Win32-OS/2) Team OS/2 Category Commons

---
Adapted from the Wikipedia article [Installable File System](https://en.wikipedia.org/wiki/Installable_File_System) by Wikipedia contributors ([contributor history](https://en.wikipedia.org/wiki/Installable_File_System?action=history)). Available under [Creative Commons Attribution-ShareAlike 4.0 International](https://creativecommons.org/licenses/by-sa/4.0/). Changes may have been made.
