Device Driver Structure

This document describes the structures used to implement device drivers as LDDs and PDDs.

Both LDDs and PDDs are DLLs.

They implement a specific interface that allows the kernel to initialise them, and for user-side code to communicate with them.

An LDD must implement:

  • A DLogicalChannel or DLogicalChannelBase derived class, representing the logical channel, which handles user requests.

  • A DLogicalDevice derived class, which provides a factory for the logical channel objects, called the LDD factory.

  • A DLL entry point function at ordinal 1, which constructs the LDD factory object.

    It is possible that a device driver is also an extension, in which case the entry point will also be used for extension initialisation.

A PDD must implement:

  • A DBase derived class representing the physical channel, which is the interface between the logical device and the physical device.

  • A DPhysicalDevice derived class, which provides a factory for the physical channel objects, called the PDD factory.

  • A DLL entry point function at ordinal 1, which constructs the PDD factory object.