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 Intialize a driver by installing the Driver Binding Protocol onto the driver's
21 DriverBindingHandle. This is typically the same as the driver's ImageHandle, but
22 it can be different if the driver produces multiple DriverBinding Protocols.
23 If the Drvier Binding Protocol interface is NULL, then ASSERT ().
24 If the installation fails, then ASSERT ().
26 @param ImageHandle The image handle of the driver.
27 @param SystemTable The EFI System Table that was passed to the driver's entry point.
28 @param DriverBinding A Driver Binding Protocol instance that this driver is producing.
29 @param DriverBindingHandle The handle that DriverBinding is to be installe onto. If this
30 parameter is NULL, then a new handle is created.
32 @retval EFI_SUCCESS The protocol installation is completed successfully.
33 @retval Others Status from gBS->InstallMultipleProtocolInterfaces().
38 EfiLibInstallDriverBinding (
39 IN CONST EFI_HANDLE ImageHandle
,
40 IN CONST EFI_SYSTEM_TABLE
*SystemTable
,
41 IN EFI_DRIVER_BINDING_PROTOCOL
*DriverBinding
,
42 IN EFI_HANDLE DriverBindingHandle
47 ASSERT (DriverBinding
!= NULL
);
49 Status
= gBS
->InstallMultipleProtocolInterfaces (
51 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
55 // ASSERT if the call to InstallMultipleProtocolInterfaces() failed
57 ASSERT_EFI_ERROR (Status
);
60 // Update the ImageHandle and DriverBindingHandle fields of the Driver Binding Protocol
62 DriverBinding
->ImageHandle
= ImageHandle
;
63 DriverBinding
->DriverBindingHandle
= DriverBindingHandle
;
70 Intialize a driver by installing the Driver Binding Protocol together with the optional Component Name,
71 Driver Configure and Driver Diagnostic Protocols onto the driver's DriverBindingHandle. This is
72 typically the same as the driver's ImageHandle, but it can be different if the driver produces multiple
73 DriverBinding Protocols.
74 If the Drvier Binding Protocol interface is NULL, then ASSERT ().
75 If the installation fails, then ASSERT ().
77 @param ImageHandle The image handle of the driver.
78 @param SystemTable The EFI System Table that was passed to the driver's entry point.
79 @param DriverBinding A Driver Binding Protocol instance that this driver is producing.
80 @param DriverBindingHandle The handle that DriverBinding is to be installe onto. If this
81 parameter is NULL, then a new handle is created.
82 @param ComponentName A Component Name Protocol instance that this driver is producing.
83 @param DriverConfiguration A Driver Configuration Protocol instance that this driver is producing.
84 @param DriverDiagnostics A Driver Diagnostics Protocol instance that this driver is producing.
86 @retval EFI_SUCCESS The protocol installation is completed successfully.
87 @retval Others Status from gBS->InstallMultipleProtocolInterfaces().
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 (DriverBinding
!= NULL
);
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
;
197 Intialize a driver by installing the Driver Binding Protocol together with the optional Component Name,
198 Component Name 2 onto the driver's DriverBindingHandle. This is typically the same as the driver's
199 ImageHandle, but it can be different if the driver produces multiple DriverBinding Protocols.
200 If the Drvier Binding Protocol interface is NULL, then ASSERT ().
201 If the installation fails, then ASSERT ().
203 @param ImageHandle The image handle of the driver.
204 @param SystemTable The EFI System Table that was passed to the driver's entry point.
205 @param DriverBinding A Driver Binding Protocol instance that this driver is producing.
206 @param DriverBindingHandle The handle that DriverBinding is to be installe onto. If this
207 parameter is NULL, then a new handle is created.
208 @param ComponentName A Component Name Protocol instance that this driver is producing.
209 @param ComponentName2 A Component Name 2 Protocol instance that this driver is producing.
211 @retval EFI_SUCCESS The protocol installation is completed successfully.
212 @retval Others Status from gBS->InstallMultipleProtocolInterfaces().
217 EfiLibInstallDriverBindingComponentName2 (
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
228 ASSERT (DriverBinding
!= NULL
);
230 if (ComponentName
== NULL
|| FeaturePcdGet(PcdComponentNameDisable
)) {
231 if (ComponentName2
== NULL
|| FeaturePcdGet(PcdComponentName2Disable
)) {
232 Status
= gBS
->InstallMultipleProtocolInterfaces (
233 &DriverBindingHandle
,
234 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
238 Status
= gBS
->InstallMultipleProtocolInterfaces (
239 &DriverBindingHandle
,
240 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
241 &gEfiComponentName2ProtocolGuid
, ComponentName2
,
246 if (ComponentName2
== NULL
|| FeaturePcdGet(PcdComponentName2Disable
)) {
247 Status
= gBS
->InstallMultipleProtocolInterfaces (
248 &DriverBindingHandle
,
249 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
250 &gEfiComponentNameProtocolGuid
, ComponentName
,
254 Status
= gBS
->InstallMultipleProtocolInterfaces (
255 &DriverBindingHandle
,
256 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
257 &gEfiComponentNameProtocolGuid
, ComponentName
,
258 &gEfiComponentName2ProtocolGuid
, ComponentName2
,
264 // ASSERT if the call to InstallMultipleProtocolInterfaces() failed
266 ASSERT_EFI_ERROR (Status
);
269 // Update the ImageHandle and DriverBindingHandle fields of the Driver Binding Protocol
271 DriverBinding
->ImageHandle
= ImageHandle
;
272 DriverBinding
->DriverBindingHandle
= DriverBindingHandle
;
280 Intialize a driver by installing the Driver Binding Protocol together with the optional Component Name,
281 Component Name 2, Driver Configure, Driver Diagnostic and Driver Diagnostic 2 Protocols onto the driver's
282 DriverBindingHandle. This is typically the same as the driver's ImageHandle, but it can be different if
283 the driver produces multiple DriverBinding Protocols.
284 If the Drvier Binding Protocol interface is NULL, then ASSERT ().
285 If the installation fails, then ASSERT ().
287 @param ImageHandle The image handle of the driver.
288 @param SystemTable The EFI System Table that was passed to the driver's entry point.
289 @param DriverBinding A Driver Binding Protocol instance that this driver is producing.
290 @param DriverBindingHandle The handle that DriverBinding is to be installe onto. If this
291 parameter is NULL, then a new handle is created.
292 @param ComponentName A Component Name Protocol instance that this driver is producing.
293 @param ComponentName2 A Component Name 2 Protocol instance that this driver is producing.
294 @param DriverConfiguration A Driver Configuration Protocol instance that this driver is producing.
295 @param DriverConfiguration2 A Driver Configuration Protocol 2 instance that this driver is producing.
296 @param DriverDiagnostics A Driver Diagnostics Protocol instance that this driver is producing.
297 @param DriverDiagnostics2 A Driver Diagnostics Protocol 2 instance that this driver is producing.
299 @retval EFI_SUCCESS The protocol installation is completed successfully.
300 @retval Others Status from gBS->InstallMultipleProtocolInterfaces().
305 EfiLibInstallAllDriverProtocols2 (
306 IN CONST EFI_HANDLE ImageHandle
,
307 IN CONST EFI_SYSTEM_TABLE
*SystemTable
,
308 IN EFI_DRIVER_BINDING_PROTOCOL
*DriverBinding
,
309 IN EFI_HANDLE DriverBindingHandle
,
310 IN CONST EFI_COMPONENT_NAME_PROTOCOL
*ComponentName
, OPTIONAL
311 IN CONST EFI_COMPONENT_NAME2_PROTOCOL
*ComponentName2
, OPTIONAL
312 IN CONST EFI_DRIVER_CONFIGURATION_PROTOCOL
*DriverConfiguration
, OPTIONAL
313 IN CONST EFI_DRIVER_CONFIGURATION_PROTOCOL
*DriverConfiguration2
, OPTIONAL
314 IN CONST EFI_DRIVER_DIAGNOSTICS_PROTOCOL
*DriverDiagnostics
, OPTIONAL
315 IN CONST EFI_DRIVER_DIAGNOSTICS2_PROTOCOL
*DriverDiagnostics2 OPTIONAL
320 ASSERT (DriverBinding
!= NULL
);
322 if (DriverConfiguration2
== NULL
) {
323 if (DriverConfiguration
== NULL
) {
324 if (DriverDiagnostics
== NULL
|| FeaturePcdGet(PcdDriverDiagnosticsDisable
)) {
325 if (DriverDiagnostics2
== NULL
|| FeaturePcdGet(PcdDriverDiagnostics2Disable
)) {
326 if (ComponentName
== NULL
|| FeaturePcdGet(PcdComponentNameDisable
)) {
327 if (ComponentName2
== NULL
|| FeaturePcdGet(PcdComponentName2Disable
)) {
328 Status
= gBS
->InstallMultipleProtocolInterfaces (
329 &DriverBindingHandle
,
330 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
334 Status
= gBS
->InstallMultipleProtocolInterfaces (
335 &DriverBindingHandle
,
336 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
337 &gEfiComponentName2ProtocolGuid
, ComponentName2
,
342 if (ComponentName2
== NULL
|| FeaturePcdGet(PcdComponentName2Disable
)) {
343 Status
= gBS
->InstallMultipleProtocolInterfaces (
344 &DriverBindingHandle
,
345 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
346 &gEfiComponentNameProtocolGuid
, ComponentName
,
350 Status
= gBS
->InstallMultipleProtocolInterfaces (
351 &DriverBindingHandle
,
352 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
353 &gEfiComponentNameProtocolGuid
, ComponentName
,
354 &gEfiComponentName2ProtocolGuid
, ComponentName2
,
360 if (ComponentName
== NULL
|| FeaturePcdGet(PcdComponentNameDisable
)) {
361 if (ComponentName2
== NULL
|| FeaturePcdGet(PcdComponentName2Disable
)) {
362 Status
= gBS
->InstallMultipleProtocolInterfaces (
363 &DriverBindingHandle
,
364 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
365 &gEfiDriverDiagnostics2ProtocolGuid
, DriverDiagnostics2
,
369 Status
= gBS
->InstallMultipleProtocolInterfaces (
370 &DriverBindingHandle
,
371 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
372 &gEfiComponentName2ProtocolGuid
, ComponentName2
,
373 &gEfiDriverDiagnostics2ProtocolGuid
, DriverDiagnostics2
,
378 if (ComponentName2
== NULL
|| FeaturePcdGet(PcdComponentName2Disable
)) {
379 Status
= gBS
->InstallMultipleProtocolInterfaces (
380 &DriverBindingHandle
,
381 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
382 &gEfiComponentNameProtocolGuid
, ComponentName
,
383 &gEfiDriverDiagnostics2ProtocolGuid
, DriverDiagnostics2
,
387 Status
= gBS
->InstallMultipleProtocolInterfaces (
388 &DriverBindingHandle
,
389 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
390 &gEfiComponentNameProtocolGuid
, ComponentName
,
391 &gEfiComponentName2ProtocolGuid
, ComponentName2
,
392 &gEfiDriverDiagnostics2ProtocolGuid
, DriverDiagnostics2
,
399 if (DriverDiagnostics2
== NULL
|| FeaturePcdGet(PcdDriverDiagnostics2Disable
)) {
400 if (ComponentName
== NULL
|| FeaturePcdGet(PcdComponentNameDisable
)) {
401 if (ComponentName2
== NULL
|| FeaturePcdGet(PcdComponentName2Disable
)) {
402 Status
= gBS
->InstallMultipleProtocolInterfaces (
403 &DriverBindingHandle
,
404 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
405 &gEfiDriverDiagnosticsProtocolGuid
, DriverDiagnostics
,
409 Status
= gBS
->InstallMultipleProtocolInterfaces (
410 &DriverBindingHandle
,
411 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
412 &gEfiComponentName2ProtocolGuid
, ComponentName2
,
413 &gEfiDriverDiagnosticsProtocolGuid
, DriverDiagnostics
,
418 if (ComponentName2
== NULL
|| FeaturePcdGet(PcdComponentName2Disable
)) {
419 Status
= gBS
->InstallMultipleProtocolInterfaces (
420 &DriverBindingHandle
,
421 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
422 &gEfiComponentNameProtocolGuid
, ComponentName
,
423 &gEfiDriverDiagnosticsProtocolGuid
, DriverDiagnostics
,
427 Status
= gBS
->InstallMultipleProtocolInterfaces (
428 &DriverBindingHandle
,
429 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
430 &gEfiComponentNameProtocolGuid
, ComponentName
,
431 &gEfiComponentName2ProtocolGuid
, ComponentName2
,
432 &gEfiDriverDiagnosticsProtocolGuid
, DriverDiagnostics
,
438 if (ComponentName
== NULL
|| FeaturePcdGet(PcdComponentNameDisable
)) {
439 if (ComponentName2
== NULL
|| FeaturePcdGet(PcdComponentName2Disable
)) {
440 Status
= gBS
->InstallMultipleProtocolInterfaces (
441 &DriverBindingHandle
,
442 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
443 &gEfiDriverDiagnosticsProtocolGuid
, DriverDiagnostics
,
444 &gEfiDriverDiagnostics2ProtocolGuid
, DriverDiagnostics2
,
448 Status
= gBS
->InstallMultipleProtocolInterfaces (
449 &DriverBindingHandle
,
450 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
451 &gEfiComponentName2ProtocolGuid
, ComponentName2
,
452 &gEfiDriverDiagnosticsProtocolGuid
, DriverDiagnostics
,
453 &gEfiDriverDiagnostics2ProtocolGuid
, DriverDiagnostics2
,
458 if (ComponentName2
== NULL
|| FeaturePcdGet(PcdComponentName2Disable
)) {
459 Status
= gBS
->InstallMultipleProtocolInterfaces (
460 &DriverBindingHandle
,
461 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
462 &gEfiComponentNameProtocolGuid
, ComponentName
,
463 &gEfiDriverDiagnosticsProtocolGuid
, DriverDiagnostics
,
464 &gEfiDriverDiagnostics2ProtocolGuid
, DriverDiagnostics2
,
468 Status
= gBS
->InstallMultipleProtocolInterfaces (
469 &DriverBindingHandle
,
470 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
471 &gEfiComponentNameProtocolGuid
, ComponentName
,
472 &gEfiComponentName2ProtocolGuid
, ComponentName2
,
473 &gEfiDriverDiagnosticsProtocolGuid
, DriverDiagnostics
,
474 &gEfiDriverDiagnostics2ProtocolGuid
, DriverDiagnostics2
,
482 if (DriverDiagnostics
== NULL
|| FeaturePcdGet(PcdDriverDiagnosticsDisable
)) {
483 if (DriverDiagnostics2
== NULL
|| FeaturePcdGet(PcdDriverDiagnostics2Disable
)) {
484 if (ComponentName
== NULL
|| FeaturePcdGet(PcdComponentNameDisable
)) {
485 if (ComponentName2
== NULL
|| FeaturePcdGet(PcdComponentName2Disable
)) {
486 Status
= gBS
->InstallMultipleProtocolInterfaces (
487 &DriverBindingHandle
,
488 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
489 &gEfiDriverConfigurationProtocolGuid
, DriverConfiguration
,
493 Status
= gBS
->InstallMultipleProtocolInterfaces (
494 &DriverBindingHandle
,
495 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
496 &gEfiComponentName2ProtocolGuid
, ComponentName2
,
497 &gEfiDriverConfigurationProtocolGuid
, DriverConfiguration
,
502 if (ComponentName2
== NULL
|| FeaturePcdGet(PcdComponentName2Disable
)) {
503 Status
= gBS
->InstallMultipleProtocolInterfaces (
504 &DriverBindingHandle
,
505 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
506 &gEfiComponentNameProtocolGuid
, ComponentName
,
507 &gEfiDriverConfigurationProtocolGuid
, DriverConfiguration
,
511 Status
= gBS
->InstallMultipleProtocolInterfaces (
512 &DriverBindingHandle
,
513 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
514 &gEfiComponentNameProtocolGuid
, ComponentName
,
515 &gEfiComponentName2ProtocolGuid
, ComponentName2
,
516 &gEfiDriverConfigurationProtocolGuid
, DriverConfiguration
,
522 if (ComponentName
== NULL
|| FeaturePcdGet(PcdComponentNameDisable
)) {
523 if (ComponentName2
== NULL
|| FeaturePcdGet(PcdComponentName2Disable
)) {
524 Status
= gBS
->InstallMultipleProtocolInterfaces (
525 &DriverBindingHandle
,
526 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
527 &gEfiDriverConfigurationProtocolGuid
, DriverConfiguration
,
528 &gEfiDriverDiagnostics2ProtocolGuid
, DriverDiagnostics2
,
532 Status
= gBS
->InstallMultipleProtocolInterfaces (
533 &DriverBindingHandle
,
534 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
535 &gEfiComponentName2ProtocolGuid
, ComponentName2
,
536 &gEfiDriverConfigurationProtocolGuid
, DriverConfiguration
,
537 &gEfiDriverDiagnostics2ProtocolGuid
, DriverDiagnostics2
,
542 if (ComponentName2
== NULL
|| FeaturePcdGet(PcdComponentName2Disable
)) {
543 Status
= gBS
->InstallMultipleProtocolInterfaces (
544 &DriverBindingHandle
,
545 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
546 &gEfiComponentNameProtocolGuid
, ComponentName
,
547 &gEfiDriverConfigurationProtocolGuid
, DriverConfiguration
,
548 &gEfiDriverDiagnostics2ProtocolGuid
, DriverDiagnostics2
,
552 Status
= gBS
->InstallMultipleProtocolInterfaces (
553 &DriverBindingHandle
,
554 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
555 &gEfiComponentNameProtocolGuid
, ComponentName
,
556 &gEfiComponentName2ProtocolGuid
, ComponentName2
,
557 &gEfiDriverConfigurationProtocolGuid
, DriverConfiguration
,
558 &gEfiDriverDiagnostics2ProtocolGuid
, DriverDiagnostics2
,
565 if (DriverDiagnostics2
== NULL
|| FeaturePcdGet(PcdDriverDiagnostics2Disable
)) {
566 if (ComponentName
== NULL
|| FeaturePcdGet(PcdComponentNameDisable
)) {
567 if (ComponentName2
== NULL
|| FeaturePcdGet(PcdComponentName2Disable
)) {
568 Status
= gBS
->InstallMultipleProtocolInterfaces (
569 &DriverBindingHandle
,
570 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
571 &gEfiDriverConfigurationProtocolGuid
, DriverConfiguration
,
572 &gEfiDriverDiagnosticsProtocolGuid
, DriverDiagnostics
,
576 Status
= gBS
->InstallMultipleProtocolInterfaces (
577 &DriverBindingHandle
,
578 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
579 &gEfiComponentName2ProtocolGuid
, ComponentName2
,
580 &gEfiDriverConfigurationProtocolGuid
, DriverConfiguration
,
581 &gEfiDriverDiagnosticsProtocolGuid
, DriverDiagnostics
,
586 if (ComponentName2
== NULL
|| FeaturePcdGet(PcdComponentName2Disable
)) {
587 Status
= gBS
->InstallMultipleProtocolInterfaces (
588 &DriverBindingHandle
,
589 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
590 &gEfiComponentNameProtocolGuid
, ComponentName
,
591 &gEfiDriverConfigurationProtocolGuid
, DriverConfiguration
,
592 &gEfiDriverDiagnosticsProtocolGuid
, DriverDiagnostics
,
596 Status
= gBS
->InstallMultipleProtocolInterfaces (
597 &DriverBindingHandle
,
598 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
599 &gEfiComponentNameProtocolGuid
, ComponentName
,
600 &gEfiComponentName2ProtocolGuid
, ComponentName2
,
601 &gEfiDriverConfigurationProtocolGuid
, DriverConfiguration
,
602 &gEfiDriverDiagnosticsProtocolGuid
, DriverDiagnostics
,
608 if (ComponentName
== NULL
|| FeaturePcdGet(PcdComponentNameDisable
)) {
609 if (ComponentName2
== NULL
|| FeaturePcdGet(PcdComponentName2Disable
)) {
610 Status
= gBS
->InstallMultipleProtocolInterfaces (
611 &DriverBindingHandle
,
612 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
613 &gEfiDriverConfigurationProtocolGuid
, DriverConfiguration
,
614 &gEfiDriverDiagnosticsProtocolGuid
, DriverDiagnostics
,
615 &gEfiDriverDiagnostics2ProtocolGuid
, DriverDiagnostics2
,
619 Status
= gBS
->InstallMultipleProtocolInterfaces (
620 &DriverBindingHandle
,
621 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
622 &gEfiComponentName2ProtocolGuid
, ComponentName2
,
623 &gEfiDriverConfigurationProtocolGuid
, DriverConfiguration
,
624 &gEfiDriverDiagnosticsProtocolGuid
, DriverDiagnostics
,
625 &gEfiDriverDiagnostics2ProtocolGuid
, DriverDiagnostics2
,
630 if (ComponentName2
== NULL
|| FeaturePcdGet(PcdComponentName2Disable
)) {
631 Status
= gBS
->InstallMultipleProtocolInterfaces (
632 &DriverBindingHandle
,
633 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
634 &gEfiComponentNameProtocolGuid
, ComponentName
,
635 &gEfiDriverConfigurationProtocolGuid
, DriverConfiguration
,
636 &gEfiDriverDiagnosticsProtocolGuid
, DriverDiagnostics
,
637 &gEfiDriverDiagnostics2ProtocolGuid
, DriverDiagnostics2
,
641 Status
= gBS
->InstallMultipleProtocolInterfaces (
642 &DriverBindingHandle
,
643 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
644 &gEfiComponentNameProtocolGuid
, ComponentName
,
645 &gEfiComponentName2ProtocolGuid
, ComponentName2
,
646 &gEfiDriverConfigurationProtocolGuid
, DriverConfiguration
,
647 &gEfiDriverDiagnosticsProtocolGuid
, DriverDiagnostics
,
648 &gEfiDriverDiagnostics2ProtocolGuid
, DriverDiagnostics2
,
657 if (DriverConfiguration
== NULL
) {
658 if (DriverDiagnostics
== NULL
|| FeaturePcdGet(PcdDriverDiagnosticsDisable
)) {
659 if (DriverDiagnostics2
== NULL
|| FeaturePcdGet(PcdDriverDiagnostics2Disable
)) {
660 if (ComponentName
== NULL
|| FeaturePcdGet(PcdComponentNameDisable
)) {
661 if (ComponentName2
== NULL
|| FeaturePcdGet(PcdComponentName2Disable
)) {
662 Status
= gBS
->InstallMultipleProtocolInterfaces (
663 &DriverBindingHandle
,
664 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
665 &gEfiDriverConfiguration2ProtocolGuid
, DriverConfiguration2
,
669 Status
= gBS
->InstallMultipleProtocolInterfaces (
670 &DriverBindingHandle
,
671 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
672 &gEfiComponentName2ProtocolGuid
, ComponentName2
,
673 &gEfiDriverConfiguration2ProtocolGuid
, DriverConfiguration2
,
678 if (ComponentName2
== NULL
|| FeaturePcdGet(PcdComponentName2Disable
)) {
679 Status
= gBS
->InstallMultipleProtocolInterfaces (
680 &DriverBindingHandle
,
681 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
682 &gEfiComponentNameProtocolGuid
, ComponentName
,
683 &gEfiDriverConfiguration2ProtocolGuid
, DriverConfiguration2
,
687 Status
= gBS
->InstallMultipleProtocolInterfaces (
688 &DriverBindingHandle
,
689 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
690 &gEfiComponentNameProtocolGuid
, ComponentName
,
691 &gEfiComponentName2ProtocolGuid
, ComponentName2
,
692 &gEfiDriverConfiguration2ProtocolGuid
, DriverConfiguration2
,
698 if (ComponentName
== NULL
|| FeaturePcdGet(PcdComponentNameDisable
)) {
699 if (ComponentName2
== NULL
|| FeaturePcdGet(PcdComponentName2Disable
)) {
700 Status
= gBS
->InstallMultipleProtocolInterfaces (
701 &DriverBindingHandle
,
702 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
703 &gEfiDriverDiagnostics2ProtocolGuid
, DriverDiagnostics2
,
704 &gEfiDriverConfiguration2ProtocolGuid
, DriverConfiguration2
,
708 Status
= gBS
->InstallMultipleProtocolInterfaces (
709 &DriverBindingHandle
,
710 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
711 &gEfiComponentName2ProtocolGuid
, ComponentName2
,
712 &gEfiDriverConfiguration2ProtocolGuid
, DriverConfiguration2
,
713 &gEfiDriverDiagnostics2ProtocolGuid
, DriverDiagnostics2
,
718 if (ComponentName2
== NULL
|| FeaturePcdGet(PcdComponentName2Disable
)) {
719 Status
= gBS
->InstallMultipleProtocolInterfaces (
720 &DriverBindingHandle
,
721 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
722 &gEfiComponentNameProtocolGuid
, ComponentName
,
723 &gEfiDriverConfiguration2ProtocolGuid
, DriverConfiguration2
,
724 &gEfiDriverDiagnostics2ProtocolGuid
, DriverDiagnostics2
,
728 Status
= gBS
->InstallMultipleProtocolInterfaces (
729 &DriverBindingHandle
,
730 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
731 &gEfiComponentNameProtocolGuid
, ComponentName
,
732 &gEfiComponentName2ProtocolGuid
, ComponentName2
,
733 &gEfiDriverConfiguration2ProtocolGuid
, DriverConfiguration2
,
734 &gEfiDriverDiagnostics2ProtocolGuid
, DriverDiagnostics2
,
741 if (DriverDiagnostics2
== NULL
|| FeaturePcdGet(PcdDriverDiagnostics2Disable
)) {
742 if (ComponentName
== NULL
|| FeaturePcdGet(PcdComponentNameDisable
)) {
743 if (ComponentName2
== NULL
|| FeaturePcdGet(PcdComponentName2Disable
)) {
744 Status
= gBS
->InstallMultipleProtocolInterfaces (
745 &DriverBindingHandle
,
746 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
747 &gEfiDriverDiagnosticsProtocolGuid
, DriverDiagnostics
,
748 &gEfiDriverConfiguration2ProtocolGuid
, DriverConfiguration2
,
752 Status
= gBS
->InstallMultipleProtocolInterfaces (
753 &DriverBindingHandle
,
754 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
755 &gEfiComponentName2ProtocolGuid
, ComponentName2
,
756 &gEfiDriverConfiguration2ProtocolGuid
, DriverConfiguration2
,
757 &gEfiDriverDiagnosticsProtocolGuid
, DriverDiagnostics
,
762 if (ComponentName2
== NULL
|| FeaturePcdGet(PcdComponentName2Disable
)) {
763 Status
= gBS
->InstallMultipleProtocolInterfaces (
764 &DriverBindingHandle
,
765 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
766 &gEfiComponentNameProtocolGuid
, ComponentName
,
767 &gEfiDriverDiagnosticsProtocolGuid
, DriverDiagnostics
,
768 &gEfiDriverConfiguration2ProtocolGuid
, DriverConfiguration2
,
772 Status
= gBS
->InstallMultipleProtocolInterfaces (
773 &DriverBindingHandle
,
774 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
775 &gEfiComponentNameProtocolGuid
, ComponentName
,
776 &gEfiComponentName2ProtocolGuid
, ComponentName2
,
777 &gEfiDriverConfiguration2ProtocolGuid
, DriverConfiguration2
,
778 &gEfiDriverDiagnosticsProtocolGuid
, DriverDiagnostics
,
784 if (ComponentName
== NULL
|| FeaturePcdGet(PcdComponentNameDisable
)) {
785 if (ComponentName2
== NULL
|| FeaturePcdGet(PcdComponentName2Disable
)) {
786 Status
= gBS
->InstallMultipleProtocolInterfaces (
787 &DriverBindingHandle
,
788 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
789 &gEfiDriverConfiguration2ProtocolGuid
, DriverConfiguration2
,
790 &gEfiDriverDiagnosticsProtocolGuid
, DriverDiagnostics
,
791 &gEfiDriverDiagnostics2ProtocolGuid
, DriverDiagnostics2
,
795 Status
= gBS
->InstallMultipleProtocolInterfaces (
796 &DriverBindingHandle
,
797 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
798 &gEfiComponentName2ProtocolGuid
, ComponentName2
,
799 &gEfiDriverConfiguration2ProtocolGuid
, DriverConfiguration2
,
800 &gEfiDriverDiagnosticsProtocolGuid
, DriverDiagnostics
,
801 &gEfiDriverDiagnostics2ProtocolGuid
, DriverDiagnostics2
,
806 if (ComponentName2
== NULL
|| FeaturePcdGet(PcdComponentName2Disable
)) {
807 Status
= gBS
->InstallMultipleProtocolInterfaces (
808 &DriverBindingHandle
,
809 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
810 &gEfiComponentNameProtocolGuid
, ComponentName
,
811 &gEfiDriverConfiguration2ProtocolGuid
, DriverConfiguration2
,
812 &gEfiDriverDiagnosticsProtocolGuid
, DriverDiagnostics
,
813 &gEfiDriverDiagnostics2ProtocolGuid
, DriverDiagnostics2
,
817 Status
= gBS
->InstallMultipleProtocolInterfaces (
818 &DriverBindingHandle
,
819 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
820 &gEfiComponentNameProtocolGuid
, ComponentName
,
821 &gEfiComponentName2ProtocolGuid
, ComponentName2
,
822 &gEfiDriverConfiguration2ProtocolGuid
, DriverConfiguration2
,
823 &gEfiDriverDiagnosticsProtocolGuid
, DriverDiagnostics
,
824 &gEfiDriverDiagnostics2ProtocolGuid
, DriverDiagnostics2
,
832 if (DriverDiagnostics
== NULL
|| FeaturePcdGet(PcdDriverDiagnosticsDisable
)) {
833 if (DriverDiagnostics2
== NULL
|| FeaturePcdGet(PcdDriverDiagnostics2Disable
)) {
834 if (ComponentName
== NULL
|| FeaturePcdGet(PcdComponentNameDisable
)) {
835 if (ComponentName2
== NULL
|| FeaturePcdGet(PcdComponentName2Disable
)) {
836 Status
= gBS
->InstallMultipleProtocolInterfaces (
837 &DriverBindingHandle
,
838 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
839 &gEfiDriverConfigurationProtocolGuid
, DriverConfiguration
,
840 &gEfiDriverConfiguration2ProtocolGuid
, DriverConfiguration2
,
844 Status
= gBS
->InstallMultipleProtocolInterfaces (
845 &DriverBindingHandle
,
846 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
847 &gEfiComponentName2ProtocolGuid
, ComponentName2
,
848 &gEfiDriverConfigurationProtocolGuid
, DriverConfiguration
,
849 &gEfiDriverConfiguration2ProtocolGuid
, DriverConfiguration2
,
854 if (ComponentName2
== NULL
|| FeaturePcdGet(PcdComponentName2Disable
)) {
855 Status
= gBS
->InstallMultipleProtocolInterfaces (
856 &DriverBindingHandle
,
857 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
858 &gEfiComponentNameProtocolGuid
, ComponentName
,
859 &gEfiDriverConfigurationProtocolGuid
, DriverConfiguration
,
860 &gEfiDriverConfiguration2ProtocolGuid
, DriverConfiguration2
,
864 Status
= gBS
->InstallMultipleProtocolInterfaces (
865 &DriverBindingHandle
,
866 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
867 &gEfiComponentNameProtocolGuid
, ComponentName
,
868 &gEfiComponentName2ProtocolGuid
, ComponentName2
,
869 &gEfiDriverConfigurationProtocolGuid
, DriverConfiguration
,
870 &gEfiDriverConfiguration2ProtocolGuid
, DriverConfiguration2
,
876 if (ComponentName
== NULL
|| FeaturePcdGet(PcdComponentNameDisable
)) {
877 if (ComponentName2
== NULL
|| FeaturePcdGet(PcdComponentName2Disable
)) {
878 Status
= gBS
->InstallMultipleProtocolInterfaces (
879 &DriverBindingHandle
,
880 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
881 &gEfiDriverConfigurationProtocolGuid
, DriverConfiguration
,
882 &gEfiDriverConfiguration2ProtocolGuid
, DriverConfiguration2
,
883 &gEfiDriverDiagnostics2ProtocolGuid
, DriverDiagnostics2
,
887 Status
= gBS
->InstallMultipleProtocolInterfaces (
888 &DriverBindingHandle
,
889 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
890 &gEfiComponentName2ProtocolGuid
, ComponentName2
,
891 &gEfiDriverConfigurationProtocolGuid
, DriverConfiguration
,
892 &gEfiDriverConfiguration2ProtocolGuid
, DriverConfiguration2
,
893 &gEfiDriverDiagnostics2ProtocolGuid
, DriverDiagnostics2
,
898 if (ComponentName2
== NULL
|| FeaturePcdGet(PcdComponentName2Disable
)) {
899 Status
= gBS
->InstallMultipleProtocolInterfaces (
900 &DriverBindingHandle
,
901 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
902 &gEfiComponentNameProtocolGuid
, ComponentName
,
903 &gEfiDriverConfigurationProtocolGuid
, DriverConfiguration
,
904 &gEfiDriverConfiguration2ProtocolGuid
, DriverConfiguration2
,
905 &gEfiDriverDiagnostics2ProtocolGuid
, DriverDiagnostics2
,
909 Status
= gBS
->InstallMultipleProtocolInterfaces (
910 &DriverBindingHandle
,
911 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
912 &gEfiComponentNameProtocolGuid
, ComponentName
,
913 &gEfiComponentName2ProtocolGuid
, ComponentName2
,
914 &gEfiDriverConfigurationProtocolGuid
, DriverConfiguration
,
915 &gEfiDriverConfiguration2ProtocolGuid
, DriverConfiguration2
,
916 &gEfiDriverDiagnostics2ProtocolGuid
, DriverDiagnostics2
,
923 if (DriverDiagnostics2
== NULL
|| FeaturePcdGet(PcdDriverDiagnostics2Disable
)) {
924 if (ComponentName
== NULL
|| FeaturePcdGet(PcdComponentNameDisable
)) {
925 if (ComponentName2
== NULL
|| FeaturePcdGet(PcdComponentName2Disable
)) {
926 Status
= gBS
->InstallMultipleProtocolInterfaces (
927 &DriverBindingHandle
,
928 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
929 &gEfiDriverConfigurationProtocolGuid
, DriverConfiguration
,
930 &gEfiDriverConfiguration2ProtocolGuid
, DriverConfiguration2
,
931 &gEfiDriverDiagnosticsProtocolGuid
, DriverDiagnostics
,
935 Status
= gBS
->InstallMultipleProtocolInterfaces (
936 &DriverBindingHandle
,
937 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
938 &gEfiComponentName2ProtocolGuid
, ComponentName2
,
939 &gEfiDriverConfigurationProtocolGuid
, DriverConfiguration
,
940 &gEfiDriverConfiguration2ProtocolGuid
, DriverConfiguration2
,
941 &gEfiDriverDiagnosticsProtocolGuid
, DriverDiagnostics
,
946 if (ComponentName2
== NULL
|| FeaturePcdGet(PcdComponentName2Disable
)) {
947 Status
= gBS
->InstallMultipleProtocolInterfaces (
948 &DriverBindingHandle
,
949 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
950 &gEfiComponentNameProtocolGuid
, ComponentName
,
951 &gEfiDriverConfigurationProtocolGuid
, DriverConfiguration
,
952 &gEfiDriverConfiguration2ProtocolGuid
, DriverConfiguration2
,
953 &gEfiDriverDiagnosticsProtocolGuid
, DriverDiagnostics
,
957 Status
= gBS
->InstallMultipleProtocolInterfaces (
958 &DriverBindingHandle
,
959 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
960 &gEfiComponentNameProtocolGuid
, ComponentName
,
961 &gEfiComponentName2ProtocolGuid
, ComponentName2
,
962 &gEfiDriverConfigurationProtocolGuid
, DriverConfiguration
,
963 &gEfiDriverConfiguration2ProtocolGuid
, DriverConfiguration2
,
964 &gEfiDriverDiagnosticsProtocolGuid
, DriverDiagnostics
,
970 if (ComponentName
== NULL
|| FeaturePcdGet(PcdComponentNameDisable
)) {
971 if (ComponentName2
== NULL
|| FeaturePcdGet(PcdComponentName2Disable
)) {
972 Status
= gBS
->InstallMultipleProtocolInterfaces (
973 &DriverBindingHandle
,
974 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
975 &gEfiDriverConfigurationProtocolGuid
, DriverConfiguration
,
976 &gEfiDriverConfiguration2ProtocolGuid
, DriverConfiguration2
,
977 &gEfiDriverDiagnosticsProtocolGuid
, DriverDiagnostics
,
978 &gEfiDriverDiagnostics2ProtocolGuid
, DriverDiagnostics2
,
982 Status
= gBS
->InstallMultipleProtocolInterfaces (
983 &DriverBindingHandle
,
984 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
985 &gEfiComponentName2ProtocolGuid
, ComponentName2
,
986 &gEfiDriverConfigurationProtocolGuid
, DriverConfiguration
,
987 &gEfiDriverConfiguration2ProtocolGuid
, DriverConfiguration2
,
988 &gEfiDriverDiagnosticsProtocolGuid
, DriverDiagnostics
,
989 &gEfiDriverDiagnostics2ProtocolGuid
, DriverDiagnostics2
,
994 if (ComponentName2
== NULL
|| FeaturePcdGet(PcdComponentName2Disable
)) {
995 Status
= gBS
->InstallMultipleProtocolInterfaces (
996 &DriverBindingHandle
,
997 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
998 &gEfiComponentNameProtocolGuid
, ComponentName
,
999 &gEfiDriverConfigurationProtocolGuid
, DriverConfiguration
,
1000 &gEfiDriverConfiguration2ProtocolGuid
, DriverConfiguration2
,
1001 &gEfiDriverDiagnosticsProtocolGuid
, DriverDiagnostics
,
1002 &gEfiDriverDiagnostics2ProtocolGuid
, DriverDiagnostics2
,
1006 Status
= gBS
->InstallMultipleProtocolInterfaces (
1007 &DriverBindingHandle
,
1008 &gEfiDriverBindingProtocolGuid
, DriverBinding
,
1009 &gEfiComponentNameProtocolGuid
, ComponentName
,
1010 &gEfiComponentName2ProtocolGuid
, ComponentName2
,
1011 &gEfiDriverConfigurationProtocolGuid
, DriverConfiguration
,
1012 &gEfiDriverConfiguration2ProtocolGuid
, DriverConfiguration2
,
1013 &gEfiDriverDiagnosticsProtocolGuid
, DriverDiagnostics
,
1014 &gEfiDriverDiagnostics2ProtocolGuid
, DriverDiagnostics2
,
1026 // ASSERT if the call to InstallMultipleProtocolInterfaces() failed
1028 ASSERT_EFI_ERROR (Status
);
1031 // Update the ImageHandle and DriverBindingHandle fields of the Driver Binding Protocol
1033 DriverBinding
->ImageHandle
= ImageHandle
;
1034 DriverBinding
->DriverBindingHandle
= DriverBindingHandle
;