Device drivers are required to implement the following features:
A driver entry point that installs one or more instances of the Driver Binding Protocol.
Manages one or more controller handles. Even if a driver writer is convinced that the driver manages only a single controller, it is strongly recommended that the driver be designed to manage multiple controllers. The overhead for this functionality is low, and it makes the driver more portable.
Does not produce any child handles. This feature is the main distinction between device drivers and bus/hybrid drivers.
Ignores the RemainingDevicePath parameter that is passed into the
Start() services of the Driver Binding Protocol.
Consumes one or more I/O-related protocols from the controller handle.
Produces one or more I/O-related protocols on the same controller handle.