Monolithic Drivers (Compact 2013)
3/26/2014
A monolithic driver contains the functionality for both the logic to control the hardware and the interface to the operating system and applications in a single DLL. A monolithic driver accesses its hardware device without using an intermediate PDD layer, and it exposes the functionality of the device to the operating system.
Device driver developers typically use monolithic drivers where performance and efficiency are critical factors, because it avoids the overhead associated with the function calls that occur between the MDD and PDD components of a layered driver. A monolithic driver can actually be simpler, more efficient, and easier to implement if the functionality of the target device corresponds closely to the semantics of the DDI functions that it exposes to applications. However, because monolithic drivers rely less on code reuse and do not take advantage of shared interface routines available in an MDD, monolithic drivers are, in general, more complex to develop than layered drivers.
When to Create a Monolithic Driver
The monolithic driver model is a good choice for a new device driver implementation if any one of the following is true:
- You are developing a device driver for uncommon, custom hardware and there is no existing MDD that you can reuse.
- You are reusing source code from an existing monolithic device driver.
- You need the additional performance that you can gain by avoiding additional function calls between separate layers in the driver architecture.
- You need the small memory savings that is possible in a monolithic driver over a layered driver for the same device.
- The capabilities of your device are well-matched to the functions in the stream or native interface of your driver.
For More Information About Monolithic Drivers
To learn more about the existing monolithic device drivers, see the Windows Embedded Compact 2013 topics described in the following table.
Topic |
Description |
---|---|
Describes the graphics device interface (GDI) functions and other display functions implemented by monolithic display drivers. |
|
Describes the IOCTL interface presented by the CD-ROM, Disk, and other block storage device drivers. |
|
Describes the functions, structures, and macros used by Human Interface Device (HID) drivers and parsers. |
|
Describes the network driver interface specification (NDIS) core and general-use functions exposed by network device drivers. |
|
Describes the functions exposed by device drivers that manage hardware LEDs. |
|
Describes the printer driver and printer port monitor functions exposed by printer device drivers. |
|
Describes the structures and functions exposed by PCI Bus Drivers. |
|
Describes the structures, status codes, registry settings, macros, IOCTLs, and functions exposed by SD card device drivers. |
Sample code for most of these drivers is available at %_WINCEROOT%\Public\Common\Oak\Drivers.