]> git.proxmox.com Git - mirror_edk2.git/blob - IntelFrameworkPkg/Library/FrameworkUefiLib/UefiDriverModel.c
BaseTools/Capsule: Do not support -o with --dump-info
[mirror_edk2.git] / IntelFrameworkPkg / Library / FrameworkUefiLib / UefiDriverModel.c
1 /** @file
2 Library functions that abstract driver model protocols
3 installation.
4
5 Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
6 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
10
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.
13
14 **/
15
16
17 #include "UefiLibInternal.h"
18
19 /**
20 Installs and completes the initialization of a Driver Binding Protocol instance.
21
22 Installs the Driver Binding Protocol specified by DriverBinding onto the handle
23 specified by DriverBindingHandle. If DriverBindingHandle is NULL, then DriverBinding
24 is installed onto a newly created handle. DriverBindingHandle is typically the same
25 as the driver's ImageHandle, but it can be different if the driver produces multiple
26 Driver Binding Protocols.
27 If DriverBinding is NULL, then ASSERT().
28 If DriverBinding can not be installed onto a handle, then ASSERT().
29
30 @param ImageHandle The image handle of the driver.
31 @param SystemTable The EFI System Table that was passed to the driver's entry point.
32 @param DriverBinding A Driver Binding Protocol instance that this driver is producing.
33 @param DriverBindingHandle The handle that DriverBinding is to be installed onto. If this
34 parameter is NULL, then a new handle is created.
35
36 @retval EFI_SUCCESS The protocol installation is completed successfully.
37 @retval EFI_OUT_OF_RESOURCES There was not enough system resources to install the protocol.
38 @retval Others Status from gBS->InstallMultipleProtocolInterfaces().
39
40 **/
41 EFI_STATUS
42 EFIAPI
43 EfiLibInstallDriverBinding (
44 IN CONST EFI_HANDLE ImageHandle,
45 IN CONST EFI_SYSTEM_TABLE *SystemTable,
46 IN EFI_DRIVER_BINDING_PROTOCOL *DriverBinding,
47 IN EFI_HANDLE DriverBindingHandle
48 )
49 {
50 EFI_STATUS Status;
51
52 ASSERT (DriverBinding != NULL);
53
54 //
55 // Update the ImageHandle and DriverBindingHandle fields of the Driver Binding Protocol
56 //
57 DriverBinding->ImageHandle = ImageHandle;
58 DriverBinding->DriverBindingHandle = DriverBindingHandle;
59
60 Status = gBS->InstallMultipleProtocolInterfaces (
61 &DriverBinding->DriverBindingHandle,
62 &gEfiDriverBindingProtocolGuid, DriverBinding,
63 NULL
64 );
65 //
66 // ASSERT if the call to InstallMultipleProtocolInterfaces() failed
67 //
68 ASSERT_EFI_ERROR (Status);
69
70 return Status;
71 }
72
73
74 /**
75 Installs and completes the initialization of a Driver Binding Protocol instance and
76 optionally installs the Component Name, Driver Configuration and Driver Diagnostics Protocols.
77
78 Initializes a driver by installing the Driver Binding Protocol together with the
79 optional Component Name, optional Driver Configure and optional Driver Diagnostic
80 Protocols onto the driver's DriverBindingHandle. If DriverBindingHandle is NULL,
81 then the protocols are installed onto a newly created handle. DriverBindingHandle
82 is typically the same as the driver's ImageHandle, but it can be different if the
83 driver produces multiple Driver Binding Protocols.
84 If DriverBinding is NULL, then ASSERT().
85 If the installation fails, then ASSERT().
86
87 @param ImageHandle The image handle of the driver.
88 @param SystemTable The EFI System Table that was passed to the driver's entry point.
89 @param DriverBinding A Driver Binding Protocol instance that this driver is producing.
90 @param DriverBindingHandle The handle that DriverBinding is to be installed onto. If this
91 parameter is NULL, then a new handle is created.
92 @param ComponentName A Component Name Protocol instance that this driver is producing.
93 @param DriverConfiguration A Driver Configuration Protocol instance that this driver is producing.
94 @param DriverDiagnostics A Driver Diagnostics Protocol instance that this driver is producing.
95
96 @retval EFI_SUCCESS The protocol installation is completed successfully.
97 @retval EFI_OUT_OF_RESOURCES There was not enough memory in pool to install all the protocols.
98
99 **/
100 EFI_STATUS
101 EFIAPI
102 EfiLibInstallAllDriverProtocols (
103 IN CONST EFI_HANDLE ImageHandle,
104 IN CONST EFI_SYSTEM_TABLE *SystemTable,
105 IN EFI_DRIVER_BINDING_PROTOCOL *DriverBinding,
106 IN EFI_HANDLE DriverBindingHandle,
107 IN CONST EFI_COMPONENT_NAME_PROTOCOL *ComponentName, OPTIONAL
108 IN CONST EFI_DRIVER_CONFIGURATION_PROTOCOL *DriverConfiguration, OPTIONAL
109 IN CONST EFI_DRIVER_DIAGNOSTICS_PROTOCOL *DriverDiagnostics OPTIONAL
110 )
111 {
112 EFI_STATUS Status;
113
114 ASSERT (DriverBinding != NULL);
115
116 //
117 // Update the ImageHandle and DriverBindingHandle fields of the Driver Binding Protocol
118 //
119 DriverBinding->ImageHandle = ImageHandle;
120 DriverBinding->DriverBindingHandle = DriverBindingHandle;
121
122 if (DriverDiagnostics == NULL || FeaturePcdGet(PcdDriverDiagnosticsDisable)) {
123 if (DriverConfiguration == NULL) {
124 if (ComponentName == NULL || FeaturePcdGet(PcdComponentNameDisable)) {
125 Status = gBS->InstallMultipleProtocolInterfaces (
126 &DriverBinding->DriverBindingHandle,
127 &gEfiDriverBindingProtocolGuid, DriverBinding,
128 NULL
129 );
130 } else {
131 Status = gBS->InstallMultipleProtocolInterfaces (
132 &DriverBinding->DriverBindingHandle,
133 &gEfiDriverBindingProtocolGuid, DriverBinding,
134 &gEfiComponentNameProtocolGuid, ComponentName,
135 NULL
136 );
137 }
138 } else {
139 if (ComponentName == NULL || FeaturePcdGet(PcdComponentNameDisable)) {
140 Status = gBS->InstallMultipleProtocolInterfaces (
141 &DriverBinding->DriverBindingHandle,
142 &gEfiDriverBindingProtocolGuid, DriverBinding,
143 &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,
144 NULL
145 );
146 } else {
147 Status = gBS->InstallMultipleProtocolInterfaces (
148 &DriverBinding->DriverBindingHandle,
149 &gEfiDriverBindingProtocolGuid, DriverBinding,
150 &gEfiComponentNameProtocolGuid, ComponentName,
151 &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,
152 NULL
153 );
154 }
155 }
156 } else {
157 if (DriverConfiguration == NULL) {
158 if (ComponentName == NULL || FeaturePcdGet(PcdComponentNameDisable)) {
159 Status = gBS->InstallMultipleProtocolInterfaces (
160 &DriverBinding->DriverBindingHandle,
161 &gEfiDriverBindingProtocolGuid, DriverBinding,
162 &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
163 NULL
164 );
165 } else {
166 Status = gBS->InstallMultipleProtocolInterfaces (
167 &DriverBinding->DriverBindingHandle,
168 &gEfiDriverBindingProtocolGuid, DriverBinding,
169 &gEfiComponentNameProtocolGuid, ComponentName,
170 &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
171 NULL
172 );
173 }
174 } else {
175 if (ComponentName == NULL || FeaturePcdGet(PcdComponentNameDisable)) {
176 Status = gBS->InstallMultipleProtocolInterfaces (
177 &DriverBinding->DriverBindingHandle,
178 &gEfiDriverBindingProtocolGuid, DriverBinding,
179 &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,
180 &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
181 NULL
182 );
183 } else {
184 Status = gBS->InstallMultipleProtocolInterfaces (
185 &DriverBinding->DriverBindingHandle,
186 &gEfiDriverBindingProtocolGuid, DriverBinding,
187 &gEfiComponentNameProtocolGuid, ComponentName,
188 &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,
189 &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
190 NULL
191 );
192 }
193 }
194 }
195
196 //
197 // ASSERT if the call to InstallMultipleProtocolInterfaces() failed
198 //
199 ASSERT_EFI_ERROR (Status);
200
201 return Status;
202 }
203
204
205
206 /**
207 Installs Driver Binding Protocol with optional Component Name and Component Name 2 Protocols.
208
209 Initializes a driver by installing the Driver Binding Protocol together with the
210 optional Component Name and optional Component Name 2 protocols onto the driver's
211 DriverBindingHandle. If DriverBindingHandle is NULL, then the protocols are installed
212 onto a newly created handle. DriverBindingHandle is typically the same as the driver's
213 ImageHandle, but it can be different if the driver produces multiple Driver Binding Protocols.
214 If DriverBinding is NULL, then ASSERT().
215 If the installation fails, then ASSERT().
216
217 @param ImageHandle The image handle of the driver.
218 @param SystemTable The EFI System Table that was passed to the driver's entry point.
219 @param DriverBinding A Driver Binding Protocol instance that this driver is producing.
220 @param DriverBindingHandle The handle that DriverBinding is to be installed onto. If this
221 parameter is NULL, then a new handle is created.
222 @param ComponentName A Component Name Protocol instance that this driver is producing.
223 @param ComponentName2 A Component Name 2 Protocol instance that this driver is producing.
224
225 @retval EFI_SUCCESS The protocol installation is completed successfully.
226 @retval EFI_OUT_OF_RESOURCES There was not enough memory in pool to install all the protocols.
227
228 **/
229 EFI_STATUS
230 EFIAPI
231 EfiLibInstallDriverBindingComponentName2 (
232 IN CONST EFI_HANDLE ImageHandle,
233 IN CONST EFI_SYSTEM_TABLE *SystemTable,
234 IN EFI_DRIVER_BINDING_PROTOCOL *DriverBinding,
235 IN EFI_HANDLE DriverBindingHandle,
236 IN CONST EFI_COMPONENT_NAME_PROTOCOL *ComponentName, OPTIONAL
237 IN CONST EFI_COMPONENT_NAME2_PROTOCOL *ComponentName2 OPTIONAL
238 )
239 {
240 EFI_STATUS Status;
241
242 ASSERT (DriverBinding != NULL);
243
244 //
245 // Update the ImageHandle and DriverBindingHandle fields of the Driver Binding Protocol
246 //
247 DriverBinding->ImageHandle = ImageHandle;
248 DriverBinding->DriverBindingHandle = DriverBindingHandle;
249
250 if (ComponentName == NULL || FeaturePcdGet(PcdComponentNameDisable)) {
251 if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {
252 Status = gBS->InstallMultipleProtocolInterfaces (
253 &DriverBinding->DriverBindingHandle,
254 &gEfiDriverBindingProtocolGuid, DriverBinding,
255 NULL
256 );
257 } else {
258 Status = gBS->InstallMultipleProtocolInterfaces (
259 &DriverBinding->DriverBindingHandle,
260 &gEfiDriverBindingProtocolGuid, DriverBinding,
261 &gEfiComponentName2ProtocolGuid, ComponentName2,
262 NULL
263 );
264 }
265 } else {
266 if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {
267 Status = gBS->InstallMultipleProtocolInterfaces (
268 &DriverBinding->DriverBindingHandle,
269 &gEfiDriverBindingProtocolGuid, DriverBinding,
270 &gEfiComponentNameProtocolGuid, ComponentName,
271 NULL
272 );
273 } else {
274 Status = gBS->InstallMultipleProtocolInterfaces (
275 &DriverBinding->DriverBindingHandle,
276 &gEfiDriverBindingProtocolGuid, DriverBinding,
277 &gEfiComponentNameProtocolGuid, ComponentName,
278 &gEfiComponentName2ProtocolGuid, ComponentName2,
279 NULL
280 );
281 }
282 }
283
284 //
285 // ASSERT if the call to InstallMultipleProtocolInterfaces() failed
286 //
287 ASSERT_EFI_ERROR (Status);
288
289 return Status;
290 }
291
292
293
294 /**
295 Installs Driver Binding Protocol with optional Component Name, Component Name 2, Driver
296 Configuration, Driver Configuration 2, Driver Diagnostics, and Driver Diagnostics 2 Protocols.
297
298 Initializes a driver by installing the Driver Binding Protocol together with the optional
299 Component Name, optional Component Name 2, optional Driver Configuration, optional Driver Configuration 2,
300 optional Driver Diagnostic, and optional Driver Diagnostic 2 Protocols onto the driver's DriverBindingHandle.
301 DriverBindingHandle is typically the same as the driver's ImageHandle, but it can be different if the driver
302 produces multiple Driver Binding Protocols.
303 If DriverBinding is NULL, then ASSERT().
304 If the installation fails, then ASSERT().
305
306
307 @param ImageHandle The image handle of the driver.
308 @param SystemTable The EFI System Table that was passed to the driver's entry point.
309 @param DriverBinding A Driver Binding Protocol instance that this driver is producing.
310 @param DriverBindingHandle The handle that DriverBinding is to be installed onto. If this
311 parameter is NULL, then a new handle is created.
312 @param ComponentName A Component Name Protocol instance that this driver is producing.
313 @param ComponentName2 A Component Name 2 Protocol instance that this driver is producing.
314 @param DriverConfiguration A Driver Configuration Protocol instance that this driver is producing.
315 @param DriverConfiguration2 A Driver Configuration Protocol 2 instance that this driver is producing.
316 @param DriverDiagnostics A Driver Diagnostics Protocol instance that this driver is producing.
317 @param DriverDiagnostics2 A Driver Diagnostics Protocol 2 instance that this driver is producing.
318
319 @retval EFI_SUCCESS The protocol installation is completed successfully.
320 @retval EFI_OUT_OF_RESOURCES There was not enough memory in pool to install all the protocols.
321
322 **/
323 EFI_STATUS
324 EFIAPI
325 EfiLibInstallAllDriverProtocols2 (
326 IN CONST EFI_HANDLE ImageHandle,
327 IN CONST EFI_SYSTEM_TABLE *SystemTable,
328 IN EFI_DRIVER_BINDING_PROTOCOL *DriverBinding,
329 IN EFI_HANDLE DriverBindingHandle,
330 IN CONST EFI_COMPONENT_NAME_PROTOCOL *ComponentName, OPTIONAL
331 IN CONST EFI_COMPONENT_NAME2_PROTOCOL *ComponentName2, OPTIONAL
332 IN CONST EFI_DRIVER_CONFIGURATION_PROTOCOL *DriverConfiguration, OPTIONAL
333 IN CONST EFI_DRIVER_CONFIGURATION2_PROTOCOL *DriverConfiguration2, OPTIONAL
334 IN CONST EFI_DRIVER_DIAGNOSTICS_PROTOCOL *DriverDiagnostics, OPTIONAL
335 IN CONST EFI_DRIVER_DIAGNOSTICS2_PROTOCOL *DriverDiagnostics2 OPTIONAL
336 )
337 {
338 EFI_STATUS Status;
339
340 ASSERT (DriverBinding != NULL);
341
342 //
343 // Update the ImageHandle and DriverBindingHandle fields of the Driver Binding Protocol
344 //
345 DriverBinding->ImageHandle = ImageHandle;
346 DriverBinding->DriverBindingHandle = DriverBindingHandle;
347
348 if (DriverConfiguration2 == NULL) {
349 if (DriverConfiguration == NULL) {
350 if (DriverDiagnostics == NULL || FeaturePcdGet(PcdDriverDiagnosticsDisable)) {
351 if (DriverDiagnostics2 == NULL || FeaturePcdGet(PcdDriverDiagnostics2Disable)) {
352 if (ComponentName == NULL || FeaturePcdGet(PcdComponentNameDisable)) {
353 if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {
354 Status = gBS->InstallMultipleProtocolInterfaces (
355 &DriverBinding->DriverBindingHandle,
356 &gEfiDriverBindingProtocolGuid, DriverBinding,
357 NULL
358 );
359 } else {
360 Status = gBS->InstallMultipleProtocolInterfaces (
361 &DriverBinding->DriverBindingHandle,
362 &gEfiDriverBindingProtocolGuid, DriverBinding,
363 &gEfiComponentName2ProtocolGuid, ComponentName2,
364 NULL
365 );
366 }
367 } else {
368 if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {
369 Status = gBS->InstallMultipleProtocolInterfaces (
370 &DriverBinding->DriverBindingHandle,
371 &gEfiDriverBindingProtocolGuid, DriverBinding,
372 &gEfiComponentNameProtocolGuid, ComponentName,
373 NULL
374 );
375 } else {
376 Status = gBS->InstallMultipleProtocolInterfaces (
377 &DriverBinding->DriverBindingHandle,
378 &gEfiDriverBindingProtocolGuid, DriverBinding,
379 &gEfiComponentNameProtocolGuid, ComponentName,
380 &gEfiComponentName2ProtocolGuid, ComponentName2,
381 NULL
382 );
383 }
384 }
385 } else {
386 if (ComponentName == NULL || FeaturePcdGet(PcdComponentNameDisable)) {
387 if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {
388 Status = gBS->InstallMultipleProtocolInterfaces (
389 &DriverBinding->DriverBindingHandle,
390 &gEfiDriverBindingProtocolGuid, DriverBinding,
391 &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,
392 NULL
393 );
394 } else {
395 Status = gBS->InstallMultipleProtocolInterfaces (
396 &DriverBinding->DriverBindingHandle,
397 &gEfiDriverBindingProtocolGuid, DriverBinding,
398 &gEfiComponentName2ProtocolGuid, ComponentName2,
399 &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,
400 NULL
401 );
402 }
403 } else {
404 if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {
405 Status = gBS->InstallMultipleProtocolInterfaces (
406 &DriverBinding->DriverBindingHandle,
407 &gEfiDriverBindingProtocolGuid, DriverBinding,
408 &gEfiComponentNameProtocolGuid, ComponentName,
409 &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,
410 NULL
411 );
412 } else {
413 Status = gBS->InstallMultipleProtocolInterfaces (
414 &DriverBinding->DriverBindingHandle,
415 &gEfiDriverBindingProtocolGuid, DriverBinding,
416 &gEfiComponentNameProtocolGuid, ComponentName,
417 &gEfiComponentName2ProtocolGuid, ComponentName2,
418 &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,
419 NULL
420 );
421 }
422 }
423 }
424 } else {
425 if (DriverDiagnostics2 == NULL || FeaturePcdGet(PcdDriverDiagnostics2Disable)) {
426 if (ComponentName == NULL || FeaturePcdGet(PcdComponentNameDisable)) {
427 if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {
428 Status = gBS->InstallMultipleProtocolInterfaces (
429 &DriverBinding->DriverBindingHandle,
430 &gEfiDriverBindingProtocolGuid, DriverBinding,
431 &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
432 NULL
433 );
434 } else {
435 Status = gBS->InstallMultipleProtocolInterfaces (
436 &DriverBinding->DriverBindingHandle,
437 &gEfiDriverBindingProtocolGuid, DriverBinding,
438 &gEfiComponentName2ProtocolGuid, ComponentName2,
439 &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
440 NULL
441 );
442 }
443 } else {
444 if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {
445 Status = gBS->InstallMultipleProtocolInterfaces (
446 &DriverBinding->DriverBindingHandle,
447 &gEfiDriverBindingProtocolGuid, DriverBinding,
448 &gEfiComponentNameProtocolGuid, ComponentName,
449 &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
450 NULL
451 );
452 } else {
453 Status = gBS->InstallMultipleProtocolInterfaces (
454 &DriverBinding->DriverBindingHandle,
455 &gEfiDriverBindingProtocolGuid, DriverBinding,
456 &gEfiComponentNameProtocolGuid, ComponentName,
457 &gEfiComponentName2ProtocolGuid, ComponentName2,
458 &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
459 NULL
460 );
461 }
462 }
463 } else {
464 if (ComponentName == NULL || FeaturePcdGet(PcdComponentNameDisable)) {
465 if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {
466 Status = gBS->InstallMultipleProtocolInterfaces (
467 &DriverBinding->DriverBindingHandle,
468 &gEfiDriverBindingProtocolGuid, DriverBinding,
469 &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
470 &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,
471 NULL
472 );
473 } else {
474 Status = gBS->InstallMultipleProtocolInterfaces (
475 &DriverBinding->DriverBindingHandle,
476 &gEfiDriverBindingProtocolGuid, DriverBinding,
477 &gEfiComponentName2ProtocolGuid, ComponentName2,
478 &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
479 &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,
480 NULL
481 );
482 }
483 } else {
484 if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {
485 Status = gBS->InstallMultipleProtocolInterfaces (
486 &DriverBinding->DriverBindingHandle,
487 &gEfiDriverBindingProtocolGuid, DriverBinding,
488 &gEfiComponentNameProtocolGuid, ComponentName,
489 &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
490 &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,
491 NULL
492 );
493 } else {
494 Status = gBS->InstallMultipleProtocolInterfaces (
495 &DriverBinding->DriverBindingHandle,
496 &gEfiDriverBindingProtocolGuid, DriverBinding,
497 &gEfiComponentNameProtocolGuid, ComponentName,
498 &gEfiComponentName2ProtocolGuid, ComponentName2,
499 &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
500 &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,
501 NULL
502 );
503 }
504 }
505 }
506 }
507 } else {
508 if (DriverDiagnostics == NULL || FeaturePcdGet(PcdDriverDiagnosticsDisable)) {
509 if (DriverDiagnostics2 == NULL || FeaturePcdGet(PcdDriverDiagnostics2Disable)) {
510 if (ComponentName == NULL || FeaturePcdGet(PcdComponentNameDisable)) {
511 if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {
512 Status = gBS->InstallMultipleProtocolInterfaces (
513 &DriverBinding->DriverBindingHandle,
514 &gEfiDriverBindingProtocolGuid, DriverBinding,
515 &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,
516 NULL
517 );
518 } else {
519 Status = gBS->InstallMultipleProtocolInterfaces (
520 &DriverBinding->DriverBindingHandle,
521 &gEfiDriverBindingProtocolGuid, DriverBinding,
522 &gEfiComponentName2ProtocolGuid, ComponentName2,
523 &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,
524 NULL
525 );
526 }
527 } else {
528 if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {
529 Status = gBS->InstallMultipleProtocolInterfaces (
530 &DriverBinding->DriverBindingHandle,
531 &gEfiDriverBindingProtocolGuid, DriverBinding,
532 &gEfiComponentNameProtocolGuid, ComponentName,
533 &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,
534 NULL
535 );
536 } else {
537 Status = gBS->InstallMultipleProtocolInterfaces (
538 &DriverBinding->DriverBindingHandle,
539 &gEfiDriverBindingProtocolGuid, DriverBinding,
540 &gEfiComponentNameProtocolGuid, ComponentName,
541 &gEfiComponentName2ProtocolGuid, ComponentName2,
542 &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,
543 NULL
544 );
545 }
546 }
547 } else {
548 if (ComponentName == NULL || FeaturePcdGet(PcdComponentNameDisable)) {
549 if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {
550 Status = gBS->InstallMultipleProtocolInterfaces (
551 &DriverBinding->DriverBindingHandle,
552 &gEfiDriverBindingProtocolGuid, DriverBinding,
553 &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,
554 &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,
555 NULL
556 );
557 } else {
558 Status = gBS->InstallMultipleProtocolInterfaces (
559 &DriverBinding->DriverBindingHandle,
560 &gEfiDriverBindingProtocolGuid, DriverBinding,
561 &gEfiComponentName2ProtocolGuid, ComponentName2,
562 &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,
563 &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,
564 NULL
565 );
566 }
567 } else {
568 if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {
569 Status = gBS->InstallMultipleProtocolInterfaces (
570 &DriverBinding->DriverBindingHandle,
571 &gEfiDriverBindingProtocolGuid, DriverBinding,
572 &gEfiComponentNameProtocolGuid, ComponentName,
573 &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,
574 &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,
575 NULL
576 );
577 } else {
578 Status = gBS->InstallMultipleProtocolInterfaces (
579 &DriverBinding->DriverBindingHandle,
580 &gEfiDriverBindingProtocolGuid, DriverBinding,
581 &gEfiComponentNameProtocolGuid, ComponentName,
582 &gEfiComponentName2ProtocolGuid, ComponentName2,
583 &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,
584 &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,
585 NULL
586 );
587 }
588 }
589 }
590 } else {
591 if (DriverDiagnostics2 == NULL || FeaturePcdGet(PcdDriverDiagnostics2Disable)) {
592 if (ComponentName == NULL || FeaturePcdGet(PcdComponentNameDisable)) {
593 if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {
594 Status = gBS->InstallMultipleProtocolInterfaces (
595 &DriverBinding->DriverBindingHandle,
596 &gEfiDriverBindingProtocolGuid, DriverBinding,
597 &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,
598 &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
599 NULL
600 );
601 } else {
602 Status = gBS->InstallMultipleProtocolInterfaces (
603 &DriverBinding->DriverBindingHandle,
604 &gEfiDriverBindingProtocolGuid, DriverBinding,
605 &gEfiComponentName2ProtocolGuid, ComponentName2,
606 &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,
607 &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
608 NULL
609 );
610 }
611 } else {
612 if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {
613 Status = gBS->InstallMultipleProtocolInterfaces (
614 &DriverBinding->DriverBindingHandle,
615 &gEfiDriverBindingProtocolGuid, DriverBinding,
616 &gEfiComponentNameProtocolGuid, ComponentName,
617 &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,
618 &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
619 NULL
620 );
621 } else {
622 Status = gBS->InstallMultipleProtocolInterfaces (
623 &DriverBinding->DriverBindingHandle,
624 &gEfiDriverBindingProtocolGuid, DriverBinding,
625 &gEfiComponentNameProtocolGuid, ComponentName,
626 &gEfiComponentName2ProtocolGuid, ComponentName2,
627 &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,
628 &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
629 NULL
630 );
631 }
632 }
633 } else {
634 if (ComponentName == NULL || FeaturePcdGet(PcdComponentNameDisable)) {
635 if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {
636 Status = gBS->InstallMultipleProtocolInterfaces (
637 &DriverBinding->DriverBindingHandle,
638 &gEfiDriverBindingProtocolGuid, DriverBinding,
639 &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,
640 &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
641 &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,
642 NULL
643 );
644 } else {
645 Status = gBS->InstallMultipleProtocolInterfaces (
646 &DriverBinding->DriverBindingHandle,
647 &gEfiDriverBindingProtocolGuid, DriverBinding,
648 &gEfiComponentName2ProtocolGuid, ComponentName2,
649 &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,
650 &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
651 &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,
652 NULL
653 );
654 }
655 } else {
656 if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {
657 Status = gBS->InstallMultipleProtocolInterfaces (
658 &DriverBinding->DriverBindingHandle,
659 &gEfiDriverBindingProtocolGuid, DriverBinding,
660 &gEfiComponentNameProtocolGuid, ComponentName,
661 &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,
662 &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
663 &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,
664 NULL
665 );
666 } else {
667 Status = gBS->InstallMultipleProtocolInterfaces (
668 &DriverBinding->DriverBindingHandle,
669 &gEfiDriverBindingProtocolGuid, DriverBinding,
670 &gEfiComponentNameProtocolGuid, ComponentName,
671 &gEfiComponentName2ProtocolGuid, ComponentName2,
672 &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,
673 &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
674 &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,
675 NULL
676 );
677 }
678 }
679 }
680 }
681 }
682 } else {
683 if (DriverConfiguration == NULL) {
684 if (DriverDiagnostics == NULL || FeaturePcdGet(PcdDriverDiagnosticsDisable)) {
685 if (DriverDiagnostics2 == NULL || FeaturePcdGet(PcdDriverDiagnostics2Disable)) {
686 if (ComponentName == NULL || FeaturePcdGet(PcdComponentNameDisable)) {
687 if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {
688 Status = gBS->InstallMultipleProtocolInterfaces (
689 &DriverBinding->DriverBindingHandle,
690 &gEfiDriverBindingProtocolGuid, DriverBinding,
691 &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,
692 NULL
693 );
694 } else {
695 Status = gBS->InstallMultipleProtocolInterfaces (
696 &DriverBinding->DriverBindingHandle,
697 &gEfiDriverBindingProtocolGuid, DriverBinding,
698 &gEfiComponentName2ProtocolGuid, ComponentName2,
699 &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,
700 NULL
701 );
702 }
703 } else {
704 if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {
705 Status = gBS->InstallMultipleProtocolInterfaces (
706 &DriverBinding->DriverBindingHandle,
707 &gEfiDriverBindingProtocolGuid, DriverBinding,
708 &gEfiComponentNameProtocolGuid, ComponentName,
709 &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,
710 NULL
711 );
712 } else {
713 Status = gBS->InstallMultipleProtocolInterfaces (
714 &DriverBinding->DriverBindingHandle,
715 &gEfiDriverBindingProtocolGuid, DriverBinding,
716 &gEfiComponentNameProtocolGuid, ComponentName,
717 &gEfiComponentName2ProtocolGuid, ComponentName2,
718 &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,
719 NULL
720 );
721 }
722 }
723 } else {
724 if (ComponentName == NULL || FeaturePcdGet(PcdComponentNameDisable)) {
725 if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {
726 Status = gBS->InstallMultipleProtocolInterfaces (
727 &DriverBinding->DriverBindingHandle,
728 &gEfiDriverBindingProtocolGuid, DriverBinding,
729 &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,
730 &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,
731 NULL
732 );
733 } else {
734 Status = gBS->InstallMultipleProtocolInterfaces (
735 &DriverBinding->DriverBindingHandle,
736 &gEfiDriverBindingProtocolGuid, DriverBinding,
737 &gEfiComponentName2ProtocolGuid, ComponentName2,
738 &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,
739 &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,
740 NULL
741 );
742 }
743 } else {
744 if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {
745 Status = gBS->InstallMultipleProtocolInterfaces (
746 &DriverBinding->DriverBindingHandle,
747 &gEfiDriverBindingProtocolGuid, DriverBinding,
748 &gEfiComponentNameProtocolGuid, ComponentName,
749 &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,
750 &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,
751 NULL
752 );
753 } else {
754 Status = gBS->InstallMultipleProtocolInterfaces (
755 &DriverBinding->DriverBindingHandle,
756 &gEfiDriverBindingProtocolGuid, DriverBinding,
757 &gEfiComponentNameProtocolGuid, ComponentName,
758 &gEfiComponentName2ProtocolGuid, ComponentName2,
759 &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,
760 &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,
761 NULL
762 );
763 }
764 }
765 }
766 } else {
767 if (DriverDiagnostics2 == NULL || FeaturePcdGet(PcdDriverDiagnostics2Disable)) {
768 if (ComponentName == NULL || FeaturePcdGet(PcdComponentNameDisable)) {
769 if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {
770 Status = gBS->InstallMultipleProtocolInterfaces (
771 &DriverBinding->DriverBindingHandle,
772 &gEfiDriverBindingProtocolGuid, DriverBinding,
773 &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
774 &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,
775 NULL
776 );
777 } else {
778 Status = gBS->InstallMultipleProtocolInterfaces (
779 &DriverBinding->DriverBindingHandle,
780 &gEfiDriverBindingProtocolGuid, DriverBinding,
781 &gEfiComponentName2ProtocolGuid, ComponentName2,
782 &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,
783 &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
784 NULL
785 );
786 }
787 } else {
788 if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {
789 Status = gBS->InstallMultipleProtocolInterfaces (
790 &DriverBinding->DriverBindingHandle,
791 &gEfiDriverBindingProtocolGuid, DriverBinding,
792 &gEfiComponentNameProtocolGuid, ComponentName,
793 &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
794 &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,
795 NULL
796 );
797 } else {
798 Status = gBS->InstallMultipleProtocolInterfaces (
799 &DriverBinding->DriverBindingHandle,
800 &gEfiDriverBindingProtocolGuid, DriverBinding,
801 &gEfiComponentNameProtocolGuid, ComponentName,
802 &gEfiComponentName2ProtocolGuid, ComponentName2,
803 &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,
804 &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
805 NULL
806 );
807 }
808 }
809 } else {
810 if (ComponentName == NULL || FeaturePcdGet(PcdComponentNameDisable)) {
811 if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {
812 Status = gBS->InstallMultipleProtocolInterfaces (
813 &DriverBinding->DriverBindingHandle,
814 &gEfiDriverBindingProtocolGuid, DriverBinding,
815 &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,
816 &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
817 &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,
818 NULL
819 );
820 } else {
821 Status = gBS->InstallMultipleProtocolInterfaces (
822 &DriverBinding->DriverBindingHandle,
823 &gEfiDriverBindingProtocolGuid, DriverBinding,
824 &gEfiComponentName2ProtocolGuid, ComponentName2,
825 &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,
826 &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
827 &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,
828 NULL
829 );
830 }
831 } else {
832 if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {
833 Status = gBS->InstallMultipleProtocolInterfaces (
834 &DriverBinding->DriverBindingHandle,
835 &gEfiDriverBindingProtocolGuid, DriverBinding,
836 &gEfiComponentNameProtocolGuid, ComponentName,
837 &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,
838 &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
839 &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,
840 NULL
841 );
842 } else {
843 Status = gBS->InstallMultipleProtocolInterfaces (
844 &DriverBinding->DriverBindingHandle,
845 &gEfiDriverBindingProtocolGuid, DriverBinding,
846 &gEfiComponentNameProtocolGuid, ComponentName,
847 &gEfiComponentName2ProtocolGuid, ComponentName2,
848 &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,
849 &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
850 &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,
851 NULL
852 );
853 }
854 }
855 }
856 }
857 } else {
858 if (DriverDiagnostics == NULL || FeaturePcdGet(PcdDriverDiagnosticsDisable)) {
859 if (DriverDiagnostics2 == NULL || FeaturePcdGet(PcdDriverDiagnostics2Disable)) {
860 if (ComponentName == NULL || FeaturePcdGet(PcdComponentNameDisable)) {
861 if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {
862 Status = gBS->InstallMultipleProtocolInterfaces (
863 &DriverBinding->DriverBindingHandle,
864 &gEfiDriverBindingProtocolGuid, DriverBinding,
865 &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,
866 &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,
867 NULL
868 );
869 } else {
870 Status = gBS->InstallMultipleProtocolInterfaces (
871 &DriverBinding->DriverBindingHandle,
872 &gEfiDriverBindingProtocolGuid, DriverBinding,
873 &gEfiComponentName2ProtocolGuid, ComponentName2,
874 &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,
875 &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,
876 NULL
877 );
878 }
879 } else {
880 if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {
881 Status = gBS->InstallMultipleProtocolInterfaces (
882 &DriverBinding->DriverBindingHandle,
883 &gEfiDriverBindingProtocolGuid, DriverBinding,
884 &gEfiComponentNameProtocolGuid, ComponentName,
885 &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,
886 &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,
887 NULL
888 );
889 } else {
890 Status = gBS->InstallMultipleProtocolInterfaces (
891 &DriverBinding->DriverBindingHandle,
892 &gEfiDriverBindingProtocolGuid, DriverBinding,
893 &gEfiComponentNameProtocolGuid, ComponentName,
894 &gEfiComponentName2ProtocolGuid, ComponentName2,
895 &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,
896 &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,
897 NULL
898 );
899 }
900 }
901 } else {
902 if (ComponentName == NULL || FeaturePcdGet(PcdComponentNameDisable)) {
903 if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {
904 Status = gBS->InstallMultipleProtocolInterfaces (
905 &DriverBinding->DriverBindingHandle,
906 &gEfiDriverBindingProtocolGuid, DriverBinding,
907 &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,
908 &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,
909 &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,
910 NULL
911 );
912 } else {
913 Status = gBS->InstallMultipleProtocolInterfaces (
914 &DriverBinding->DriverBindingHandle,
915 &gEfiDriverBindingProtocolGuid, DriverBinding,
916 &gEfiComponentName2ProtocolGuid, ComponentName2,
917 &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,
918 &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,
919 &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,
920 NULL
921 );
922 }
923 } else {
924 if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {
925 Status = gBS->InstallMultipleProtocolInterfaces (
926 &DriverBinding->DriverBindingHandle,
927 &gEfiDriverBindingProtocolGuid, DriverBinding,
928 &gEfiComponentNameProtocolGuid, ComponentName,
929 &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,
930 &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,
931 &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,
932 NULL
933 );
934 } else {
935 Status = gBS->InstallMultipleProtocolInterfaces (
936 &DriverBinding->DriverBindingHandle,
937 &gEfiDriverBindingProtocolGuid, DriverBinding,
938 &gEfiComponentNameProtocolGuid, ComponentName,
939 &gEfiComponentName2ProtocolGuid, ComponentName2,
940 &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,
941 &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,
942 &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,
943 NULL
944 );
945 }
946 }
947 }
948 } else {
949 if (DriverDiagnostics2 == NULL || FeaturePcdGet(PcdDriverDiagnostics2Disable)) {
950 if (ComponentName == NULL || FeaturePcdGet(PcdComponentNameDisable)) {
951 if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {
952 Status = gBS->InstallMultipleProtocolInterfaces (
953 &DriverBinding->DriverBindingHandle,
954 &gEfiDriverBindingProtocolGuid, DriverBinding,
955 &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,
956 &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,
957 &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
958 NULL
959 );
960 } else {
961 Status = gBS->InstallMultipleProtocolInterfaces (
962 &DriverBinding->DriverBindingHandle,
963 &gEfiDriverBindingProtocolGuid, DriverBinding,
964 &gEfiComponentName2ProtocolGuid, ComponentName2,
965 &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,
966 &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,
967 &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
968 NULL
969 );
970 }
971 } else {
972 if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {
973 Status = gBS->InstallMultipleProtocolInterfaces (
974 &DriverBinding->DriverBindingHandle,
975 &gEfiDriverBindingProtocolGuid, DriverBinding,
976 &gEfiComponentNameProtocolGuid, ComponentName,
977 &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,
978 &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,
979 &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
980 NULL
981 );
982 } else {
983 Status = gBS->InstallMultipleProtocolInterfaces (
984 &DriverBinding->DriverBindingHandle,
985 &gEfiDriverBindingProtocolGuid, DriverBinding,
986 &gEfiComponentNameProtocolGuid, ComponentName,
987 &gEfiComponentName2ProtocolGuid, ComponentName2,
988 &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,
989 &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,
990 &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
991 NULL
992 );
993 }
994 }
995 } else {
996 if (ComponentName == NULL || FeaturePcdGet(PcdComponentNameDisable)) {
997 if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {
998 Status = gBS->InstallMultipleProtocolInterfaces (
999 &DriverBinding->DriverBindingHandle,
1000 &gEfiDriverBindingProtocolGuid, DriverBinding,
1001 &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,
1002 &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,
1003 &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
1004 &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,
1005 NULL
1006 );
1007 } else {
1008 Status = gBS->InstallMultipleProtocolInterfaces (
1009 &DriverBinding->DriverBindingHandle,
1010 &gEfiDriverBindingProtocolGuid, DriverBinding,
1011 &gEfiComponentName2ProtocolGuid, ComponentName2,
1012 &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,
1013 &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,
1014 &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
1015 &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,
1016 NULL
1017 );
1018 }
1019 } else {
1020 if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {
1021 Status = gBS->InstallMultipleProtocolInterfaces (
1022 &DriverBinding->DriverBindingHandle,
1023 &gEfiDriverBindingProtocolGuid, DriverBinding,
1024 &gEfiComponentNameProtocolGuid, ComponentName,
1025 &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,
1026 &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,
1027 &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
1028 &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,
1029 NULL
1030 );
1031 } else {
1032 Status = gBS->InstallMultipleProtocolInterfaces (
1033 &DriverBinding->DriverBindingHandle,
1034 &gEfiDriverBindingProtocolGuid, DriverBinding,
1035 &gEfiComponentNameProtocolGuid, ComponentName,
1036 &gEfiComponentName2ProtocolGuid, ComponentName2,
1037 &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,
1038 &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,
1039 &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
1040 &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,
1041 NULL
1042 );
1043 }
1044 }
1045 }
1046 }
1047 }
1048 }
1049
1050 //
1051 // ASSERT if the call to InstallMultipleProtocolInterfaces() failed
1052 //
1053 ASSERT_EFI_ERROR (Status);
1054
1055 return Status;
1056 }