The design goals for the Windows 2000 I/O system include the following:
- Make I/O processing fast on both single and multiprocessor systems.
- Protect shareable resources by using the standard Windows 2000 security mechanisms (described in Chapter 8).
- Meet the requirements for I/O services dictated by the Microsoft Win32, OS/2, and POSIX subsystems.
- Provide services to make device driver development as easy as possible and allow drivers to be written in a high-level language.
- Allow device drivers to be added or removed from the system dynamically, based on user direction or automatic configuration as the result of the addition or removal of a hardware device from the system.
- Allow for the addition of drivers that transparently modify the behavior of other drivers or devices, without requiring any changes to the driver whose behavior or device is modified.
- Provide support for multiple installable file systems, including FAT, the CD-ROM file system (CDFS), the Universal Disk Format (UDF) file system, and the Windows 2000 file system (NTFS). (See Chapter 12 for more specific information on file system types and architecture.)
- Allow the system and individual hardware devices to enter and leave low-power states to prolong battery life and conserve energy.
In subsequent sections, we'll look at how the I/O system components are implemented to meet these goals.