Installable File System ( IFS ) is an IBM OS / 2 and Microsoft Windows file system API that allows the operating system to recognize and load a file system driver.
Content
History
When the developers of IBM and Microsoft designed OS / 2, they realized that FAT does not meet the requirements of modern operating systems, and Microsoft began developing the High Performance File System (HPFS), codenamed Pinball . Instead of placing code inside the kernel, as with FAT, Microsoft developed an API based file system driver that would allow other developers to add new file systems to the kernel without having to change it.
When Microsoft stopped working on OS / 2, IBM continued to use the IFS interface and Microsoft implemented a similar one on Windows systems.
IFS on DOS 4.x
MS-DOS 4.0 supports the IFS directive for loading third-party file system drivers. [one]
Command format: IFS = <drive> <path> <driver>, the same as for the DEVICE directive.
IFS on OS / 2
IFS provided a basic and fairly powerful interface for programming file systems. It was included in 1989 in OS / 2 1.20 along with the HPFS file system.
File system drivers run in kernel space (ring 0) and are divided into four main parts: microIFS, miniIFS, IFS, helpers.
For the IFS driver, the file system code itself is not required, it will be loaded via the "IFS =" directive of the CONFIG.SYS file. This is a 16-bit dynamically loaded library of the new EXE-format. Regardless of whether 32-bit OS / 2 is used (2.0 or higher), IFS is always 16-bit (although you can also create 32-bit IFS).
MicroIFS is a piece of code that loads miniIFS into memory and transfers control to the kernel. This code is contained in the boot parts of the file system.
MiniIFS is the code that is executed by the kernel after the first "IFS =" directive specified in the CONFIG.SYS file, so the first argument of the IFS must be the file system of the system disk so that it can boot.
Helpers, 16-bit (for OS / 2 1.x) or 32-bit (for OS / 2 / 2.x and higher), run in user space (ring 3) and contain the code used for file system maintenance and called by utilities CHKDSK and FORMAT.
This four-part scheme allowed developers to dynamically add a new boot file system, such as the ext2 driver shown in OS / 2.
The CD-ROM file system driver (International Organization for Standardization 9660) was added to OS / 2 2.0, UDF was added to OS / 2 4.0, and JFS was added to OS / 2 4.5. eComStation, the latest release of OS / 2, also includes many OS / 2 file system drivers in the CD family. There was also an official 32-bit HPFS IFS, called HPFS386, that improved performance and added some features, such as a variable-size cache and access control lists, only available in OS / 2 Server 3.0. The FAT file system has not been removed from the kernel and never officially had its own IFS, although there are FAT ISFs to which functions have been added, such as long file names (LFNs), support for FAT32, etc.
Network file sharing protocols, such as NFS and SMB, are also implemented using IFS, but the IFS interface itself has never changed.
Windows NT IFS
The IFS API is part of the Windows Driver Kit. When Microsoft (after selling IBM) stopped developing OS / 2 and concentrated on what was first called OS / 2 NT, they took the idea from IFS, as well as from the HPFS file system.
Instead of a 4-part system, NT IFS was reworked into a two-part scheme: microIFS and miniIFS were removed from it. IFS and helpers remain the same, but later, in Windows NT 4.0, the Defragmentation Assistant (DEFRAG) was added. The original Microsoft NTLDR was coded to boot the NT kernel with FAT, HPFS or NTFS, but in later versions support for HPFS was discontinued. All drivers and helpers have become 32-bit executable files of the new type (PE). The FAT file system was transferred from the kernel to IFS and was seriously optimized for operation, using the capabilities of 32-bit work with devices (Fastfat name).
The original Windows NT 3.1 included FAT, HPFS (Pinball) and the newly created NTFS drivers along with the new improved CD-ROM file system driver, which included support for long file names using the Microsoft Joliet file system.
Windows NT 3.51 adds file-based compression for NTFS and the IFS interface. In Windows NT 4.0, HPFS has been removed. In Windows 2000 Fastfat, support for the FAT32 file system has been updated and UDF has been added.
In Windows 2000, the IFS interface has been changed to add file-based encryption. File sharing protocols and antiviruses are also implemented via IFS.
Apple has begun to include HFS + read-only drivers in Mac OS X 10.6 versions for use in Windows XP, Windows Vista and Windows 7.
Bibliography
- O'Reilly - Windows NT File System Internals, A Developer's Guide - By Rajeev Nagar - ISBN 1-56592-249-2
- Microsoft Press - Inside Windows NT File System - By Helen Custer - ISBN 1-55615-660-X
- Microsoft Press - Inside Windows NT - By Helen Custer - ISBN 1-55615-481-X
See also
- Virtual file system
Links
ext2 / ext3
- Ext2 file system driver for windows 2000 / XP / Vista (x86 / amd64) (supports writing / multiple codepages, ext3 htree, journal support new in 0.50)
- ext2 IFS for Windows NT (Read only)
- Ext2IFS / Another ext2-3 IFS for Windows NT / 2000 / XP / 2003 (Read / Write; support for UTF-8 htree; ext3 journal not supported)
ReiserFS
- ReiserFS IFS for Windows NT (Read only)
HFS
OS / 2
Others
- Solid File System - (SolFS) cross-platform single-file virtual filesystem with encryption and compression
- Callback File System - SDK for Windows in user mode
- RomFS - Windows driver examples
- WinFUSE - a .NET based Filesystem in USErspace framework that uses SMB instead of IFS
- Dokan - a user mode filesystem toolkit by means of an IFS proxy driver
Notes
- β Kevtronics. Undocumented Commands . 76362.2023@compuserve.com .