Device Drivers

Each layered block device driver is a dynamically-loadable virtual device. The drivers work in conjunction with the IOS to carry out I/O operations for a given device. Although the drivers are VxDs, they do not use the standard virtual device services and APIs. The IOS provides the services and functions the device drivers need to complete their tasks.

Each driver belongs to at least one layer. Windows 95 permits a maximum of thirty-two layers, but a typical configuration will have at most 3 to 5 layers. Each layer is numbered, with layer zero at the top and layer thirty-one at the bottom. Every device driver sets one or more bits in a 32-bit flag to indicate within which layer(s) the driver belongs to.

Each layer has a specified level of functionality. A driver that belongs in a given layer must have this functionality. Drivers at higher layers generally deal with logical I/O operations on volumes. Drivers at lower layers carry out physical I/O to adapters. Drivers at other layers carry out transitions from a volume orientation to a logical device orientation; from logical device to physical device orientation; and from physical to adapter orientation. Drivers at these layers also carry out transitions from a volume relative logical I/O request to a device relative physical I/O request. Some layers are reserved.