1.1 Kinds of Drivers in Windows NT

Within the Windows NT operating system, there are two basic kinds of drivers:

·User-mode drivers, such as Win32 multimedia drivers, VDDs for MS-DOSŪ applications with application-dedicated devices, or another protected subsystem's drivers

User-mode drivers are subsystem-specific and are not discussed here. See the Multimedia Drivers and Virtual DOS Drivers documentation in the DDK for more information.

·Kernel-mode drivers for logical, virtual, or physical devices

These are called NT drivers, because they are part of the Windows NT executive: the underlying, "new technology" microkernel-based operating system that supports one or more protected subsystems. In the rest of this material, NT is frequently used to mean the Windows NT executive.

As Figure 1.1 shows, NT includes a number of kernel-mode components with well defined functionality isolated in each component. Those of most interest to NT device driver writers are the Kernel, I/O Manager, Hardware Abstraction Layer (HAL), Configuration Manager, Memory Manager, Executive Support, and Process Structure components. Additional components of interest to some NT driver writers include the Object Manager and Security Reference Monitor. Also of interest to NT file system driver writers is the Cache Manager, which is not shown in Figure 1.1.

Like NT itself, NT drivers are implemented as discrete, modular components with a well defined set of required functionality. All NT drivers have a set of system-defined standard driver routines and some number of internal routines as determined by the driver writer.

There are three basic types of NT drivers. Each type has a slightly different structure and quite different functionality:

·Device drivers, such as a keyboard or disk driver that directly controls a physical device

Device drivers are sometimes called lowest-level drivers, particularly when such a driver is the lowest driver in a chain of layered NT drivers.

·Intermediate drivers, such as a virtual disk, mirror, or device-type-specific class driver, that depend on support from underlying device drivers

·File system drivers (FSDs), such as the system-supplied FAT, HPFS, NTFS, or CDFS drivers, that also depend on support from underlying lower-level drivers

While a particular NT file system driver might or might not get support from one or more intermediate drivers, every NT file system driver ultimately depends on support from one or more device drivers.

Windows NT network drivers also can be classified as one of these types of drivers. For example, an NT server or redirector is a specialized file system driver, a transport driver is a type of intermediate NT driver, and a physical netcard (sometimes called a media access controller) driver is an NT device driver. However, NT provides specialized interfaces and support for network drivers, such as NDIS 3.0 (Network Device Interface Specification, Version 3.0) for drivers of physical net cards.

While this documentation provides some useful overviews and background information for NT file system and network driver writers, it is primarily a design guide for writers of NT device and intermediate drivers. Network driver writers can consult the relevant Windows NT Device Driver Kit (DDK) documentation.