The design goals for the Windows I/O system are to provide an abstraction of devices, both hardware (physical) and software (virtual or logical), to applications with the following features:
Uniform security and naming across devices to protect shareable resources. (See Chapter 8 for a description of the Windows security model.)
High performance asynchronous packet-based I/O to allow for the implementation of scalable applications.
Services that allow drivers to be written in a high-level language and easily ported between different machine architectures.
Layering and extensibility to allow for the addition of drivers that transparently modify the behavior of other drivers or devices, without requiring any changes to the driver ...