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.
16 #include "FrameworkUefiLib.h"
19 Intialize a driver by installing the Driver Binding Protocol onto the driver's
20 DriverBindingHandle. This is typically the same as the driver's ImageHandle, but
21 it can be different if the driver produces multiple DriverBinding Protocols.
22 If the Drvier Binding Protocol interface is NULL, then ASSERT ().
23 If the installation fails, then ASSERT ().
25 @param ImageHandle The image handle of the driver.
26 @param SystemTable The EFI System Table that was passed to the driver's entry point.
27 @param DriverBinding A Driver Binding Protocol instance that this driver is producing.
28 @param DriverBindingHandle The handle that DriverBinding is to be installe onto. If this
29 parameter is NULL, then a new handle is created.
31 @retval EFI_SUCCESS The protocol installation is completed successfully.
32 @retval Others Status from gBS->InstallMultipleProtocolInterfaces().
37 EfiLibInstallDriverBinding (
38 IN CONST EFI_HANDLE ImageHandle
,
39 IN CONST EFI_SYSTEM_TABLE
*SystemTable
,
40 IN EFI_DRIVER_BINDING_PROTOCOL
*DriverBinding
,
41 IN EFI_HANDLE DriverBindingHandle
46 ASSERT (DriverBinding
!= NULL
);
48 Status
= gBS
->InstallMultipleProtocolInterfaces (
50 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
54 // ASSERT if the call to InstallMultipleProtocolInterfaces() failed
56 ASSERT_EFI_ERROR (Status
);
59 // Update the ImageHandle and DriverBindingHandle fields of the Driver Binding Protocol
61 DriverBinding
->ImageHandle
= ImageHandle
;
62 DriverBinding
->DriverBindingHandle
= DriverBindingHandle
;
69 Intialize a driver by installing the Driver Binding Protocol together with the optional Component Name,
70 Driver Configure and Driver Diagnostic Protocols onto the driver's DriverBindingHandle. This is
71 typically the same as the driver's ImageHandle, but it can be different if the driver produces multiple
72 DriverBinding Protocols.
73 If the Drvier Binding Protocol interface is NULL, then ASSERT ().
74 If the installation fails, then ASSERT ().
76 @param ImageHandle The image handle of the driver.
77 @param SystemTable The EFI System Table that was passed to the driver's entry point.
78 @param DriverBinding A Driver Binding Protocol instance that this driver is producing.
79 @param DriverBindingHandle The handle that DriverBinding is to be installe onto. If this
80 parameter is NULL, then a new handle is created.
81 @param ComponentName A Component Name Protocol instance that this driver is producing.
82 @param DriverConfiguration A Driver Configuration Protocol instance that this driver is producing.
83 @param DriverDiagnostics A Driver Diagnostics Protocol instance that this driver is producing.
85 @retval EFI_SUCCESS The protocol installation is completed successfully.
86 @retval Others Status from gBS->InstallMultipleProtocolInterfaces().
91 EfiLibInstallAllDriverProtocols (
92 IN CONST EFI_HANDLE ImageHandle
,
93 IN CONST EFI_SYSTEM_TABLE
*SystemTable
,
94 IN EFI_DRIVER_BINDING_PROTOCOL
*DriverBinding
,
95 IN EFI_HANDLE DriverBindingHandle
,
96 IN CONST EFI_COMPONENT_NAME_PROTOCOL
*ComponentName
, OPTIONAL
97 IN CONST EFI_DRIVER_CONFIGURATION_PROTOCOL
*DriverConfiguration
, OPTIONAL
98 IN CONST EFI_DRIVER_DIAGNOSTICS_PROTOCOL
*DriverDiagnostics OPTIONAL
103 ASSERT (DriverBinding
!= NULL
);
105 if (DriverDiagnostics
== NULL
|| FeaturePcdGet(PcdDriverDiagnosticsDisable
)) {
106 if (DriverConfiguration
== NULL
) {
107 if (ComponentName
== NULL
|| FeaturePcdGet(PcdComponentNameDisable
)) {
108 Status
= gBS
->InstallMultipleProtocolInterfaces (
109 &DriverBindingHandle
,
110 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
114 Status
= gBS
->InstallMultipleProtocolInterfaces (
115 &DriverBindingHandle
,
116 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
117 &gEfiComponentNameProtocolGuid
, ComponentName
,
122 if (ComponentName
== NULL
|| FeaturePcdGet(PcdComponentNameDisable
)) {
123 Status
= gBS
->InstallMultipleProtocolInterfaces (
124 &DriverBindingHandle
,
125 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
126 &gEfiDriverConfigurationProtocolGuid
, DriverConfiguration
,
130 Status
= gBS
->InstallMultipleProtocolInterfaces (
131 &DriverBindingHandle
,
132 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
133 &gEfiComponentNameProtocolGuid
, ComponentName
,
134 &gEfiDriverConfigurationProtocolGuid
, DriverConfiguration
,
140 if (DriverConfiguration
== NULL
) {
141 if (ComponentName
== NULL
|| FeaturePcdGet(PcdComponentNameDisable
)) {
142 Status
= gBS
->InstallMultipleProtocolInterfaces (
143 &DriverBindingHandle
,
144 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
145 &gEfiDriverDiagnosticsProtocolGuid
, DriverDiagnostics
,
149 Status
= gBS
->InstallMultipleProtocolInterfaces (
150 &DriverBindingHandle
,
151 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
152 &gEfiComponentNameProtocolGuid
, ComponentName
,
153 &gEfiDriverDiagnosticsProtocolGuid
, DriverDiagnostics
,
158 if (ComponentName
== NULL
|| FeaturePcdGet(PcdComponentNameDisable
)) {
159 Status
= gBS
->InstallMultipleProtocolInterfaces (
160 &DriverBindingHandle
,
161 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
162 &gEfiDriverConfigurationProtocolGuid
, DriverConfiguration
,
163 &gEfiDriverDiagnosticsProtocolGuid
, DriverDiagnostics
,
167 Status
= gBS
->InstallMultipleProtocolInterfaces (
168 &DriverBindingHandle
,
169 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
170 &gEfiComponentNameProtocolGuid
, ComponentName
,
171 &gEfiDriverConfigurationProtocolGuid
, DriverConfiguration
,
172 &gEfiDriverDiagnosticsProtocolGuid
, DriverDiagnostics
,
180 // ASSERT if the call to InstallMultipleProtocolInterfaces() failed
182 ASSERT_EFI_ERROR (Status
);
185 // Update the ImageHandle and DriverBindingHandle fields of the Driver Binding Protocol
187 DriverBinding
->ImageHandle
= ImageHandle
;
188 DriverBinding
->DriverBindingHandle
= DriverBindingHandle
;
196 Intialize a driver by installing the Driver Binding Protocol together with the optional Component Name,
197 Component Name 2 onto the driver's DriverBindingHandle. This is typically the same as the driver's
198 ImageHandle, but it can be different if the driver produces multiple DriverBinding Protocols.
199 If the Drvier Binding Protocol interface is NULL, then ASSERT ().
200 If the installation fails, then ASSERT ().
202 @param ImageHandle The image handle of the driver.
203 @param SystemTable The EFI System Table that was passed to the driver's entry point.
204 @param DriverBinding A Driver Binding Protocol instance that this driver is producing.
205 @param DriverBindingHandle The handle that DriverBinding is to be installe onto. If this
206 parameter is NULL, then a new handle is created.
207 @param ComponentName A Component Name Protocol instance that this driver is producing.
208 @param ComponentName2 A Component Name 2 Protocol instance that this driver is producing.
210 @retval EFI_SUCCESS The protocol installation is completed successfully.
211 @retval Others Status from gBS->InstallMultipleProtocolInterfaces().
216 EfiLibInstallDriverBindingComponentName2 (
217 IN CONST EFI_HANDLE ImageHandle
,
218 IN CONST EFI_SYSTEM_TABLE
*SystemTable
,
219 IN EFI_DRIVER_BINDING_PROTOCOL
*DriverBinding
,
220 IN EFI_HANDLE DriverBindingHandle
,
221 IN CONST EFI_COMPONENT_NAME_PROTOCOL
*ComponentName
, OPTIONAL
222 IN CONST EFI_COMPONENT_NAME2_PROTOCOL
*ComponentName2 OPTIONAL
227 ASSERT (DriverBinding
!= NULL
);
229 if (ComponentName
== NULL
|| FeaturePcdGet(PcdComponentNameDisable
)) {
230 if (ComponentName2
== NULL
|| FeaturePcdGet(PcdComponentName2Disable
)) {
231 Status
= gBS
->InstallMultipleProtocolInterfaces (
232 &DriverBindingHandle
,
233 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
237 Status
= gBS
->InstallMultipleProtocolInterfaces (
238 &DriverBindingHandle
,
239 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
240 &gEfiComponentName2ProtocolGuid
, ComponentName2
,
245 if (ComponentName2
== NULL
|| FeaturePcdGet(PcdComponentName2Disable
)) {
246 Status
= gBS
->InstallMultipleProtocolInterfaces (
247 &DriverBindingHandle
,
248 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
249 &gEfiComponentNameProtocolGuid
, ComponentName
,
253 Status
= gBS
->InstallMultipleProtocolInterfaces (
254 &DriverBindingHandle
,
255 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
256 &gEfiComponentNameProtocolGuid
, ComponentName
,
257 &gEfiComponentName2ProtocolGuid
, ComponentName2
,
263 // ASSERT if the call to InstallMultipleProtocolInterfaces() failed
265 ASSERT_EFI_ERROR (Status
);
268 // Update the ImageHandle and DriverBindingHandle fields of the Driver Binding Protocol
270 DriverBinding
->ImageHandle
= ImageHandle
;
271 DriverBinding
->DriverBindingHandle
= DriverBindingHandle
;
279 Intialize a driver by installing the Driver Binding Protocol together with the optional Component Name,
280 Component Name 2, Driver Configure, Driver Diagnostic and Driver Diagnostic 2 Protocols onto the driver's
281 DriverBindingHandle. This is typically the same as the driver's ImageHandle, but it can be different if
282 the driver produces multiple DriverBinding Protocols.
283 If the Drvier Binding Protocol interface is NULL, then ASSERT ().
284 If the installation fails, then ASSERT ().
286 @param ImageHandle The image handle of the driver.
287 @param SystemTable The EFI System Table that was passed to the driver's entry point.
288 @param DriverBinding A Driver Binding Protocol instance that this driver is producing.
289 @param DriverBindingHandle The handle that DriverBinding is to be installe onto. If this
290 parameter is NULL, then a new handle is created.
291 @param ComponentName A Component Name Protocol instance that this driver is producing.
292 @param ComponentName2 A Component Name 2 Protocol instance that this driver is producing.
293 @param DriverConfiguration A Driver Configuration Protocol instance that this driver is producing.
294 @param DriverConfiguration2 A Driver Configuration Protocol 2 instance that this driver is producing.
295 @param DriverDiagnostics A Driver Diagnostics Protocol instance that this driver is producing.
296 @param DriverDiagnostics2 A Driver Diagnostics Protocol 2 instance that this driver is producing.
298 @retval EFI_SUCCESS The protocol installation is completed successfully.
299 @retval Others Status from gBS->InstallMultipleProtocolInterfaces().
304 EfiLibInstallAllDriverProtocols2 (
305 IN CONST EFI_HANDLE ImageHandle
,
306 IN CONST EFI_SYSTEM_TABLE
*SystemTable
,
307 IN EFI_DRIVER_BINDING_PROTOCOL
*DriverBinding
,
308 IN EFI_HANDLE DriverBindingHandle
,
309 IN CONST EFI_COMPONENT_NAME_PROTOCOL
*ComponentName
, OPTIONAL
310 IN CONST EFI_COMPONENT_NAME2_PROTOCOL
*ComponentName2
, OPTIONAL
311 IN CONST EFI_DRIVER_CONFIGURATION_PROTOCOL
*DriverConfiguration
, OPTIONAL
312 IN CONST EFI_DRIVER_CONFIGURATION_PROTOCOL
*DriverConfiguration2
, OPTIONAL
313 IN CONST EFI_DRIVER_DIAGNOSTICS_PROTOCOL
*DriverDiagnostics
, OPTIONAL
314 IN CONST EFI_DRIVER_DIAGNOSTICS2_PROTOCOL
*DriverDiagnostics2 OPTIONAL
319 ASSERT (DriverBinding
!= NULL
);
321 if (DriverConfiguration2
== NULL
) {
322 if (DriverConfiguration
== NULL
) {
323 if (DriverDiagnostics
== NULL
|| FeaturePcdGet(PcdDriverDiagnosticsDisable
)) {
324 if (DriverDiagnostics2
== NULL
|| FeaturePcdGet(PcdDriverDiagnostics2Disable
)) {
325 if (ComponentName
== NULL
|| FeaturePcdGet(PcdComponentNameDisable
)) {
326 if (ComponentName2
== NULL
|| FeaturePcdGet(PcdComponentName2Disable
)) {
327 Status
= gBS
->InstallMultipleProtocolInterfaces (
328 &DriverBindingHandle
,
329 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
333 Status
= gBS
->InstallMultipleProtocolInterfaces (
334 &DriverBindingHandle
,
335 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
336 &gEfiComponentName2ProtocolGuid
, ComponentName2
,
341 if (ComponentName2
== NULL
|| FeaturePcdGet(PcdComponentName2Disable
)) {
342 Status
= gBS
->InstallMultipleProtocolInterfaces (
343 &DriverBindingHandle
,
344 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
345 &gEfiComponentNameProtocolGuid
, ComponentName
,
349 Status
= gBS
->InstallMultipleProtocolInterfaces (
350 &DriverBindingHandle
,
351 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
352 &gEfiComponentNameProtocolGuid
, ComponentName
,
353 &gEfiComponentName2ProtocolGuid
, ComponentName2
,
359 if (ComponentName
== NULL
|| FeaturePcdGet(PcdComponentNameDisable
)) {
360 if (ComponentName2
== NULL
|| FeaturePcdGet(PcdComponentName2Disable
)) {
361 Status
= gBS
->InstallMultipleProtocolInterfaces (
362 &DriverBindingHandle
,
363 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
364 &gEfiDriverDiagnostics2ProtocolGuid
, DriverDiagnostics2
,
368 Status
= gBS
->InstallMultipleProtocolInterfaces (
369 &DriverBindingHandle
,
370 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
371 &gEfiComponentName2ProtocolGuid
, ComponentName2
,
372 &gEfiDriverDiagnostics2ProtocolGuid
, DriverDiagnostics2
,
377 if (ComponentName2
== NULL
|| FeaturePcdGet(PcdComponentName2Disable
)) {
378 Status
= gBS
->InstallMultipleProtocolInterfaces (
379 &DriverBindingHandle
,
380 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
381 &gEfiComponentNameProtocolGuid
, ComponentName
,
382 &gEfiDriverDiagnostics2ProtocolGuid
, DriverDiagnostics2
,
386 Status
= gBS
->InstallMultipleProtocolInterfaces (
387 &DriverBindingHandle
,
388 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
389 &gEfiComponentNameProtocolGuid
, ComponentName
,
390 &gEfiComponentName2ProtocolGuid
, ComponentName2
,
391 &gEfiDriverDiagnostics2ProtocolGuid
, DriverDiagnostics2
,
398 if (DriverDiagnostics2
== NULL
|| FeaturePcdGet(PcdDriverDiagnostics2Disable
)) {
399 if (ComponentName
== NULL
|| FeaturePcdGet(PcdComponentNameDisable
)) {
400 if (ComponentName2
== NULL
|| FeaturePcdGet(PcdComponentName2Disable
)) {
401 Status
= gBS
->InstallMultipleProtocolInterfaces (
402 &DriverBindingHandle
,
403 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
404 &gEfiDriverDiagnosticsProtocolGuid
, DriverDiagnostics
,
408 Status
= gBS
->InstallMultipleProtocolInterfaces (
409 &DriverBindingHandle
,
410 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
411 &gEfiComponentName2ProtocolGuid
, ComponentName2
,
412 &gEfiDriverDiagnosticsProtocolGuid
, DriverDiagnostics
,
417 if (ComponentName2
== NULL
|| FeaturePcdGet(PcdComponentName2Disable
)) {
418 Status
= gBS
->InstallMultipleProtocolInterfaces (
419 &DriverBindingHandle
,
420 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
421 &gEfiComponentNameProtocolGuid
, ComponentName
,
422 &gEfiDriverDiagnosticsProtocolGuid
, DriverDiagnostics
,
426 Status
= gBS
->InstallMultipleProtocolInterfaces (
427 &DriverBindingHandle
,
428 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
429 &gEfiComponentNameProtocolGuid
, ComponentName
,
430 &gEfiComponentName2ProtocolGuid
, ComponentName2
,
431 &gEfiDriverDiagnosticsProtocolGuid
, DriverDiagnostics
,
437 if (ComponentName
== NULL
|| FeaturePcdGet(PcdComponentNameDisable
)) {
438 if (ComponentName2
== NULL
|| FeaturePcdGet(PcdComponentName2Disable
)) {
439 Status
= gBS
->InstallMultipleProtocolInterfaces (
440 &DriverBindingHandle
,
441 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
442 &gEfiDriverDiagnosticsProtocolGuid
, DriverDiagnostics
,
443 &gEfiDriverDiagnostics2ProtocolGuid
, DriverDiagnostics2
,
447 Status
= gBS
->InstallMultipleProtocolInterfaces (
448 &DriverBindingHandle
,
449 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
450 &gEfiComponentName2ProtocolGuid
, ComponentName2
,
451 &gEfiDriverDiagnosticsProtocolGuid
, DriverDiagnostics
,
452 &gEfiDriverDiagnostics2ProtocolGuid
, DriverDiagnostics2
,
457 if (ComponentName2
== NULL
|| FeaturePcdGet(PcdComponentName2Disable
)) {
458 Status
= gBS
->InstallMultipleProtocolInterfaces (
459 &DriverBindingHandle
,
460 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
461 &gEfiComponentNameProtocolGuid
, ComponentName
,
462 &gEfiDriverDiagnosticsProtocolGuid
, DriverDiagnostics
,
463 &gEfiDriverDiagnostics2ProtocolGuid
, DriverDiagnostics2
,
467 Status
= gBS
->InstallMultipleProtocolInterfaces (
468 &DriverBindingHandle
,
469 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
470 &gEfiComponentNameProtocolGuid
, ComponentName
,
471 &gEfiComponentName2ProtocolGuid
, ComponentName2
,
472 &gEfiDriverDiagnosticsProtocolGuid
, DriverDiagnostics
,
473 &gEfiDriverDiagnostics2ProtocolGuid
, DriverDiagnostics2
,
481 if (DriverDiagnostics
== NULL
|| FeaturePcdGet(PcdDriverDiagnosticsDisable
)) {
482 if (DriverDiagnostics2
== NULL
|| FeaturePcdGet(PcdDriverDiagnostics2Disable
)) {
483 if (ComponentName
== NULL
|| FeaturePcdGet(PcdComponentNameDisable
)) {
484 if (ComponentName2
== NULL
|| FeaturePcdGet(PcdComponentName2Disable
)) {
485 Status
= gBS
->InstallMultipleProtocolInterfaces (
486 &DriverBindingHandle
,
487 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
488 &gEfiDriverConfigurationProtocolGuid
, DriverConfiguration
,
492 Status
= gBS
->InstallMultipleProtocolInterfaces (
493 &DriverBindingHandle
,
494 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
495 &gEfiComponentName2ProtocolGuid
, ComponentName2
,
496 &gEfiDriverConfigurationProtocolGuid
, DriverConfiguration
,
501 if (ComponentName2
== NULL
|| FeaturePcdGet(PcdComponentName2Disable
)) {
502 Status
= gBS
->InstallMultipleProtocolInterfaces (
503 &DriverBindingHandle
,
504 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
505 &gEfiComponentNameProtocolGuid
, ComponentName
,
506 &gEfiDriverConfigurationProtocolGuid
, DriverConfiguration
,
510 Status
= gBS
->InstallMultipleProtocolInterfaces (
511 &DriverBindingHandle
,
512 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
513 &gEfiComponentNameProtocolGuid
, ComponentName
,
514 &gEfiComponentName2ProtocolGuid
, ComponentName2
,
515 &gEfiDriverConfigurationProtocolGuid
, DriverConfiguration
,
521 if (ComponentName
== NULL
|| FeaturePcdGet(PcdComponentNameDisable
)) {
522 if (ComponentName2
== NULL
|| FeaturePcdGet(PcdComponentName2Disable
)) {
523 Status
= gBS
->InstallMultipleProtocolInterfaces (
524 &DriverBindingHandle
,
525 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
526 &gEfiDriverConfigurationProtocolGuid
, DriverConfiguration
,
527 &gEfiDriverDiagnostics2ProtocolGuid
, DriverDiagnostics2
,
531 Status
= gBS
->InstallMultipleProtocolInterfaces (
532 &DriverBindingHandle
,
533 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
534 &gEfiComponentName2ProtocolGuid
, ComponentName2
,
535 &gEfiDriverConfigurationProtocolGuid
, DriverConfiguration
,
536 &gEfiDriverDiagnostics2ProtocolGuid
, DriverDiagnostics2
,
541 if (ComponentName2
== NULL
|| FeaturePcdGet(PcdComponentName2Disable
)) {
542 Status
= gBS
->InstallMultipleProtocolInterfaces (
543 &DriverBindingHandle
,
544 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
545 &gEfiComponentNameProtocolGuid
, ComponentName
,
546 &gEfiDriverConfigurationProtocolGuid
, DriverConfiguration
,
547 &gEfiDriverDiagnostics2ProtocolGuid
, DriverDiagnostics2
,
551 Status
= gBS
->InstallMultipleProtocolInterfaces (
552 &DriverBindingHandle
,
553 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
554 &gEfiComponentNameProtocolGuid
, ComponentName
,
555 &gEfiComponentName2ProtocolGuid
, ComponentName2
,
556 &gEfiDriverConfigurationProtocolGuid
, DriverConfiguration
,
557 &gEfiDriverDiagnostics2ProtocolGuid
, DriverDiagnostics2
,
564 if (DriverDiagnostics2
== NULL
|| FeaturePcdGet(PcdDriverDiagnostics2Disable
)) {
565 if (ComponentName
== NULL
|| FeaturePcdGet(PcdComponentNameDisable
)) {
566 if (ComponentName2
== NULL
|| FeaturePcdGet(PcdComponentName2Disable
)) {
567 Status
= gBS
->InstallMultipleProtocolInterfaces (
568 &DriverBindingHandle
,
569 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
570 &gEfiDriverConfigurationProtocolGuid
, DriverConfiguration
,
571 &gEfiDriverDiagnosticsProtocolGuid
, DriverDiagnostics
,
575 Status
= gBS
->InstallMultipleProtocolInterfaces (
576 &DriverBindingHandle
,
577 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
578 &gEfiComponentName2ProtocolGuid
, ComponentName2
,
579 &gEfiDriverConfigurationProtocolGuid
, DriverConfiguration
,
580 &gEfiDriverDiagnosticsProtocolGuid
, DriverDiagnostics
,
585 if (ComponentName2
== NULL
|| FeaturePcdGet(PcdComponentName2Disable
)) {
586 Status
= gBS
->InstallMultipleProtocolInterfaces (
587 &DriverBindingHandle
,
588 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
589 &gEfiComponentNameProtocolGuid
, ComponentName
,
590 &gEfiDriverConfigurationProtocolGuid
, DriverConfiguration
,
591 &gEfiDriverDiagnosticsProtocolGuid
, DriverDiagnostics
,
595 Status
= gBS
->InstallMultipleProtocolInterfaces (
596 &DriverBindingHandle
,
597 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
598 &gEfiComponentNameProtocolGuid
, ComponentName
,
599 &gEfiComponentName2ProtocolGuid
, ComponentName2
,
600 &gEfiDriverConfigurationProtocolGuid
, DriverConfiguration
,
601 &gEfiDriverDiagnosticsProtocolGuid
, DriverDiagnostics
,
607 if (ComponentName
== NULL
|| FeaturePcdGet(PcdComponentNameDisable
)) {
608 if (ComponentName2
== NULL
|| FeaturePcdGet(PcdComponentName2Disable
)) {
609 Status
= gBS
->InstallMultipleProtocolInterfaces (
610 &DriverBindingHandle
,
611 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
612 &gEfiDriverConfigurationProtocolGuid
, DriverConfiguration
,
613 &gEfiDriverDiagnosticsProtocolGuid
, DriverDiagnostics
,
614 &gEfiDriverDiagnostics2ProtocolGuid
, DriverDiagnostics2
,
618 Status
= gBS
->InstallMultipleProtocolInterfaces (
619 &DriverBindingHandle
,
620 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
621 &gEfiComponentName2ProtocolGuid
, ComponentName2
,
622 &gEfiDriverConfigurationProtocolGuid
, DriverConfiguration
,
623 &gEfiDriverDiagnosticsProtocolGuid
, DriverDiagnostics
,
624 &gEfiDriverDiagnostics2ProtocolGuid
, DriverDiagnostics2
,
629 if (ComponentName2
== NULL
|| FeaturePcdGet(PcdComponentName2Disable
)) {
630 Status
= gBS
->InstallMultipleProtocolInterfaces (
631 &DriverBindingHandle
,
632 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
633 &gEfiComponentNameProtocolGuid
, ComponentName
,
634 &gEfiDriverConfigurationProtocolGuid
, DriverConfiguration
,
635 &gEfiDriverDiagnosticsProtocolGuid
, DriverDiagnostics
,
636 &gEfiDriverDiagnostics2ProtocolGuid
, DriverDiagnostics2
,
640 Status
= gBS
->InstallMultipleProtocolInterfaces (
641 &DriverBindingHandle
,
642 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
643 &gEfiComponentNameProtocolGuid
, ComponentName
,
644 &gEfiComponentName2ProtocolGuid
, ComponentName2
,
645 &gEfiDriverConfigurationProtocolGuid
, DriverConfiguration
,
646 &gEfiDriverDiagnosticsProtocolGuid
, DriverDiagnostics
,
647 &gEfiDriverDiagnostics2ProtocolGuid
, DriverDiagnostics2
,
656 if (DriverConfiguration
== NULL
) {
657 if (DriverDiagnostics
== NULL
|| FeaturePcdGet(PcdDriverDiagnosticsDisable
)) {
658 if (DriverDiagnostics2
== NULL
|| FeaturePcdGet(PcdDriverDiagnostics2Disable
)) {
659 if (ComponentName
== NULL
|| FeaturePcdGet(PcdComponentNameDisable
)) {
660 if (ComponentName2
== NULL
|| FeaturePcdGet(PcdComponentName2Disable
)) {
661 Status
= gBS
->InstallMultipleProtocolInterfaces (
662 &DriverBindingHandle
,
663 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
664 &gEfiDriverConfiguration2ProtocolGuid
, DriverConfiguration2
,
668 Status
= gBS
->InstallMultipleProtocolInterfaces (
669 &DriverBindingHandle
,
670 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
671 &gEfiComponentName2ProtocolGuid
, ComponentName2
,
672 &gEfiDriverConfiguration2ProtocolGuid
, DriverConfiguration2
,
677 if (ComponentName2
== NULL
|| FeaturePcdGet(PcdComponentName2Disable
)) {
678 Status
= gBS
->InstallMultipleProtocolInterfaces (
679 &DriverBindingHandle
,
680 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
681 &gEfiComponentNameProtocolGuid
, ComponentName
,
682 &gEfiDriverConfiguration2ProtocolGuid
, DriverConfiguration2
,
686 Status
= gBS
->InstallMultipleProtocolInterfaces (
687 &DriverBindingHandle
,
688 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
689 &gEfiComponentNameProtocolGuid
, ComponentName
,
690 &gEfiComponentName2ProtocolGuid
, ComponentName2
,
691 &gEfiDriverConfiguration2ProtocolGuid
, DriverConfiguration2
,
697 if (ComponentName
== NULL
|| FeaturePcdGet(PcdComponentNameDisable
)) {
698 if (ComponentName2
== NULL
|| FeaturePcdGet(PcdComponentName2Disable
)) {
699 Status
= gBS
->InstallMultipleProtocolInterfaces (
700 &DriverBindingHandle
,
701 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
702 &gEfiDriverDiagnostics2ProtocolGuid
, DriverDiagnostics2
,
703 &gEfiDriverConfiguration2ProtocolGuid
, DriverConfiguration2
,
707 Status
= gBS
->InstallMultipleProtocolInterfaces (
708 &DriverBindingHandle
,
709 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
710 &gEfiComponentName2ProtocolGuid
, ComponentName2
,
711 &gEfiDriverConfiguration2ProtocolGuid
, DriverConfiguration2
,
712 &gEfiDriverDiagnostics2ProtocolGuid
, DriverDiagnostics2
,
717 if (ComponentName2
== NULL
|| FeaturePcdGet(PcdComponentName2Disable
)) {
718 Status
= gBS
->InstallMultipleProtocolInterfaces (
719 &DriverBindingHandle
,
720 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
721 &gEfiComponentNameProtocolGuid
, ComponentName
,
722 &gEfiDriverConfiguration2ProtocolGuid
, DriverConfiguration2
,
723 &gEfiDriverDiagnostics2ProtocolGuid
, DriverDiagnostics2
,
727 Status
= gBS
->InstallMultipleProtocolInterfaces (
728 &DriverBindingHandle
,
729 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
730 &gEfiComponentNameProtocolGuid
, ComponentName
,
731 &gEfiComponentName2ProtocolGuid
, ComponentName2
,
732 &gEfiDriverConfiguration2ProtocolGuid
, DriverConfiguration2
,
733 &gEfiDriverDiagnostics2ProtocolGuid
, DriverDiagnostics2
,
740 if (DriverDiagnostics2
== NULL
|| FeaturePcdGet(PcdDriverDiagnostics2Disable
)) {
741 if (ComponentName
== NULL
|| FeaturePcdGet(PcdComponentNameDisable
)) {
742 if (ComponentName2
== NULL
|| FeaturePcdGet(PcdComponentName2Disable
)) {
743 Status
= gBS
->InstallMultipleProtocolInterfaces (
744 &DriverBindingHandle
,
745 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
746 &gEfiDriverDiagnosticsProtocolGuid
, DriverDiagnostics
,
747 &gEfiDriverConfiguration2ProtocolGuid
, DriverConfiguration2
,
751 Status
= gBS
->InstallMultipleProtocolInterfaces (
752 &DriverBindingHandle
,
753 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
754 &gEfiComponentName2ProtocolGuid
, ComponentName2
,
755 &gEfiDriverConfiguration2ProtocolGuid
, DriverConfiguration2
,
756 &gEfiDriverDiagnosticsProtocolGuid
, DriverDiagnostics
,
761 if (ComponentName2
== NULL
|| FeaturePcdGet(PcdComponentName2Disable
)) {
762 Status
= gBS
->InstallMultipleProtocolInterfaces (
763 &DriverBindingHandle
,
764 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
765 &gEfiComponentNameProtocolGuid
, ComponentName
,
766 &gEfiDriverDiagnosticsProtocolGuid
, DriverDiagnostics
,
767 &gEfiDriverConfiguration2ProtocolGuid
, DriverConfiguration2
,
771 Status
= gBS
->InstallMultipleProtocolInterfaces (
772 &DriverBindingHandle
,
773 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
774 &gEfiComponentNameProtocolGuid
, ComponentName
,
775 &gEfiComponentName2ProtocolGuid
, ComponentName2
,
776 &gEfiDriverConfiguration2ProtocolGuid
, DriverConfiguration2
,
777 &gEfiDriverDiagnosticsProtocolGuid
, DriverDiagnostics
,
783 if (ComponentName
== NULL
|| FeaturePcdGet(PcdComponentNameDisable
)) {
784 if (ComponentName2
== NULL
|| FeaturePcdGet(PcdComponentName2Disable
)) {
785 Status
= gBS
->InstallMultipleProtocolInterfaces (
786 &DriverBindingHandle
,
787 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
788 &gEfiDriverConfiguration2ProtocolGuid
, DriverConfiguration2
,
789 &gEfiDriverDiagnosticsProtocolGuid
, DriverDiagnostics
,
790 &gEfiDriverDiagnostics2ProtocolGuid
, DriverDiagnostics2
,
794 Status
= gBS
->InstallMultipleProtocolInterfaces (
795 &DriverBindingHandle
,
796 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
797 &gEfiComponentName2ProtocolGuid
, ComponentName2
,
798 &gEfiDriverConfiguration2ProtocolGuid
, DriverConfiguration2
,
799 &gEfiDriverDiagnosticsProtocolGuid
, DriverDiagnostics
,
800 &gEfiDriverDiagnostics2ProtocolGuid
, DriverDiagnostics2
,
805 if (ComponentName2
== NULL
|| FeaturePcdGet(PcdComponentName2Disable
)) {
806 Status
= gBS
->InstallMultipleProtocolInterfaces (
807 &DriverBindingHandle
,
808 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
809 &gEfiComponentNameProtocolGuid
, ComponentName
,
810 &gEfiDriverConfiguration2ProtocolGuid
, DriverConfiguration2
,
811 &gEfiDriverDiagnosticsProtocolGuid
, DriverDiagnostics
,
812 &gEfiDriverDiagnostics2ProtocolGuid
, DriverDiagnostics2
,
816 Status
= gBS
->InstallMultipleProtocolInterfaces (
817 &DriverBindingHandle
,
818 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
819 &gEfiComponentNameProtocolGuid
, ComponentName
,
820 &gEfiComponentName2ProtocolGuid
, ComponentName2
,
821 &gEfiDriverConfiguration2ProtocolGuid
, DriverConfiguration2
,
822 &gEfiDriverDiagnosticsProtocolGuid
, DriverDiagnostics
,
823 &gEfiDriverDiagnostics2ProtocolGuid
, DriverDiagnostics2
,
831 if (DriverDiagnostics
== NULL
|| FeaturePcdGet(PcdDriverDiagnosticsDisable
)) {
832 if (DriverDiagnostics2
== NULL
|| FeaturePcdGet(PcdDriverDiagnostics2Disable
)) {
833 if (ComponentName
== NULL
|| FeaturePcdGet(PcdComponentNameDisable
)) {
834 if (ComponentName2
== NULL
|| FeaturePcdGet(PcdComponentName2Disable
)) {
835 Status
= gBS
->InstallMultipleProtocolInterfaces (
836 &DriverBindingHandle
,
837 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
838 &gEfiDriverConfigurationProtocolGuid
, DriverConfiguration
,
839 &gEfiDriverConfiguration2ProtocolGuid
, DriverConfiguration2
,
843 Status
= gBS
->InstallMultipleProtocolInterfaces (
844 &DriverBindingHandle
,
845 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
846 &gEfiComponentName2ProtocolGuid
, ComponentName2
,
847 &gEfiDriverConfigurationProtocolGuid
, DriverConfiguration
,
848 &gEfiDriverConfiguration2ProtocolGuid
, DriverConfiguration2
,
853 if (ComponentName2
== NULL
|| FeaturePcdGet(PcdComponentName2Disable
)) {
854 Status
= gBS
->InstallMultipleProtocolInterfaces (
855 &DriverBindingHandle
,
856 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
857 &gEfiComponentNameProtocolGuid
, ComponentName
,
858 &gEfiDriverConfigurationProtocolGuid
, DriverConfiguration
,
859 &gEfiDriverConfiguration2ProtocolGuid
, DriverConfiguration2
,
863 Status
= gBS
->InstallMultipleProtocolInterfaces (
864 &DriverBindingHandle
,
865 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
866 &gEfiComponentNameProtocolGuid
, ComponentName
,
867 &gEfiComponentName2ProtocolGuid
, ComponentName2
,
868 &gEfiDriverConfigurationProtocolGuid
, DriverConfiguration
,
869 &gEfiDriverConfiguration2ProtocolGuid
, DriverConfiguration2
,
875 if (ComponentName
== NULL
|| FeaturePcdGet(PcdComponentNameDisable
)) {
876 if (ComponentName2
== NULL
|| FeaturePcdGet(PcdComponentName2Disable
)) {
877 Status
= gBS
->InstallMultipleProtocolInterfaces (
878 &DriverBindingHandle
,
879 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
880 &gEfiDriverConfigurationProtocolGuid
, DriverConfiguration
,
881 &gEfiDriverConfiguration2ProtocolGuid
, DriverConfiguration2
,
882 &gEfiDriverDiagnostics2ProtocolGuid
, DriverDiagnostics2
,
886 Status
= gBS
->InstallMultipleProtocolInterfaces (
887 &DriverBindingHandle
,
888 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
889 &gEfiComponentName2ProtocolGuid
, ComponentName2
,
890 &gEfiDriverConfigurationProtocolGuid
, DriverConfiguration
,
891 &gEfiDriverConfiguration2ProtocolGuid
, DriverConfiguration2
,
892 &gEfiDriverDiagnostics2ProtocolGuid
, DriverDiagnostics2
,
897 if (ComponentName2
== NULL
|| FeaturePcdGet(PcdComponentName2Disable
)) {
898 Status
= gBS
->InstallMultipleProtocolInterfaces (
899 &DriverBindingHandle
,
900 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
901 &gEfiComponentNameProtocolGuid
, ComponentName
,
902 &gEfiDriverConfigurationProtocolGuid
, DriverConfiguration
,
903 &gEfiDriverConfiguration2ProtocolGuid
, DriverConfiguration2
,
904 &gEfiDriverDiagnostics2ProtocolGuid
, DriverDiagnostics2
,
908 Status
= gBS
->InstallMultipleProtocolInterfaces (
909 &DriverBindingHandle
,
910 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
911 &gEfiComponentNameProtocolGuid
, ComponentName
,
912 &gEfiComponentName2ProtocolGuid
, ComponentName2
,
913 &gEfiDriverConfigurationProtocolGuid
, DriverConfiguration
,
914 &gEfiDriverConfiguration2ProtocolGuid
, DriverConfiguration2
,
915 &gEfiDriverDiagnostics2ProtocolGuid
, DriverDiagnostics2
,
922 if (DriverDiagnostics2
== NULL
|| FeaturePcdGet(PcdDriverDiagnostics2Disable
)) {
923 if (ComponentName
== NULL
|| FeaturePcdGet(PcdComponentNameDisable
)) {
924 if (ComponentName2
== NULL
|| FeaturePcdGet(PcdComponentName2Disable
)) {
925 Status
= gBS
->InstallMultipleProtocolInterfaces (
926 &DriverBindingHandle
,
927 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
928 &gEfiDriverConfigurationProtocolGuid
, DriverConfiguration
,
929 &gEfiDriverConfiguration2ProtocolGuid
, DriverConfiguration2
,
930 &gEfiDriverDiagnosticsProtocolGuid
, DriverDiagnostics
,
934 Status
= gBS
->InstallMultipleProtocolInterfaces (
935 &DriverBindingHandle
,
936 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
937 &gEfiComponentName2ProtocolGuid
, ComponentName2
,
938 &gEfiDriverConfigurationProtocolGuid
, DriverConfiguration
,
939 &gEfiDriverConfiguration2ProtocolGuid
, DriverConfiguration2
,
940 &gEfiDriverDiagnosticsProtocolGuid
, DriverDiagnostics
,
945 if (ComponentName2
== NULL
|| FeaturePcdGet(PcdComponentName2Disable
)) {
946 Status
= gBS
->InstallMultipleProtocolInterfaces (
947 &DriverBindingHandle
,
948 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
949 &gEfiComponentNameProtocolGuid
, ComponentName
,
950 &gEfiDriverConfigurationProtocolGuid
, DriverConfiguration
,
951 &gEfiDriverConfiguration2ProtocolGuid
, DriverConfiguration2
,
952 &gEfiDriverDiagnosticsProtocolGuid
, DriverDiagnostics
,
956 Status
= gBS
->InstallMultipleProtocolInterfaces (
957 &DriverBindingHandle
,
958 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
959 &gEfiComponentNameProtocolGuid
, ComponentName
,
960 &gEfiComponentName2ProtocolGuid
, ComponentName2
,
961 &gEfiDriverConfigurationProtocolGuid
, DriverConfiguration
,
962 &gEfiDriverConfiguration2ProtocolGuid
, DriverConfiguration2
,
963 &gEfiDriverDiagnosticsProtocolGuid
, DriverDiagnostics
,
969 if (ComponentName
== NULL
|| FeaturePcdGet(PcdComponentNameDisable
)) {
970 if (ComponentName2
== NULL
|| FeaturePcdGet(PcdComponentName2Disable
)) {
971 Status
= gBS
->InstallMultipleProtocolInterfaces (
972 &DriverBindingHandle
,
973 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
974 &gEfiDriverConfigurationProtocolGuid
, DriverConfiguration
,
975 &gEfiDriverConfiguration2ProtocolGuid
, DriverConfiguration2
,
976 &gEfiDriverDiagnosticsProtocolGuid
, DriverDiagnostics
,
977 &gEfiDriverDiagnostics2ProtocolGuid
, DriverDiagnostics2
,
981 Status
= gBS
->InstallMultipleProtocolInterfaces (
982 &DriverBindingHandle
,
983 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
984 &gEfiComponentName2ProtocolGuid
, ComponentName2
,
985 &gEfiDriverConfigurationProtocolGuid
, DriverConfiguration
,
986 &gEfiDriverConfiguration2ProtocolGuid
, DriverConfiguration2
,
987 &gEfiDriverDiagnosticsProtocolGuid
, DriverDiagnostics
,
988 &gEfiDriverDiagnostics2ProtocolGuid
, DriverDiagnostics2
,
993 if (ComponentName2
== NULL
|| FeaturePcdGet(PcdComponentName2Disable
)) {
994 Status
= gBS
->InstallMultipleProtocolInterfaces (
995 &DriverBindingHandle
,
996 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
997 &gEfiComponentNameProtocolGuid
, ComponentName
,
998 &gEfiDriverConfigurationProtocolGuid
, DriverConfiguration
,
999 &gEfiDriverConfiguration2ProtocolGuid
, DriverConfiguration2
,
1000 &gEfiDriverDiagnosticsProtocolGuid
, DriverDiagnostics
,
1001 &gEfiDriverDiagnostics2ProtocolGuid
, DriverDiagnostics2
,
1005 Status
= gBS
->InstallMultipleProtocolInterfaces (
1006 &DriverBindingHandle
,
1007 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
1008 &gEfiComponentNameProtocolGuid
, ComponentName
,
1009 &gEfiComponentName2ProtocolGuid
, ComponentName2
,
1010 &gEfiDriverConfigurationProtocolGuid
, DriverConfiguration
,
1011 &gEfiDriverConfiguration2ProtocolGuid
, DriverConfiguration2
,
1012 &gEfiDriverDiagnosticsProtocolGuid
, DriverDiagnostics
,
1013 &gEfiDriverDiagnostics2ProtocolGuid
, DriverDiagnostics2
,
1025 // ASSERT if the call to InstallMultipleProtocolInterfaces() failed
1027 ASSERT_EFI_ERROR (Status
);
1030 // Update the ImageHandle and DriverBindingHandle fields of the Driver Binding Protocol
1032 DriverBinding
->ImageHandle
= ImageHandle
;
1033 DriverBinding
->DriverBindingHandle
= DriverBindingHandle
;