6.2.6 Bus drivers that produce one child in Start()

If the RemainingDevicePath parameter passed into Supported() and Start() is NULL, the bus driver must produce child handles for all children. If RemainingDevicePath is not NULL, the bus driver should parse RemainingDevicePath and attempt to produce only the one child device described by RemainingDevicePath. If the driver does not recognize the device path node in RemainingDevicePath, or if the device described by the device path node does not match any of the children currently attached to the bus controller, the Supported() and Start() services should fail. If the RemainingDevicePath is recognized, and the device path node does match a child device that is attached to the bus controller, a child handle should be created for that one child device.


Note: This step does not make sense for all bus types because some require the entire bus to be enumerated to produce even a single child. In these cases, the RemainingDevicePath should be ignored.


If a bus type has the ability to produce a child handle without enumerating the entire bus, this ability should be implemented. Implementing this feature provides faster boot times and is one of the major advantages of the UEFI driver model.

The UEFI boot manager may pass the RemainingDevicePath of the console device and boot devices to ConnectController(), and ConnectController() then pass this same RemainingDevicePath into the Supported() and Start() services of the Driver Binding Protocol. This design allows the minimum number of drivers to be started to boot an operating system. The process can be repeated, so one additional child handle can be produced in each call to Start().

Also, a few child handles can be created from the first few calls to Start() and then a RemainingDevicePath of NULL may be passed in, which would require the rest of the child handle to be produced. For example, most SCSI buses do not need to be scanned to create a handle for a SCSI device when SCSI PUN and SCSI LUN are known ahead of time. By starting only the single mass storage boot device, on the OS required SCSI boot channel, scanning of all the other SCSI devices can be eliminated.