2 Library functions that abstract driver model protocols
5 Copyright (c) 2006 - 2007, Intel Corporation<BR> All rights
6 reserved. This program and the accompanying materials are
7 licensed and made available under the terms and conditions of the BSD License
8 which accompanies this distribution. The full text of the license may be found at
9 http://opensource.org/licenses/bsd-license.php
11 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
12 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
17 // Include common header file for this module.
19 #include "CommonHeader.h"
22 Intialize a driver by installing the Driver Binding Protocol onto the
23 driver's DriverBindingHandle. This is typically the same as the driver's
24 ImageHandle, but it can be different if the driver produces multiple
25 DriverBinding Protocols. This function also initializes the EFI Driver
26 Library that initializes the global variables gST, gBS, gRT.
28 @param ImageHandle The image handle of the driver
29 @param SystemTable The EFI System Table that was passed to the driver's entry point
30 @param DriverBinding A Driver Binding Protocol instance that this driver is producing
31 @param DriverBindingHandle The handle that DriverBinding is to be installe onto. If this
32 parameter is NULL, then a new handle is created.
34 @retval EFI_SUCCESS DriverBinding is installed onto DriverBindingHandle
35 @retval Other Status from gBS->InstallProtocolInterface()
40 EfiLibInstallDriverBinding (
41 IN
const EFI_HANDLE ImageHandle
,
42 IN
const EFI_SYSTEM_TABLE
*SystemTable
,
43 IN EFI_DRIVER_BINDING_PROTOCOL
*DriverBinding
,
44 IN EFI_HANDLE DriverBindingHandle
49 ASSERT (NULL
!= DriverBinding
);
51 Status
= gBS
->InstallMultipleProtocolInterfaces (
53 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
57 // ASSERT if the call to InstallMultipleProtocolInterfaces() failed
59 ASSERT_EFI_ERROR (Status
);
62 // Update the ImageHandle and DriverBindingHandle fields of the Driver Binding Protocol
64 DriverBinding
->ImageHandle
= ImageHandle
;
65 DriverBinding
->DriverBindingHandle
= DriverBindingHandle
;
71 Intialize a driver by installing the Driver Binding Protocol onto the
72 driver's DriverBindingHandle. This is typically the same as the driver's
73 ImageHandle, but it can be different if the driver produces multiple
74 DriverBinding Protocols. This function also initializes the EFI Driver
75 Library that initializes the global variables gST, gBS, gRT.
77 @ImageHandle The image handle of the driver
78 @SystemTable The EFI System Table that was passed to the driver's entry point
79 @DriverBinding A Driver Binding Protocol instance that this driver is producing
80 @DriverBindingHandle The handle that DriverBinding is to be installe onto. If this
81 parameter is NULL, then a new handle is created.
82 @ComponentName A Component Name Protocol instance that this driver is producing
83 @DriverConfiguration A Driver Configuration Protocol instance that this driver is producing
84 @DriverDiagnostics A Driver Diagnostics Protocol instance that this driver is producing
86 @retval EFI_SUCCESS DriverBinding is installed onto DriverBindingHandle
87 @retval Other Status from gBS->InstallProtocolInterface()
92 EfiLibInstallAllDriverProtocols (
93 IN
const EFI_HANDLE ImageHandle
,
94 IN
const EFI_SYSTEM_TABLE
*SystemTable
,
95 IN EFI_DRIVER_BINDING_PROTOCOL
*DriverBinding
,
96 IN EFI_HANDLE DriverBindingHandle
,
97 IN
const EFI_COMPONENT_NAME_PROTOCOL
*ComponentName
, OPTIONAL
98 IN
const EFI_DRIVER_CONFIGURATION_PROTOCOL
*DriverConfiguration
, OPTIONAL
99 IN
const EFI_DRIVER_DIAGNOSTICS_PROTOCOL
*DriverDiagnostics OPTIONAL
104 ASSERT (NULL
!= DriverBinding
);
106 if (DriverDiagnostics
== NULL
|| FeaturePcdGet(PcdDriverDiagnosticsDisable
)) {
107 if (DriverConfiguration
== NULL
) {
108 if (ComponentName
== NULL
|| FeaturePcdGet(PcdComponentNameDisable
)) {
109 Status
= gBS
->InstallMultipleProtocolInterfaces (
110 &DriverBindingHandle
,
111 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
115 Status
= gBS
->InstallMultipleProtocolInterfaces (
116 &DriverBindingHandle
,
117 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
118 &gEfiComponentNameProtocolGuid
, ComponentName
,
123 if (ComponentName
== NULL
|| FeaturePcdGet(PcdComponentNameDisable
)) {
124 Status
= gBS
->InstallMultipleProtocolInterfaces (
125 &DriverBindingHandle
,
126 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
127 &gEfiDriverConfigurationProtocolGuid
, DriverConfiguration
,
131 Status
= gBS
->InstallMultipleProtocolInterfaces (
132 &DriverBindingHandle
,
133 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
134 &gEfiComponentNameProtocolGuid
, ComponentName
,
135 &gEfiDriverConfigurationProtocolGuid
, DriverConfiguration
,
141 if (DriverConfiguration
== NULL
) {
142 if (ComponentName
== NULL
|| FeaturePcdGet(PcdComponentNameDisable
)) {
143 Status
= gBS
->InstallMultipleProtocolInterfaces (
144 &DriverBindingHandle
,
145 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
146 &gEfiDriverDiagnosticsProtocolGuid
, DriverDiagnostics
,
150 Status
= gBS
->InstallMultipleProtocolInterfaces (
151 &DriverBindingHandle
,
152 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
153 &gEfiComponentNameProtocolGuid
, ComponentName
,
154 &gEfiDriverDiagnosticsProtocolGuid
, DriverDiagnostics
,
159 if (ComponentName
== NULL
|| FeaturePcdGet(PcdComponentNameDisable
)) {
160 Status
= gBS
->InstallMultipleProtocolInterfaces (
161 &DriverBindingHandle
,
162 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
163 &gEfiDriverConfigurationProtocolGuid
, DriverConfiguration
,
164 &gEfiDriverDiagnosticsProtocolGuid
, DriverDiagnostics
,
168 Status
= gBS
->InstallMultipleProtocolInterfaces (
169 &DriverBindingHandle
,
170 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
171 &gEfiComponentNameProtocolGuid
, ComponentName
,
172 &gEfiDriverConfigurationProtocolGuid
, DriverConfiguration
,
173 &gEfiDriverDiagnosticsProtocolGuid
, DriverDiagnostics
,
181 // ASSERT if the call to InstallMultipleProtocolInterfaces() failed
183 ASSERT_EFI_ERROR (Status
);
186 // Update the ImageHandle and DriverBindingHandle fields of the Driver Binding Protocol
188 DriverBinding
->ImageHandle
= ImageHandle
;
189 DriverBinding
->DriverBindingHandle
= DriverBindingHandle
;
196 Intialize a driver by installing the Driver Binding Protocol onto the
197 driver's DriverBindingHandle. This is typically the same as the driver's
198 ImageHandle, but it can be different if the driver produces multiple
199 DriverBinding Protocols. This function also initializes the EFI Driver
200 Library that initializes the global variables gST, gBS, gRT.
202 @ImageHandle The image handle of the driver
203 @SystemTable The EFI System Table that was passed to the driver's entry point
204 @DriverBinding A Driver Binding Protocol instance that this driver is producing
205 @DriverBindingHandle The handle that DriverBinding is to be installe onto. If this
206 parameter is NULL, then a new handle is created.
207 @ComponentName A Component Name Protocol instance that this driver is producing
208 @DriverConfiguration A Driver Configuration Protocol instance that this driver is producing
209 @DriverDiagnostics A Driver Diagnostics Protocol instance that this driver is producing
211 @retval EFI_SUCCESS DriverBinding is installed onto DriverBindingHandle
212 @retval Other Status from gBS->InstallProtocolInterface()
217 EfiLibInstallAllDriverProtocols2 (
218 IN
const EFI_HANDLE ImageHandle
,
219 IN
const EFI_SYSTEM_TABLE
*SystemTable
,
220 IN EFI_DRIVER_BINDING_PROTOCOL
*DriverBinding
,
221 IN EFI_HANDLE DriverBindingHandle
,
222 IN
const EFI_COMPONENT_NAME_PROTOCOL
*ComponentName
, OPTIONAL
223 IN
const EFI_COMPONENT_NAME2_PROTOCOL
*ComponentName2
, OPTIONAL
224 IN
const EFI_DRIVER_CONFIGURATION_PROTOCOL
*DriverConfiguration
, OPTIONAL
225 IN
const EFI_DRIVER_DIAGNOSTICS_PROTOCOL
*DriverDiagnostics
, OPTIONAL
226 IN
const EFI_DRIVER_DIAGNOSTICS2_PROTOCOL
*DriverDiagnostics2 OPTIONAL
231 ASSERT (NULL
!= DriverBinding
);
233 if (DriverConfiguration
== NULL
) {
234 if (DriverDiagnostics
== NULL
|| FeaturePcdGet(PcdDriverDiagnosticsDisable
)) {
235 if (DriverDiagnostics2
== NULL
|| FeaturePcdGet(PcdDriverDiagnostics2Disable
)) {
236 if (ComponentName
== NULL
|| FeaturePcdGet(PcdComponentNameDisable
)) {
237 if (ComponentName2
== NULL
|| FeaturePcdGet(PcdComponentName2Disable
)) {
238 Status
= gBS
->InstallMultipleProtocolInterfaces (
239 &DriverBindingHandle
,
240 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
244 Status
= gBS
->InstallMultipleProtocolInterfaces (
245 &DriverBindingHandle
,
246 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
247 &gEfiComponentName2ProtocolGuid
, ComponentName2
,
252 if (ComponentName2
== NULL
|| FeaturePcdGet(PcdComponentName2Disable
)) {
253 Status
= gBS
->InstallMultipleProtocolInterfaces (
254 &DriverBindingHandle
,
255 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
256 &gEfiComponentNameProtocolGuid
, ComponentName
,
260 Status
= gBS
->InstallMultipleProtocolInterfaces (
261 &DriverBindingHandle
,
262 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
263 &gEfiComponentNameProtocolGuid
, ComponentName
,
264 &gEfiComponentName2ProtocolGuid
, ComponentName2
,
270 if (ComponentName
== NULL
|| FeaturePcdGet(PcdComponentNameDisable
)) {
271 if (ComponentName2
== NULL
|| FeaturePcdGet(PcdComponentName2Disable
)) {
272 Status
= gBS
->InstallMultipleProtocolInterfaces (
273 &DriverBindingHandle
,
274 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
275 &gEfiDriverDiagnostics2ProtocolGuid
, DriverDiagnostics2
,
279 Status
= gBS
->InstallMultipleProtocolInterfaces (
280 &DriverBindingHandle
,
281 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
282 &gEfiComponentName2ProtocolGuid
, ComponentName2
,
283 &gEfiDriverDiagnostics2ProtocolGuid
, DriverDiagnostics2
,
288 if (ComponentName2
== NULL
|| FeaturePcdGet(PcdComponentName2Disable
)) {
289 Status
= gBS
->InstallMultipleProtocolInterfaces (
290 &DriverBindingHandle
,
291 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
292 &gEfiComponentNameProtocolGuid
, ComponentName
,
293 &gEfiDriverDiagnostics2ProtocolGuid
, DriverDiagnostics2
,
297 Status
= gBS
->InstallMultipleProtocolInterfaces (
298 &DriverBindingHandle
,
299 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
300 &gEfiComponentNameProtocolGuid
, ComponentName
,
301 &gEfiComponentName2ProtocolGuid
, ComponentName2
,
302 &gEfiDriverDiagnostics2ProtocolGuid
, DriverDiagnostics2
,
309 if (DriverDiagnostics2
== NULL
|| FeaturePcdGet(PcdDriverDiagnostics2Disable
)) {
310 if (ComponentName
== NULL
|| FeaturePcdGet(PcdComponentNameDisable
)) {
311 if (ComponentName2
== NULL
|| FeaturePcdGet(PcdComponentName2Disable
)) {
312 Status
= gBS
->InstallMultipleProtocolInterfaces (
313 &DriverBindingHandle
,
314 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
315 &gEfiDriverDiagnosticsProtocolGuid
, DriverDiagnostics
,
319 Status
= gBS
->InstallMultipleProtocolInterfaces (
320 &DriverBindingHandle
,
321 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
322 &gEfiComponentName2ProtocolGuid
, ComponentName2
,
323 &gEfiDriverDiagnosticsProtocolGuid
, DriverDiagnostics
,
328 if (ComponentName2
== NULL
|| FeaturePcdGet(PcdComponentName2Disable
)) {
329 Status
= gBS
->InstallMultipleProtocolInterfaces (
330 &DriverBindingHandle
,
331 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
332 &gEfiComponentNameProtocolGuid
, ComponentName
,
333 &gEfiDriverDiagnosticsProtocolGuid
, DriverDiagnostics
,
337 Status
= gBS
->InstallMultipleProtocolInterfaces (
338 &DriverBindingHandle
,
339 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
340 &gEfiComponentNameProtocolGuid
, ComponentName
,
341 &gEfiComponentName2ProtocolGuid
, ComponentName2
,
342 &gEfiDriverDiagnosticsProtocolGuid
, DriverDiagnostics
,
348 if (ComponentName
== NULL
|| FeaturePcdGet(PcdComponentNameDisable
)) {
349 if (ComponentName2
== NULL
|| FeaturePcdGet(PcdComponentName2Disable
)) {
350 Status
= gBS
->InstallMultipleProtocolInterfaces (
351 &DriverBindingHandle
,
352 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
353 &gEfiDriverDiagnosticsProtocolGuid
, DriverDiagnostics
,
354 &gEfiDriverDiagnostics2ProtocolGuid
, DriverDiagnostics2
,
358 Status
= gBS
->InstallMultipleProtocolInterfaces (
359 &DriverBindingHandle
,
360 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
361 &gEfiComponentName2ProtocolGuid
, ComponentName2
,
362 &gEfiDriverDiagnosticsProtocolGuid
, DriverDiagnostics
,
363 &gEfiDriverDiagnostics2ProtocolGuid
, DriverDiagnostics2
,
368 if (ComponentName2
== NULL
|| FeaturePcdGet(PcdComponentName2Disable
)) {
369 Status
= gBS
->InstallMultipleProtocolInterfaces (
370 &DriverBindingHandle
,
371 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
372 &gEfiComponentNameProtocolGuid
, ComponentName
,
373 &gEfiDriverDiagnosticsProtocolGuid
, DriverDiagnostics
,
374 &gEfiDriverDiagnostics2ProtocolGuid
, DriverDiagnostics2
,
378 Status
= gBS
->InstallMultipleProtocolInterfaces (
379 &DriverBindingHandle
,
380 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
381 &gEfiComponentNameProtocolGuid
, ComponentName
,
382 &gEfiComponentName2ProtocolGuid
, ComponentName2
,
383 &gEfiDriverDiagnosticsProtocolGuid
, DriverDiagnostics
,
384 &gEfiDriverDiagnostics2ProtocolGuid
, DriverDiagnostics2
,
392 if (DriverDiagnostics
== NULL
|| FeaturePcdGet(PcdDriverDiagnosticsDisable
)) {
393 if (DriverDiagnostics2
== NULL
|| FeaturePcdGet(PcdDriverDiagnostics2Disable
)) {
394 if (ComponentName
== NULL
|| FeaturePcdGet(PcdComponentNameDisable
)) {
395 if (ComponentName2
== NULL
|| FeaturePcdGet(PcdComponentName2Disable
)) {
396 Status
= gBS
->InstallMultipleProtocolInterfaces (
397 &DriverBindingHandle
,
398 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
399 &gEfiDriverConfigurationProtocolGuid
, DriverConfiguration
,
403 Status
= gBS
->InstallMultipleProtocolInterfaces (
404 &DriverBindingHandle
,
405 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
406 &gEfiComponentName2ProtocolGuid
, ComponentName2
,
407 &gEfiDriverConfigurationProtocolGuid
, DriverConfiguration
,
412 if (ComponentName2
== NULL
|| FeaturePcdGet(PcdComponentName2Disable
)) {
413 Status
= gBS
->InstallMultipleProtocolInterfaces (
414 &DriverBindingHandle
,
415 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
416 &gEfiComponentNameProtocolGuid
, ComponentName
,
417 &gEfiDriverConfigurationProtocolGuid
, DriverConfiguration
,
421 Status
= gBS
->InstallMultipleProtocolInterfaces (
422 &DriverBindingHandle
,
423 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
424 &gEfiComponentNameProtocolGuid
, ComponentName
,
425 &gEfiComponentName2ProtocolGuid
, ComponentName2
,
426 &gEfiDriverConfigurationProtocolGuid
, DriverConfiguration
,
432 if (ComponentName
== NULL
|| FeaturePcdGet(PcdComponentNameDisable
)) {
433 if (ComponentName2
== NULL
|| FeaturePcdGet(PcdComponentName2Disable
)) {
434 Status
= gBS
->InstallMultipleProtocolInterfaces (
435 &DriverBindingHandle
,
436 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
437 &gEfiDriverConfigurationProtocolGuid
, DriverConfiguration
,
438 &gEfiDriverDiagnostics2ProtocolGuid
, DriverDiagnostics2
,
442 Status
= gBS
->InstallMultipleProtocolInterfaces (
443 &DriverBindingHandle
,
444 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
445 &gEfiComponentName2ProtocolGuid
, ComponentName2
,
446 &gEfiDriverConfigurationProtocolGuid
, DriverConfiguration
,
447 &gEfiDriverDiagnostics2ProtocolGuid
, DriverDiagnostics2
,
452 if (ComponentName2
== NULL
|| FeaturePcdGet(PcdComponentName2Disable
)) {
453 Status
= gBS
->InstallMultipleProtocolInterfaces (
454 &DriverBindingHandle
,
455 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
456 &gEfiComponentNameProtocolGuid
, ComponentName
,
457 &gEfiDriverConfigurationProtocolGuid
, DriverConfiguration
,
458 &gEfiDriverDiagnostics2ProtocolGuid
, DriverDiagnostics2
,
462 Status
= gBS
->InstallMultipleProtocolInterfaces (
463 &DriverBindingHandle
,
464 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
465 &gEfiComponentNameProtocolGuid
, ComponentName
,
466 &gEfiComponentName2ProtocolGuid
, ComponentName2
,
467 &gEfiDriverConfigurationProtocolGuid
, DriverConfiguration
,
468 &gEfiDriverDiagnostics2ProtocolGuid
, DriverDiagnostics2
,
475 if (DriverDiagnostics2
== NULL
|| FeaturePcdGet(PcdDriverDiagnostics2Disable
)) {
476 if (ComponentName
== NULL
|| FeaturePcdGet(PcdComponentNameDisable
)) {
477 if (ComponentName2
== NULL
|| FeaturePcdGet(PcdComponentName2Disable
)) {
478 Status
= gBS
->InstallMultipleProtocolInterfaces (
479 &DriverBindingHandle
,
480 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
481 &gEfiDriverConfigurationProtocolGuid
, DriverConfiguration
,
482 &gEfiDriverDiagnosticsProtocolGuid
, DriverDiagnostics
,
486 Status
= gBS
->InstallMultipleProtocolInterfaces (
487 &DriverBindingHandle
,
488 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
489 &gEfiComponentName2ProtocolGuid
, ComponentName2
,
490 &gEfiDriverConfigurationProtocolGuid
, DriverConfiguration
,
491 &gEfiDriverDiagnosticsProtocolGuid
, DriverDiagnostics
,
496 if (ComponentName2
== NULL
|| FeaturePcdGet(PcdComponentName2Disable
)) {
497 Status
= gBS
->InstallMultipleProtocolInterfaces (
498 &DriverBindingHandle
,
499 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
500 &gEfiComponentNameProtocolGuid
, ComponentName
,
501 &gEfiDriverConfigurationProtocolGuid
, DriverConfiguration
,
502 &gEfiDriverDiagnosticsProtocolGuid
, DriverDiagnostics
,
506 Status
= gBS
->InstallMultipleProtocolInterfaces (
507 &DriverBindingHandle
,
508 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
509 &gEfiComponentNameProtocolGuid
, ComponentName
,
510 &gEfiComponentName2ProtocolGuid
, ComponentName2
,
511 &gEfiDriverConfigurationProtocolGuid
, DriverConfiguration
,
512 &gEfiDriverDiagnosticsProtocolGuid
, DriverDiagnostics
,
518 if (ComponentName
== NULL
|| FeaturePcdGet(PcdComponentNameDisable
)) {
519 if (ComponentName2
== NULL
|| FeaturePcdGet(PcdComponentName2Disable
)) {
520 Status
= gBS
->InstallMultipleProtocolInterfaces (
521 &DriverBindingHandle
,
522 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
523 &gEfiDriverConfigurationProtocolGuid
, DriverConfiguration
,
524 &gEfiDriverDiagnosticsProtocolGuid
, DriverDiagnostics
,
525 &gEfiDriverDiagnostics2ProtocolGuid
, DriverDiagnostics2
,
529 Status
= gBS
->InstallMultipleProtocolInterfaces (
530 &DriverBindingHandle
,
531 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
532 &gEfiComponentName2ProtocolGuid
, ComponentName2
,
533 &gEfiDriverConfigurationProtocolGuid
, DriverConfiguration
,
534 &gEfiDriverDiagnosticsProtocolGuid
, DriverDiagnostics
,
535 &gEfiDriverDiagnostics2ProtocolGuid
, DriverDiagnostics2
,
540 if (ComponentName2
== NULL
|| FeaturePcdGet(PcdComponentName2Disable
)) {
541 Status
= gBS
->InstallMultipleProtocolInterfaces (
542 &DriverBindingHandle
,
543 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
544 &gEfiComponentNameProtocolGuid
, ComponentName
,
545 &gEfiDriverConfigurationProtocolGuid
, DriverConfiguration
,
546 &gEfiDriverDiagnosticsProtocolGuid
, DriverDiagnostics
,
547 &gEfiDriverDiagnostics2ProtocolGuid
, DriverDiagnostics2
,
551 Status
= gBS
->InstallMultipleProtocolInterfaces (
552 &DriverBindingHandle
,
553 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
554 &gEfiComponentNameProtocolGuid
, ComponentName
,
555 &gEfiComponentName2ProtocolGuid
, ComponentName2
,
556 &gEfiDriverConfigurationProtocolGuid
, DriverConfiguration
,
557 &gEfiDriverDiagnosticsProtocolGuid
, DriverDiagnostics
,
558 &gEfiDriverDiagnostics2ProtocolGuid
, DriverDiagnostics2
,
568 // ASSERT if the call to InstallMultipleProtocolInterfaces() failed
570 ASSERT_EFI_ERROR (Status
);
573 // Update the ImageHandle and DriverBindingHandle fields of the Driver Binding Protocol
575 DriverBinding
->ImageHandle
= ImageHandle
;
576 DriverBinding
->DriverBindingHandle
= DriverBindingHandle
;