2 Library functions that abstract driver model protocols
5 Copyright (c) 2006 - 2008, 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 "UefiLibInternal.h"
20 Initializes a driver by installing the Driver Binding Protocol onto the driver's
23 This is typically the same as the driver's ImageHandle, but
24 it can be different if the driver produces multiple DriverBinding Protocols.
25 If the Driver Binding Protocol interface is NULL, then ASSERT ().
26 If the installation fails, then ASSERT ().
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 installed onto. If this
32 parameter is NULL, then a new handle is created.
34 @retval EFI_SUCCESS The protocol installation is completed successfully.
35 @retval EFI_OUT_OF_RESOURCES There was not enough system resources to install the protocol.
36 @retval Others Status from gBS->InstallMultipleProtocolInterfaces().
41 EfiLibInstallDriverBinding (
42 IN CONST EFI_HANDLE ImageHandle
,
43 IN CONST EFI_SYSTEM_TABLE
*SystemTable
,
44 IN EFI_DRIVER_BINDING_PROTOCOL
*DriverBinding
,
45 IN EFI_HANDLE DriverBindingHandle
50 ASSERT (DriverBinding
!= NULL
);
52 Status
= gBS
->InstallMultipleProtocolInterfaces (
54 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
58 // ASSERT if the call to InstallMultipleProtocolInterfaces() failed
60 ASSERT_EFI_ERROR (Status
);
63 // Update the ImageHandle and DriverBindingHandle fields of the Driver Binding Protocol
65 DriverBinding
->ImageHandle
= ImageHandle
;
66 DriverBinding
->DriverBindingHandle
= DriverBindingHandle
;
73 Initializes a driver by installing the Driver Binding Protocol together with the optional Component Name,
74 Driver Configure and Driver Diagnostic Protocols onto the driver's DriverBindingHandle.
76 This is typically the same as the driver's ImageHandle, but it can be different if the driver produces multiple
77 DriverBinding Protocols.
78 If the Driver Binding Protocol interface is NULL, then ASSERT ().
79 If the installation fails, then ASSERT ().
81 @param ImageHandle The image handle of the driver.
82 @param SystemTable The EFI System Table that was passed to the driver's entry point.
83 @param DriverBinding A Driver Binding Protocol instance that this driver is producing.
84 @param DriverBindingHandle The handle that DriverBinding is to be installed onto. If this
85 parameter is NULL, then a new handle is created.
86 @param ComponentName A Component Name Protocol instance that this driver is producing.
87 @param DriverConfiguration A Driver Configuration Protocol instance that this driver is producing.
88 @param DriverDiagnostics A Driver Diagnostics Protocol instance that this driver is producing.
90 @retval EFI_SUCCESS The protocol installation is completed successfully.
91 @retval Others Status from gBS->InstallMultipleProtocolInterfaces().
96 EfiLibInstallAllDriverProtocols (
97 IN CONST EFI_HANDLE ImageHandle
,
98 IN CONST EFI_SYSTEM_TABLE
*SystemTable
,
99 IN EFI_DRIVER_BINDING_PROTOCOL
*DriverBinding
,
100 IN EFI_HANDLE DriverBindingHandle
,
101 IN CONST EFI_COMPONENT_NAME_PROTOCOL
*ComponentName
, OPTIONAL
102 IN CONST EFI_DRIVER_CONFIGURATION_PROTOCOL
*DriverConfiguration
, OPTIONAL
103 IN CONST EFI_DRIVER_DIAGNOSTICS_PROTOCOL
*DriverDiagnostics OPTIONAL
108 ASSERT (DriverBinding
!= NULL
);
110 if (DriverDiagnostics
== NULL
|| FeaturePcdGet(PcdDriverDiagnosticsDisable
)) {
111 if (DriverConfiguration
== NULL
) {
112 if (ComponentName
== NULL
|| FeaturePcdGet(PcdComponentNameDisable
)) {
113 Status
= gBS
->InstallMultipleProtocolInterfaces (
114 &DriverBindingHandle
,
115 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
119 Status
= gBS
->InstallMultipleProtocolInterfaces (
120 &DriverBindingHandle
,
121 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
122 &gEfiComponentNameProtocolGuid
, ComponentName
,
127 if (ComponentName
== NULL
|| FeaturePcdGet(PcdComponentNameDisable
)) {
128 Status
= gBS
->InstallMultipleProtocolInterfaces (
129 &DriverBindingHandle
,
130 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
131 &gEfiDriverConfigurationProtocolGuid
, DriverConfiguration
,
135 Status
= gBS
->InstallMultipleProtocolInterfaces (
136 &DriverBindingHandle
,
137 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
138 &gEfiComponentNameProtocolGuid
, ComponentName
,
139 &gEfiDriverConfigurationProtocolGuid
, DriverConfiguration
,
145 if (DriverConfiguration
== NULL
) {
146 if (ComponentName
== NULL
|| FeaturePcdGet(PcdComponentNameDisable
)) {
147 Status
= gBS
->InstallMultipleProtocolInterfaces (
148 &DriverBindingHandle
,
149 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
150 &gEfiDriverDiagnosticsProtocolGuid
, DriverDiagnostics
,
154 Status
= gBS
->InstallMultipleProtocolInterfaces (
155 &DriverBindingHandle
,
156 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
157 &gEfiComponentNameProtocolGuid
, ComponentName
,
158 &gEfiDriverDiagnosticsProtocolGuid
, DriverDiagnostics
,
163 if (ComponentName
== NULL
|| FeaturePcdGet(PcdComponentNameDisable
)) {
164 Status
= gBS
->InstallMultipleProtocolInterfaces (
165 &DriverBindingHandle
,
166 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
167 &gEfiDriverConfigurationProtocolGuid
, DriverConfiguration
,
168 &gEfiDriverDiagnosticsProtocolGuid
, DriverDiagnostics
,
172 Status
= gBS
->InstallMultipleProtocolInterfaces (
173 &DriverBindingHandle
,
174 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
175 &gEfiComponentNameProtocolGuid
, ComponentName
,
176 &gEfiDriverConfigurationProtocolGuid
, DriverConfiguration
,
177 &gEfiDriverDiagnosticsProtocolGuid
, DriverDiagnostics
,
185 // ASSERT if the call to InstallMultipleProtocolInterfaces() failed
187 ASSERT_EFI_ERROR (Status
);
190 // Update the ImageHandle and DriverBindingHandle fields of the Driver Binding Protocol
192 DriverBinding
->ImageHandle
= ImageHandle
;
193 DriverBinding
->DriverBindingHandle
= DriverBindingHandle
;
201 Intialize a driver by installing the Driver Binding Protocol together with the optional Component Name,
202 Component Name 2 onto the driver's DriverBindingHandle. This is typically the same as the driver's
203 ImageHandle, but it can be different if the driver produces multiple DriverBinding Protocols.
204 If the Drvier Binding Protocol interface is NULL, then ASSERT ().
205 If the installation fails, then ASSERT ().
207 @param ImageHandle The image handle of the driver.
208 @param SystemTable The EFI System Table that was passed to the driver's entry point.
209 @param DriverBinding A Driver Binding Protocol instance that this driver is producing.
210 @param DriverBindingHandle The handle that DriverBinding is to be installe onto. If this
211 parameter is NULL, then a new handle is created.
212 @param ComponentName A Component Name Protocol instance that this driver is producing.
213 @param ComponentName2 A Component Name 2 Protocol instance that this driver is producing.
215 @retval EFI_SUCCESS The protocol installation is completed successfully.
216 @retval Others Status from gBS->InstallMultipleProtocolInterfaces().
221 EfiLibInstallDriverBindingComponentName2 (
222 IN CONST EFI_HANDLE ImageHandle
,
223 IN CONST EFI_SYSTEM_TABLE
*SystemTable
,
224 IN EFI_DRIVER_BINDING_PROTOCOL
*DriverBinding
,
225 IN EFI_HANDLE DriverBindingHandle
,
226 IN CONST EFI_COMPONENT_NAME_PROTOCOL
*ComponentName
, OPTIONAL
227 IN CONST EFI_COMPONENT_NAME2_PROTOCOL
*ComponentName2 OPTIONAL
232 ASSERT (DriverBinding
!= NULL
);
234 if (ComponentName
== NULL
|| FeaturePcdGet(PcdComponentNameDisable
)) {
235 if (ComponentName2
== NULL
|| FeaturePcdGet(PcdComponentName2Disable
)) {
236 Status
= gBS
->InstallMultipleProtocolInterfaces (
237 &DriverBindingHandle
,
238 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
242 Status
= gBS
->InstallMultipleProtocolInterfaces (
243 &DriverBindingHandle
,
244 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
245 &gEfiComponentName2ProtocolGuid
, ComponentName2
,
250 if (ComponentName2
== NULL
|| FeaturePcdGet(PcdComponentName2Disable
)) {
251 Status
= gBS
->InstallMultipleProtocolInterfaces (
252 &DriverBindingHandle
,
253 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
254 &gEfiComponentNameProtocolGuid
, ComponentName
,
258 Status
= gBS
->InstallMultipleProtocolInterfaces (
259 &DriverBindingHandle
,
260 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
261 &gEfiComponentNameProtocolGuid
, ComponentName
,
262 &gEfiComponentName2ProtocolGuid
, ComponentName2
,
268 // ASSERT if the call to InstallMultipleProtocolInterfaces() failed
270 ASSERT_EFI_ERROR (Status
);
273 // Update the ImageHandle and DriverBindingHandle fields of the Driver Binding Protocol
275 DriverBinding
->ImageHandle
= ImageHandle
;
276 DriverBinding
->DriverBindingHandle
= DriverBindingHandle
;
284 Intialize a driver by installing the Driver Binding Protocol together with the optional Component Name,
285 Component Name 2, Driver Configure, Driver Diagnostic and Driver Diagnostic 2 Protocols onto the driver's
288 This is typically the same as the driver's ImageHandle, but it can be different if
289 the driver produces multiple DriverBinding Protocols.
290 If the Drvier Binding Protocol interface is NULL, then ASSERT ().
291 If the installation fails, then ASSERT ().
293 @param ImageHandle The image handle of the driver.
294 @param SystemTable The EFI System Table that was passed to the driver's entry point.
295 @param DriverBinding A Driver Binding Protocol instance that this driver is producing.
296 @param DriverBindingHandle The handle that DriverBinding is to be installe onto. If this
297 parameter is NULL, then a new handle is created.
298 @param ComponentName A Component Name Protocol instance that this driver is producing.
299 @param ComponentName2 A Component Name 2 Protocol instance that this driver is producing.
300 @param DriverConfiguration A Driver Configuration Protocol instance that this driver is producing.
301 @param DriverConfiguration2 A Driver Configuration Protocol 2 instance that this driver is producing.
302 @param DriverDiagnostics A Driver Diagnostics Protocol instance that this driver is producing.
303 @param DriverDiagnostics2 A Driver Diagnostics Protocol 2 instance that this driver is producing.
305 @retval EFI_SUCCESS The protocol installation is completed successfully.
306 @retval Others Status from gBS->InstallMultipleProtocolInterfaces().
311 EfiLibInstallAllDriverProtocols2 (
312 IN CONST EFI_HANDLE ImageHandle
,
313 IN CONST EFI_SYSTEM_TABLE
*SystemTable
,
314 IN EFI_DRIVER_BINDING_PROTOCOL
*DriverBinding
,
315 IN EFI_HANDLE DriverBindingHandle
,
316 IN CONST EFI_COMPONENT_NAME_PROTOCOL
*ComponentName
, OPTIONAL
317 IN CONST EFI_COMPONENT_NAME2_PROTOCOL
*ComponentName2
, OPTIONAL
318 IN CONST EFI_DRIVER_CONFIGURATION_PROTOCOL
*DriverConfiguration
, OPTIONAL
319 IN CONST EFI_DRIVER_CONFIGURATION_PROTOCOL
*DriverConfiguration2
, OPTIONAL
320 IN CONST EFI_DRIVER_DIAGNOSTICS_PROTOCOL
*DriverDiagnostics
, OPTIONAL
321 IN CONST EFI_DRIVER_DIAGNOSTICS2_PROTOCOL
*DriverDiagnostics2 OPTIONAL
326 ASSERT (DriverBinding
!= NULL
);
328 if (DriverConfiguration2
== NULL
) {
329 if (DriverConfiguration
== NULL
) {
330 if (DriverDiagnostics
== NULL
|| FeaturePcdGet(PcdDriverDiagnosticsDisable
)) {
331 if (DriverDiagnostics2
== NULL
|| FeaturePcdGet(PcdDriverDiagnostics2Disable
)) {
332 if (ComponentName
== NULL
|| FeaturePcdGet(PcdComponentNameDisable
)) {
333 if (ComponentName2
== NULL
|| FeaturePcdGet(PcdComponentName2Disable
)) {
334 Status
= gBS
->InstallMultipleProtocolInterfaces (
335 &DriverBindingHandle
,
336 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
340 Status
= gBS
->InstallMultipleProtocolInterfaces (
341 &DriverBindingHandle
,
342 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
343 &gEfiComponentName2ProtocolGuid
, ComponentName2
,
348 if (ComponentName2
== NULL
|| FeaturePcdGet(PcdComponentName2Disable
)) {
349 Status
= gBS
->InstallMultipleProtocolInterfaces (
350 &DriverBindingHandle
,
351 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
352 &gEfiComponentNameProtocolGuid
, ComponentName
,
356 Status
= gBS
->InstallMultipleProtocolInterfaces (
357 &DriverBindingHandle
,
358 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
359 &gEfiComponentNameProtocolGuid
, ComponentName
,
360 &gEfiComponentName2ProtocolGuid
, ComponentName2
,
366 if (ComponentName
== NULL
|| FeaturePcdGet(PcdComponentNameDisable
)) {
367 if (ComponentName2
== NULL
|| FeaturePcdGet(PcdComponentName2Disable
)) {
368 Status
= gBS
->InstallMultipleProtocolInterfaces (
369 &DriverBindingHandle
,
370 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
371 &gEfiDriverDiagnostics2ProtocolGuid
, DriverDiagnostics2
,
375 Status
= gBS
->InstallMultipleProtocolInterfaces (
376 &DriverBindingHandle
,
377 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
378 &gEfiComponentName2ProtocolGuid
, ComponentName2
,
379 &gEfiDriverDiagnostics2ProtocolGuid
, DriverDiagnostics2
,
384 if (ComponentName2
== NULL
|| FeaturePcdGet(PcdComponentName2Disable
)) {
385 Status
= gBS
->InstallMultipleProtocolInterfaces (
386 &DriverBindingHandle
,
387 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
388 &gEfiComponentNameProtocolGuid
, ComponentName
,
389 &gEfiDriverDiagnostics2ProtocolGuid
, DriverDiagnostics2
,
393 Status
= gBS
->InstallMultipleProtocolInterfaces (
394 &DriverBindingHandle
,
395 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
396 &gEfiComponentNameProtocolGuid
, ComponentName
,
397 &gEfiComponentName2ProtocolGuid
, ComponentName2
,
398 &gEfiDriverDiagnostics2ProtocolGuid
, DriverDiagnostics2
,
405 if (DriverDiagnostics2
== NULL
|| FeaturePcdGet(PcdDriverDiagnostics2Disable
)) {
406 if (ComponentName
== NULL
|| FeaturePcdGet(PcdComponentNameDisable
)) {
407 if (ComponentName2
== NULL
|| FeaturePcdGet(PcdComponentName2Disable
)) {
408 Status
= gBS
->InstallMultipleProtocolInterfaces (
409 &DriverBindingHandle
,
410 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
411 &gEfiDriverDiagnosticsProtocolGuid
, DriverDiagnostics
,
415 Status
= gBS
->InstallMultipleProtocolInterfaces (
416 &DriverBindingHandle
,
417 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
418 &gEfiComponentName2ProtocolGuid
, ComponentName2
,
419 &gEfiDriverDiagnosticsProtocolGuid
, DriverDiagnostics
,
424 if (ComponentName2
== NULL
|| FeaturePcdGet(PcdComponentName2Disable
)) {
425 Status
= gBS
->InstallMultipleProtocolInterfaces (
426 &DriverBindingHandle
,
427 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
428 &gEfiComponentNameProtocolGuid
, ComponentName
,
429 &gEfiDriverDiagnosticsProtocolGuid
, DriverDiagnostics
,
433 Status
= gBS
->InstallMultipleProtocolInterfaces (
434 &DriverBindingHandle
,
435 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
436 &gEfiComponentNameProtocolGuid
, ComponentName
,
437 &gEfiComponentName2ProtocolGuid
, ComponentName2
,
438 &gEfiDriverDiagnosticsProtocolGuid
, DriverDiagnostics
,
444 if (ComponentName
== NULL
|| FeaturePcdGet(PcdComponentNameDisable
)) {
445 if (ComponentName2
== NULL
|| FeaturePcdGet(PcdComponentName2Disable
)) {
446 Status
= gBS
->InstallMultipleProtocolInterfaces (
447 &DriverBindingHandle
,
448 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
449 &gEfiDriverDiagnosticsProtocolGuid
, DriverDiagnostics
,
450 &gEfiDriverDiagnostics2ProtocolGuid
, DriverDiagnostics2
,
454 Status
= gBS
->InstallMultipleProtocolInterfaces (
455 &DriverBindingHandle
,
456 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
457 &gEfiComponentName2ProtocolGuid
, ComponentName2
,
458 &gEfiDriverDiagnosticsProtocolGuid
, DriverDiagnostics
,
459 &gEfiDriverDiagnostics2ProtocolGuid
, DriverDiagnostics2
,
464 if (ComponentName2
== NULL
|| FeaturePcdGet(PcdComponentName2Disable
)) {
465 Status
= gBS
->InstallMultipleProtocolInterfaces (
466 &DriverBindingHandle
,
467 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
468 &gEfiComponentNameProtocolGuid
, ComponentName
,
469 &gEfiDriverDiagnosticsProtocolGuid
, DriverDiagnostics
,
470 &gEfiDriverDiagnostics2ProtocolGuid
, DriverDiagnostics2
,
474 Status
= gBS
->InstallMultipleProtocolInterfaces (
475 &DriverBindingHandle
,
476 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
477 &gEfiComponentNameProtocolGuid
, ComponentName
,
478 &gEfiComponentName2ProtocolGuid
, ComponentName2
,
479 &gEfiDriverDiagnosticsProtocolGuid
, DriverDiagnostics
,
480 &gEfiDriverDiagnostics2ProtocolGuid
, DriverDiagnostics2
,
488 if (DriverDiagnostics
== NULL
|| FeaturePcdGet(PcdDriverDiagnosticsDisable
)) {
489 if (DriverDiagnostics2
== NULL
|| FeaturePcdGet(PcdDriverDiagnostics2Disable
)) {
490 if (ComponentName
== NULL
|| FeaturePcdGet(PcdComponentNameDisable
)) {
491 if (ComponentName2
== NULL
|| FeaturePcdGet(PcdComponentName2Disable
)) {
492 Status
= gBS
->InstallMultipleProtocolInterfaces (
493 &DriverBindingHandle
,
494 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
495 &gEfiDriverConfigurationProtocolGuid
, DriverConfiguration
,
499 Status
= gBS
->InstallMultipleProtocolInterfaces (
500 &DriverBindingHandle
,
501 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
502 &gEfiComponentName2ProtocolGuid
, ComponentName2
,
503 &gEfiDriverConfigurationProtocolGuid
, DriverConfiguration
,
508 if (ComponentName2
== NULL
|| FeaturePcdGet(PcdComponentName2Disable
)) {
509 Status
= gBS
->InstallMultipleProtocolInterfaces (
510 &DriverBindingHandle
,
511 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
512 &gEfiComponentNameProtocolGuid
, ComponentName
,
513 &gEfiDriverConfigurationProtocolGuid
, DriverConfiguration
,
517 Status
= gBS
->InstallMultipleProtocolInterfaces (
518 &DriverBindingHandle
,
519 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
520 &gEfiComponentNameProtocolGuid
, ComponentName
,
521 &gEfiComponentName2ProtocolGuid
, ComponentName2
,
522 &gEfiDriverConfigurationProtocolGuid
, DriverConfiguration
,
528 if (ComponentName
== NULL
|| FeaturePcdGet(PcdComponentNameDisable
)) {
529 if (ComponentName2
== NULL
|| FeaturePcdGet(PcdComponentName2Disable
)) {
530 Status
= gBS
->InstallMultipleProtocolInterfaces (
531 &DriverBindingHandle
,
532 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
533 &gEfiDriverConfigurationProtocolGuid
, DriverConfiguration
,
534 &gEfiDriverDiagnostics2ProtocolGuid
, DriverDiagnostics2
,
538 Status
= gBS
->InstallMultipleProtocolInterfaces (
539 &DriverBindingHandle
,
540 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
541 &gEfiComponentName2ProtocolGuid
, ComponentName2
,
542 &gEfiDriverConfigurationProtocolGuid
, DriverConfiguration
,
543 &gEfiDriverDiagnostics2ProtocolGuid
, DriverDiagnostics2
,
548 if (ComponentName2
== NULL
|| FeaturePcdGet(PcdComponentName2Disable
)) {
549 Status
= gBS
->InstallMultipleProtocolInterfaces (
550 &DriverBindingHandle
,
551 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
552 &gEfiComponentNameProtocolGuid
, ComponentName
,
553 &gEfiDriverConfigurationProtocolGuid
, DriverConfiguration
,
554 &gEfiDriverDiagnostics2ProtocolGuid
, DriverDiagnostics2
,
558 Status
= gBS
->InstallMultipleProtocolInterfaces (
559 &DriverBindingHandle
,
560 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
561 &gEfiComponentNameProtocolGuid
, ComponentName
,
562 &gEfiComponentName2ProtocolGuid
, ComponentName2
,
563 &gEfiDriverConfigurationProtocolGuid
, DriverConfiguration
,
564 &gEfiDriverDiagnostics2ProtocolGuid
, DriverDiagnostics2
,
571 if (DriverDiagnostics2
== NULL
|| FeaturePcdGet(PcdDriverDiagnostics2Disable
)) {
572 if (ComponentName
== NULL
|| FeaturePcdGet(PcdComponentNameDisable
)) {
573 if (ComponentName2
== NULL
|| FeaturePcdGet(PcdComponentName2Disable
)) {
574 Status
= gBS
->InstallMultipleProtocolInterfaces (
575 &DriverBindingHandle
,
576 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
577 &gEfiDriverConfigurationProtocolGuid
, DriverConfiguration
,
578 &gEfiDriverDiagnosticsProtocolGuid
, DriverDiagnostics
,
582 Status
= gBS
->InstallMultipleProtocolInterfaces (
583 &DriverBindingHandle
,
584 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
585 &gEfiComponentName2ProtocolGuid
, ComponentName2
,
586 &gEfiDriverConfigurationProtocolGuid
, DriverConfiguration
,
587 &gEfiDriverDiagnosticsProtocolGuid
, DriverDiagnostics
,
592 if (ComponentName2
== NULL
|| FeaturePcdGet(PcdComponentName2Disable
)) {
593 Status
= gBS
->InstallMultipleProtocolInterfaces (
594 &DriverBindingHandle
,
595 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
596 &gEfiComponentNameProtocolGuid
, ComponentName
,
597 &gEfiDriverConfigurationProtocolGuid
, DriverConfiguration
,
598 &gEfiDriverDiagnosticsProtocolGuid
, DriverDiagnostics
,
602 Status
= gBS
->InstallMultipleProtocolInterfaces (
603 &DriverBindingHandle
,
604 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
605 &gEfiComponentNameProtocolGuid
, ComponentName
,
606 &gEfiComponentName2ProtocolGuid
, ComponentName2
,
607 &gEfiDriverConfigurationProtocolGuid
, DriverConfiguration
,
608 &gEfiDriverDiagnosticsProtocolGuid
, DriverDiagnostics
,
614 if (ComponentName
== NULL
|| FeaturePcdGet(PcdComponentNameDisable
)) {
615 if (ComponentName2
== NULL
|| FeaturePcdGet(PcdComponentName2Disable
)) {
616 Status
= gBS
->InstallMultipleProtocolInterfaces (
617 &DriverBindingHandle
,
618 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
619 &gEfiDriverConfigurationProtocolGuid
, DriverConfiguration
,
620 &gEfiDriverDiagnosticsProtocolGuid
, DriverDiagnostics
,
621 &gEfiDriverDiagnostics2ProtocolGuid
, DriverDiagnostics2
,
625 Status
= gBS
->InstallMultipleProtocolInterfaces (
626 &DriverBindingHandle
,
627 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
628 &gEfiComponentName2ProtocolGuid
, ComponentName2
,
629 &gEfiDriverConfigurationProtocolGuid
, DriverConfiguration
,
630 &gEfiDriverDiagnosticsProtocolGuid
, DriverDiagnostics
,
631 &gEfiDriverDiagnostics2ProtocolGuid
, DriverDiagnostics2
,
636 if (ComponentName2
== NULL
|| FeaturePcdGet(PcdComponentName2Disable
)) {
637 Status
= gBS
->InstallMultipleProtocolInterfaces (
638 &DriverBindingHandle
,
639 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
640 &gEfiComponentNameProtocolGuid
, ComponentName
,
641 &gEfiDriverConfigurationProtocolGuid
, DriverConfiguration
,
642 &gEfiDriverDiagnosticsProtocolGuid
, DriverDiagnostics
,
643 &gEfiDriverDiagnostics2ProtocolGuid
, DriverDiagnostics2
,
647 Status
= gBS
->InstallMultipleProtocolInterfaces (
648 &DriverBindingHandle
,
649 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
650 &gEfiComponentNameProtocolGuid
, ComponentName
,
651 &gEfiComponentName2ProtocolGuid
, ComponentName2
,
652 &gEfiDriverConfigurationProtocolGuid
, DriverConfiguration
,
653 &gEfiDriverDiagnosticsProtocolGuid
, DriverDiagnostics
,
654 &gEfiDriverDiagnostics2ProtocolGuid
, DriverDiagnostics2
,
663 if (DriverConfiguration
== NULL
) {
664 if (DriverDiagnostics
== NULL
|| FeaturePcdGet(PcdDriverDiagnosticsDisable
)) {
665 if (DriverDiagnostics2
== NULL
|| FeaturePcdGet(PcdDriverDiagnostics2Disable
)) {
666 if (ComponentName
== NULL
|| FeaturePcdGet(PcdComponentNameDisable
)) {
667 if (ComponentName2
== NULL
|| FeaturePcdGet(PcdComponentName2Disable
)) {
668 Status
= gBS
->InstallMultipleProtocolInterfaces (
669 &DriverBindingHandle
,
670 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
671 &gEfiDriverConfiguration2ProtocolGuid
, DriverConfiguration2
,
675 Status
= gBS
->InstallMultipleProtocolInterfaces (
676 &DriverBindingHandle
,
677 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
678 &gEfiComponentName2ProtocolGuid
, ComponentName2
,
679 &gEfiDriverConfiguration2ProtocolGuid
, DriverConfiguration2
,
684 if (ComponentName2
== NULL
|| FeaturePcdGet(PcdComponentName2Disable
)) {
685 Status
= gBS
->InstallMultipleProtocolInterfaces (
686 &DriverBindingHandle
,
687 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
688 &gEfiComponentNameProtocolGuid
, ComponentName
,
689 &gEfiDriverConfiguration2ProtocolGuid
, DriverConfiguration2
,
693 Status
= gBS
->InstallMultipleProtocolInterfaces (
694 &DriverBindingHandle
,
695 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
696 &gEfiComponentNameProtocolGuid
, ComponentName
,
697 &gEfiComponentName2ProtocolGuid
, ComponentName2
,
698 &gEfiDriverConfiguration2ProtocolGuid
, DriverConfiguration2
,
704 if (ComponentName
== NULL
|| FeaturePcdGet(PcdComponentNameDisable
)) {
705 if (ComponentName2
== NULL
|| FeaturePcdGet(PcdComponentName2Disable
)) {
706 Status
= gBS
->InstallMultipleProtocolInterfaces (
707 &DriverBindingHandle
,
708 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
709 &gEfiDriverDiagnostics2ProtocolGuid
, DriverDiagnostics2
,
710 &gEfiDriverConfiguration2ProtocolGuid
, DriverConfiguration2
,
714 Status
= gBS
->InstallMultipleProtocolInterfaces (
715 &DriverBindingHandle
,
716 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
717 &gEfiComponentName2ProtocolGuid
, ComponentName2
,
718 &gEfiDriverConfiguration2ProtocolGuid
, DriverConfiguration2
,
719 &gEfiDriverDiagnostics2ProtocolGuid
, DriverDiagnostics2
,
724 if (ComponentName2
== NULL
|| FeaturePcdGet(PcdComponentName2Disable
)) {
725 Status
= gBS
->InstallMultipleProtocolInterfaces (
726 &DriverBindingHandle
,
727 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
728 &gEfiComponentNameProtocolGuid
, ComponentName
,
729 &gEfiDriverConfiguration2ProtocolGuid
, DriverConfiguration2
,
730 &gEfiDriverDiagnostics2ProtocolGuid
, DriverDiagnostics2
,
734 Status
= gBS
->InstallMultipleProtocolInterfaces (
735 &DriverBindingHandle
,
736 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
737 &gEfiComponentNameProtocolGuid
, ComponentName
,
738 &gEfiComponentName2ProtocolGuid
, ComponentName2
,
739 &gEfiDriverConfiguration2ProtocolGuid
, DriverConfiguration2
,
740 &gEfiDriverDiagnostics2ProtocolGuid
, DriverDiagnostics2
,
747 if (DriverDiagnostics2
== NULL
|| FeaturePcdGet(PcdDriverDiagnostics2Disable
)) {
748 if (ComponentName
== NULL
|| FeaturePcdGet(PcdComponentNameDisable
)) {
749 if (ComponentName2
== NULL
|| FeaturePcdGet(PcdComponentName2Disable
)) {
750 Status
= gBS
->InstallMultipleProtocolInterfaces (
751 &DriverBindingHandle
,
752 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
753 &gEfiDriverDiagnosticsProtocolGuid
, DriverDiagnostics
,
754 &gEfiDriverConfiguration2ProtocolGuid
, DriverConfiguration2
,
758 Status
= gBS
->InstallMultipleProtocolInterfaces (
759 &DriverBindingHandle
,
760 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
761 &gEfiComponentName2ProtocolGuid
, ComponentName2
,
762 &gEfiDriverConfiguration2ProtocolGuid
, DriverConfiguration2
,
763 &gEfiDriverDiagnosticsProtocolGuid
, DriverDiagnostics
,
768 if (ComponentName2
== NULL
|| FeaturePcdGet(PcdComponentName2Disable
)) {
769 Status
= gBS
->InstallMultipleProtocolInterfaces (
770 &DriverBindingHandle
,
771 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
772 &gEfiComponentNameProtocolGuid
, ComponentName
,
773 &gEfiDriverDiagnosticsProtocolGuid
, DriverDiagnostics
,
774 &gEfiDriverConfiguration2ProtocolGuid
, DriverConfiguration2
,
778 Status
= gBS
->InstallMultipleProtocolInterfaces (
779 &DriverBindingHandle
,
780 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
781 &gEfiComponentNameProtocolGuid
, ComponentName
,
782 &gEfiComponentName2ProtocolGuid
, ComponentName2
,
783 &gEfiDriverConfiguration2ProtocolGuid
, DriverConfiguration2
,
784 &gEfiDriverDiagnosticsProtocolGuid
, DriverDiagnostics
,
790 if (ComponentName
== NULL
|| FeaturePcdGet(PcdComponentNameDisable
)) {
791 if (ComponentName2
== NULL
|| FeaturePcdGet(PcdComponentName2Disable
)) {
792 Status
= gBS
->InstallMultipleProtocolInterfaces (
793 &DriverBindingHandle
,
794 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
795 &gEfiDriverConfiguration2ProtocolGuid
, DriverConfiguration2
,
796 &gEfiDriverDiagnosticsProtocolGuid
, DriverDiagnostics
,
797 &gEfiDriverDiagnostics2ProtocolGuid
, DriverDiagnostics2
,
801 Status
= gBS
->InstallMultipleProtocolInterfaces (
802 &DriverBindingHandle
,
803 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
804 &gEfiComponentName2ProtocolGuid
, ComponentName2
,
805 &gEfiDriverConfiguration2ProtocolGuid
, DriverConfiguration2
,
806 &gEfiDriverDiagnosticsProtocolGuid
, DriverDiagnostics
,
807 &gEfiDriverDiagnostics2ProtocolGuid
, DriverDiagnostics2
,
812 if (ComponentName2
== NULL
|| FeaturePcdGet(PcdComponentName2Disable
)) {
813 Status
= gBS
->InstallMultipleProtocolInterfaces (
814 &DriverBindingHandle
,
815 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
816 &gEfiComponentNameProtocolGuid
, ComponentName
,
817 &gEfiDriverConfiguration2ProtocolGuid
, DriverConfiguration2
,
818 &gEfiDriverDiagnosticsProtocolGuid
, DriverDiagnostics
,
819 &gEfiDriverDiagnostics2ProtocolGuid
, DriverDiagnostics2
,
823 Status
= gBS
->InstallMultipleProtocolInterfaces (
824 &DriverBindingHandle
,
825 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
826 &gEfiComponentNameProtocolGuid
, ComponentName
,
827 &gEfiComponentName2ProtocolGuid
, ComponentName2
,
828 &gEfiDriverConfiguration2ProtocolGuid
, DriverConfiguration2
,
829 &gEfiDriverDiagnosticsProtocolGuid
, DriverDiagnostics
,
830 &gEfiDriverDiagnostics2ProtocolGuid
, DriverDiagnostics2
,
838 if (DriverDiagnostics
== NULL
|| FeaturePcdGet(PcdDriverDiagnosticsDisable
)) {
839 if (DriverDiagnostics2
== NULL
|| FeaturePcdGet(PcdDriverDiagnostics2Disable
)) {
840 if (ComponentName
== NULL
|| FeaturePcdGet(PcdComponentNameDisable
)) {
841 if (ComponentName2
== NULL
|| FeaturePcdGet(PcdComponentName2Disable
)) {
842 Status
= gBS
->InstallMultipleProtocolInterfaces (
843 &DriverBindingHandle
,
844 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
845 &gEfiDriverConfigurationProtocolGuid
, DriverConfiguration
,
846 &gEfiDriverConfiguration2ProtocolGuid
, DriverConfiguration2
,
850 Status
= gBS
->InstallMultipleProtocolInterfaces (
851 &DriverBindingHandle
,
852 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
853 &gEfiComponentName2ProtocolGuid
, ComponentName2
,
854 &gEfiDriverConfigurationProtocolGuid
, DriverConfiguration
,
855 &gEfiDriverConfiguration2ProtocolGuid
, DriverConfiguration2
,
860 if (ComponentName2
== NULL
|| FeaturePcdGet(PcdComponentName2Disable
)) {
861 Status
= gBS
->InstallMultipleProtocolInterfaces (
862 &DriverBindingHandle
,
863 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
864 &gEfiComponentNameProtocolGuid
, ComponentName
,
865 &gEfiDriverConfigurationProtocolGuid
, DriverConfiguration
,
866 &gEfiDriverConfiguration2ProtocolGuid
, DriverConfiguration2
,
870 Status
= gBS
->InstallMultipleProtocolInterfaces (
871 &DriverBindingHandle
,
872 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
873 &gEfiComponentNameProtocolGuid
, ComponentName
,
874 &gEfiComponentName2ProtocolGuid
, ComponentName2
,
875 &gEfiDriverConfigurationProtocolGuid
, DriverConfiguration
,
876 &gEfiDriverConfiguration2ProtocolGuid
, DriverConfiguration2
,
882 if (ComponentName
== NULL
|| FeaturePcdGet(PcdComponentNameDisable
)) {
883 if (ComponentName2
== NULL
|| FeaturePcdGet(PcdComponentName2Disable
)) {
884 Status
= gBS
->InstallMultipleProtocolInterfaces (
885 &DriverBindingHandle
,
886 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
887 &gEfiDriverConfigurationProtocolGuid
, DriverConfiguration
,
888 &gEfiDriverConfiguration2ProtocolGuid
, DriverConfiguration2
,
889 &gEfiDriverDiagnostics2ProtocolGuid
, DriverDiagnostics2
,
893 Status
= gBS
->InstallMultipleProtocolInterfaces (
894 &DriverBindingHandle
,
895 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
896 &gEfiComponentName2ProtocolGuid
, ComponentName2
,
897 &gEfiDriverConfigurationProtocolGuid
, DriverConfiguration
,
898 &gEfiDriverConfiguration2ProtocolGuid
, DriverConfiguration2
,
899 &gEfiDriverDiagnostics2ProtocolGuid
, DriverDiagnostics2
,
904 if (ComponentName2
== NULL
|| FeaturePcdGet(PcdComponentName2Disable
)) {
905 Status
= gBS
->InstallMultipleProtocolInterfaces (
906 &DriverBindingHandle
,
907 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
908 &gEfiComponentNameProtocolGuid
, ComponentName
,
909 &gEfiDriverConfigurationProtocolGuid
, DriverConfiguration
,
910 &gEfiDriverConfiguration2ProtocolGuid
, DriverConfiguration2
,
911 &gEfiDriverDiagnostics2ProtocolGuid
, DriverDiagnostics2
,
915 Status
= gBS
->InstallMultipleProtocolInterfaces (
916 &DriverBindingHandle
,
917 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
918 &gEfiComponentNameProtocolGuid
, ComponentName
,
919 &gEfiComponentName2ProtocolGuid
, ComponentName2
,
920 &gEfiDriverConfigurationProtocolGuid
, DriverConfiguration
,
921 &gEfiDriverConfiguration2ProtocolGuid
, DriverConfiguration2
,
922 &gEfiDriverDiagnostics2ProtocolGuid
, DriverDiagnostics2
,
929 if (DriverDiagnostics2
== NULL
|| FeaturePcdGet(PcdDriverDiagnostics2Disable
)) {
930 if (ComponentName
== NULL
|| FeaturePcdGet(PcdComponentNameDisable
)) {
931 if (ComponentName2
== NULL
|| FeaturePcdGet(PcdComponentName2Disable
)) {
932 Status
= gBS
->InstallMultipleProtocolInterfaces (
933 &DriverBindingHandle
,
934 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
935 &gEfiDriverConfigurationProtocolGuid
, DriverConfiguration
,
936 &gEfiDriverConfiguration2ProtocolGuid
, DriverConfiguration2
,
937 &gEfiDriverDiagnosticsProtocolGuid
, DriverDiagnostics
,
941 Status
= gBS
->InstallMultipleProtocolInterfaces (
942 &DriverBindingHandle
,
943 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
944 &gEfiComponentName2ProtocolGuid
, ComponentName2
,
945 &gEfiDriverConfigurationProtocolGuid
, DriverConfiguration
,
946 &gEfiDriverConfiguration2ProtocolGuid
, DriverConfiguration2
,
947 &gEfiDriverDiagnosticsProtocolGuid
, DriverDiagnostics
,
952 if (ComponentName2
== NULL
|| FeaturePcdGet(PcdComponentName2Disable
)) {
953 Status
= gBS
->InstallMultipleProtocolInterfaces (
954 &DriverBindingHandle
,
955 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
956 &gEfiComponentNameProtocolGuid
, ComponentName
,
957 &gEfiDriverConfigurationProtocolGuid
, DriverConfiguration
,
958 &gEfiDriverConfiguration2ProtocolGuid
, DriverConfiguration2
,
959 &gEfiDriverDiagnosticsProtocolGuid
, DriverDiagnostics
,
963 Status
= gBS
->InstallMultipleProtocolInterfaces (
964 &DriverBindingHandle
,
965 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
966 &gEfiComponentNameProtocolGuid
, ComponentName
,
967 &gEfiComponentName2ProtocolGuid
, ComponentName2
,
968 &gEfiDriverConfigurationProtocolGuid
, DriverConfiguration
,
969 &gEfiDriverConfiguration2ProtocolGuid
, DriverConfiguration2
,
970 &gEfiDriverDiagnosticsProtocolGuid
, DriverDiagnostics
,
976 if (ComponentName
== NULL
|| FeaturePcdGet(PcdComponentNameDisable
)) {
977 if (ComponentName2
== NULL
|| FeaturePcdGet(PcdComponentName2Disable
)) {
978 Status
= gBS
->InstallMultipleProtocolInterfaces (
979 &DriverBindingHandle
,
980 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
981 &gEfiDriverConfigurationProtocolGuid
, DriverConfiguration
,
982 &gEfiDriverConfiguration2ProtocolGuid
, DriverConfiguration2
,
983 &gEfiDriverDiagnosticsProtocolGuid
, DriverDiagnostics
,
984 &gEfiDriverDiagnostics2ProtocolGuid
, DriverDiagnostics2
,
988 Status
= gBS
->InstallMultipleProtocolInterfaces (
989 &DriverBindingHandle
,
990 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
991 &gEfiComponentName2ProtocolGuid
, ComponentName2
,
992 &gEfiDriverConfigurationProtocolGuid
, DriverConfiguration
,
993 &gEfiDriverConfiguration2ProtocolGuid
, DriverConfiguration2
,
994 &gEfiDriverDiagnosticsProtocolGuid
, DriverDiagnostics
,
995 &gEfiDriverDiagnostics2ProtocolGuid
, DriverDiagnostics2
,
1000 if (ComponentName2
== NULL
|| FeaturePcdGet(PcdComponentName2Disable
)) {
1001 Status
= gBS
->InstallMultipleProtocolInterfaces (
1002 &DriverBindingHandle
,
1003 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
1004 &gEfiComponentNameProtocolGuid
, ComponentName
,
1005 &gEfiDriverConfigurationProtocolGuid
, DriverConfiguration
,
1006 &gEfiDriverConfiguration2ProtocolGuid
, DriverConfiguration2
,
1007 &gEfiDriverDiagnosticsProtocolGuid
, DriverDiagnostics
,
1008 &gEfiDriverDiagnostics2ProtocolGuid
, DriverDiagnostics2
,
1012 Status
= gBS
->InstallMultipleProtocolInterfaces (
1013 &DriverBindingHandle
,
1014 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
1015 &gEfiComponentNameProtocolGuid
, ComponentName
,
1016 &gEfiComponentName2ProtocolGuid
, ComponentName2
,
1017 &gEfiDriverConfigurationProtocolGuid
, DriverConfiguration
,
1018 &gEfiDriverConfiguration2ProtocolGuid
, DriverConfiguration2
,
1019 &gEfiDriverDiagnosticsProtocolGuid
, DriverDiagnostics
,
1020 &gEfiDriverDiagnostics2ProtocolGuid
, DriverDiagnostics2
,
1032 // ASSERT if the call to InstallMultipleProtocolInterfaces() failed
1034 ASSERT_EFI_ERROR (Status
);
1037 // Update the ImageHandle and DriverBindingHandle fields of the Driver Binding Protocol
1039 DriverBinding
->ImageHandle
= ImageHandle
;
1040 DriverBinding
->DriverBindingHandle
= DriverBindingHandle
;