1.2.2 Configurability

Because Windows NT is a portable operating system, designed to run on both CISC-based and RISC-based machines, devices and their NT drivers must be both hardware-configurable and software-configurable.

For example, a given disk device might be attached to either of two EISA buses in one Windows NT machine, but the same device might be limited to a single EISA bus in another Windows NT machine. Such a device is hardware-configurable. To remain portable, its driver must not contain hard-coded machine-dependent values.

The driver of such a disk device might provide hardware-level support to one or more NT file systems in any given machine, depending on how the user partitions the disk. In addition, an NT intermediate driver might support fault tolerance (mirrored partitions, stripe sets, and/or volume sets) for higher-level file system drivers in machines with sufficient mass storage capacity. In other words, the same physical disk driver could provide support to more than one type of higher-level driver in some Windows NT machines but not in others. Such a disk driver is software-configurable, as are all intermediate and file system drivers that ultimately depend on support from NT device drivers.

The NT HAL component, implemented as a dynamic-link library, is responsible for all hardware-level, platform-specific support needed by every other component in the system, including NT drivers. The HAL exports support routines that hide platform-specific hardware details about caches, I/O buses, interrupts, and so forth, to provide an interface between the platform’s hardware and the system’s software. For example, an NT device driver must call a HAL-supplied routine to map the bus-relative interrupt vector at which its device interrupts in a given machine to the system-assigned vector the driver will use.

The NT Configuration Manager component provides a database, called the registry, of information about the hardware, peripheral devices, and drivers in a given machine. NT drivers can use the registry to get information about both the hardware configuration of the machine and other drivers in the system. NT drivers also supply information about their devices and machine-specific configurations in the registry.