Intel Extensible Firmware Interface Network Router User Manual


  Open as PDF
of 1084
 
Extensible Firmware Interface Specification
9-14 12/01/02 Version 1.10
Bus Driver that creates all of its child handles on the first call to Start():
1. Ignore the parameter RemainingDevicePath.
2. Open all required protocols with OpenProtocol()
. A standard driver should use an
Attribute of EFI_OPEN_PROTOCOL_BY_DRIVER. If this driver needs exclusive access
to a protocol interface, and it requires any drivers that may be using the protocol interface to
disconnect, then the driver should use an Attribute of
EFI_OPEN_PROTOCOL_BY_DRIVER | EFI_OPEN_PROTOCOL_EXCLUSIVE. It must
use the same Attribute value that was used in Supported()
.
3. If any of the calls to OpenProtocol() in (2) returned an error, then close all of the
protocols opened in (2) with CloseProtocol()
, and return the status code from the call to
OpenProtocol() that returned an error.
4. Initialize the device specified by ControllerHandle. If an error occurs, close all of the
protocols opened in (2) with CloseProtocol(), and return EFI_DEVICE_ERROR.
5. Discover all the child devices of the bus controller specified by ControllerHandle.
6. If the bus requires it, allocate resources to all the child devices of the bus controller specified by
ControllerHandle.
7. FOR each child C of ControllerHandle:
a. Allocate and initialize all of the data structures that this driver requires to manage the child
device C. This would include space for public protocols and space for any additional
private data structures that are related to the child device C. If an error occurs allocating
the resources, then close all of the protocols opened in (2) with CloseProtocol(), and
return EFI_OUT_OF_RESOURCES.
b. If the bus driver creates device paths for the child devices, then create a device path for the
child C based upon the device path attached to ControllerHandle.
c. Initialize the child device C. If an error occurs, close all of the protocols opened in (2) with
CloseProtocol(), and return EFI_DEVICE_ERROR.
d. Create a new handle for C, and install the protocol interfaces for child device C using
InstallMultipleProtocolInterfaces()
. This may include the
EFI_DEVICE_PATH
protocol.
e. Call OpenProtocol() on behalf of the child C with an Attribute of
EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER.
8. END FOR
9. Return EFI_SUCCESS.