Contents of the Design and Implementation Guide

The Design and Implementation Guide is organized into the following books:

Audio Device Drivers

This book describes how to write the different types of audio device drivers, including wave drivers, MIDI drivers, mixer drivers, and audio compression drivers.

Communications Device Drivers

Serial ports, parallel ports, FAX machines, and modems are examples of communications devices, providing a single asynchronous data stream. The central communications component in Windows 95, the virtual communications driver (VCOMM), is a virtual device (VxD) that manages all access to communications devices. VCOMM relies on port drivers, which are separate VxDs, to access communications devices. A port driver may need to be written to support a nonstandard communications port.

Display Drivers

Windows 95 display drivers are dynamic-link libraries (DLLs) that translate device-independent commands from the graphic-device interface (GDI) into commands that a display adapter uses to draw graphics on the screen. The device-independent bitmap (DIB) engine is a DLL that contains most of the functions needed to translate GDI commands, enabling the display driver to be a relatively simple display minidriver.

Infrared Device Drivers

Infrared (IR) communications is an optional component in the Windows 95. IR communications drivers can be built to support add-on IR adapters connected to serial or parallel ports and built-in IR devices running up to 115.2 kilobytes per second (Kbps).

Keyboard Drivers

A keyboard driver processes all keyboard input for the Windows 95 operating system and applications. The driver directly accesses the keyboard hardware, and provides hardware-independent keyboard input by translating scan codes to virtual-key codes.

Modems

The Windows 95 Modem Development Kit (MDK) provides the tools, sample INF files, and information needed to build and test INF files for AT and AT+V command modems. AT command modems are data modems, and AT+V command modems are voice modems.

Mouse and Pointing Device Drivers

Software components that support the mouse in Windows 95 include the virtual mouse device, optional mouse minidrivers, optional virtual cursor drivers, and the Windows mouse driver.

Multimedia Device Drivers

Windows 95 uses a generic, extensible approach of interacting with different multimedia devices, which uses both standard MCI features of MCI and extensions to MCI to provide access to new devices and new device features. Windows 95 also supports for waveform input and output devices, MIDI input and output and MIDI synthesizer devices, mixer devices, video capture devices, and joystick devices. Windows 95 also supports both audio and video compression and decompression (codec) drivers.

Network Device Drivers

Windows 95 supports network device drivers having either the network driver interface specification (NDIS) miniport or Full NDIS media access control model. The preferred driver model is the miniport model, as described in the Windows NT® Device Driver Development Kit (DDK) version 3.51. Developers of miniport drivers should obtain the Windows NT 3.51 DDK and use it to develop a driver that is binary-compatible between Windows 95 and Windows NT version 3.51. It is important to note that for network adapter card drivers, an NDIS 3.1-compliant Full NDIS media access control driver can be built by compiling an existing NDIS 3.0 Full media access control driver sources with the Windows 95 DDK tools.

The NDIS 3.1 specification is specific to Windows 95 and is essentially the NDIS 3.0 specification with Plug and Play capability added. A miniport driver is by definition NDIS 3.1-compliant, that is, the driver is a Plug and Play device.

Pen Device Drivers

Windows 95 provides a pen device driver and a pen calibration application that extends the Windows 95 Control Panel. The pen device driver, which supports digitizing pen hardware from various manufacturers, is a unidriver. The pen calibration application enables the user to calibrate a digitizer by touching targets on the digitizer; the calibration information obtained is used by the driver in reporting pen position coordinates to Windows 95.

Printer Device Drivers

To simplify the task of building a printer driver, the Windows 95 DDK provides a universal printer driver (a unidriver for printers). The unidriver is capable of carrying out requests (such as printing text, rendering bitmaps, or advancing a page) on most types of printers. To build a driver for a particular printer, a developer builds a minidriver, which accepts requests from GDI and then, in most cases, passes the request to the unidriver along with information that describes the capabilities, commands, and resident fonts of the particular printer. To simplify the task of building a minidriver, the Windows 95 DDK provides Unitool, a tool that provides a graphical user interface for building minidrivers.

The Windows 95 spooler is the component of the Windows 95 printer subsystem that enables print jobs to be routed to local and network printers. The spooler itself has numerous components, some of which can be written or modified by independent hardware vendors (IHVs).

Storage Device and Adapter Drivers

Layered block device drivers are 32-bit, flat-model device drivers that execute in protected mode. Windows 95 uses layered block device drivers to manage input and output to block devices, such as disks and CD-ROM devices. These drivers support partitioned and non-partitioned removable media as well as conventional, SCSI, and floptical floppy drives.

Windows 95 uses a variety of device driver components to support different types of devices and software. Each component corresponds to a specific layer and has specific responsibilities and requirements.