Stream Drivers and Native Drivers (Compact 2013)

3/26/2014

In Windows Embedded Compact, a driver is either a stream driver that interfaces with the OS and applications through the stream API, or it is a native driver that interfaces with the OS through a native interface. Native and stream drivers differ only with regard to the interfaces they expose and not by the devices they control. You can load both types of drivers during system startup or on demand, and either can be structured as layered or monolithic drivers (see Layered and Monolithic Drivers). The choice of device driver interface type depends on the purpose of the device driver and how the OS and applications access the device.

Each driver interface type is managed by a different software component. The Device Manager is the software component that manages stream device drivers on the system; it loads, unloads, and interfaces with stream drivers (see Device Manager). The Graphics, Windowing, and Events Subsystem (GWES) loads and manages most native drivers. As shown in the following figure, applications access stream drivers through the Device Manager while the OS accesses both types of drivers through the GWES and the Device Manager.

Stream Drivers and Native Drivers

The majority of device drivers in Windows Embedded Compact are stream drivers. The following table summarizes key distinctions between stream drivers and native drivers.

Device driver interface type

Characteristics

Stream

  • Supports any device whose I/O operations resemble the operation of reading and writing to a file.
  • Exposes the stream interface functions.
  • Loaded by the Device Manager at system boot time, device detection time, or application load time.
  • Exposed through the file system.

Native

  • Supports any device.
  • Exposes a custom API set that is unique to the driver.
  • Usually loaded and called by the core OS at boot time.
  • Typically supports input and output peripherals such as display drivers, keyboard drivers, and touchscreen drivers.

In This Section

  • Stream Drivers
    Describes the stream interface API, which makes it possible for software modules to interact with peripherals as if they were files.
  • Native Drivers
    Describes when to use a native driver, which is a driver that exposes any interface other than the stream interface.

See Also

Concepts

Device Driver Types