]> git.proxmox.com Git - mirror_edk2.git/blob - IntelFrameworkPkg/Library/FrameworkUefiLib/UefiDriverModel.c
Add gEfiDriverConfiguration2ProtocolGuid GUID C Name in INF.
[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 - 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
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 #include "FrameworkUefiLib.h"
17
18 /**
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 ().
24
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.
30
31 @retval EFI_SUCCESS The protocol installation is completed successfully.
32 @retval Others Status from gBS->InstallMultipleProtocolInterfaces().
33
34 **/
35 EFI_STATUS
36 EFIAPI
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
42 )
43 {
44 EFI_STATUS Status;
45
46 ASSERT (DriverBinding != NULL);
47
48 Status = gBS->InstallMultipleProtocolInterfaces (
49 &DriverBindingHandle,
50 &gEfiDriverBindingProtocolGuid, DriverBinding,
51 NULL
52 );
53 //
54 // ASSERT if the call to InstallMultipleProtocolInterfaces() failed
55 //
56 ASSERT_EFI_ERROR (Status);
57
58 //
59 // Update the ImageHandle and DriverBindingHandle fields of the Driver Binding Protocol
60 //
61 DriverBinding->ImageHandle = ImageHandle;
62 DriverBinding->DriverBindingHandle = DriverBindingHandle;
63
64 return Status;
65 }
66
67
68 /**
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 ().
75
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.
84
85 @retval EFI_SUCCESS The protocol installation is completed successfully.
86 @retval Others Status from gBS->InstallMultipleProtocolInterfaces().
87
88 **/
89 EFI_STATUS
90 EFIAPI
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
99 )
100 {
101 EFI_STATUS Status;
102
103 ASSERT (DriverBinding != NULL);
104
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,
111 NULL
112 );
113 } else {
114 Status = gBS->InstallMultipleProtocolInterfaces (
115 &DriverBindingHandle,
116 &gEfiDriverBindingProtocolGuid, DriverBinding,
117 &gEfiComponentNameProtocolGuid, ComponentName,
118 NULL
119 );
120 }
121 } else {
122 if (ComponentName == NULL || FeaturePcdGet(PcdComponentNameDisable)) {
123 Status = gBS->InstallMultipleProtocolInterfaces (
124 &DriverBindingHandle,
125 &gEfiDriverBindingProtocolGuid, DriverBinding,
126 &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,
127 NULL
128 );
129 } else {
130 Status = gBS->InstallMultipleProtocolInterfaces (
131 &DriverBindingHandle,
132 &gEfiDriverBindingProtocolGuid, DriverBinding,
133 &gEfiComponentNameProtocolGuid, ComponentName,
134 &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,
135 NULL
136 );
137 }
138 }
139 } else {
140 if (DriverConfiguration == NULL) {
141 if (ComponentName == NULL || FeaturePcdGet(PcdComponentNameDisable)) {
142 Status = gBS->InstallMultipleProtocolInterfaces (
143 &DriverBindingHandle,
144 &gEfiDriverBindingProtocolGuid, DriverBinding,
145 &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
146 NULL
147 );
148 } else {
149 Status = gBS->InstallMultipleProtocolInterfaces (
150 &DriverBindingHandle,
151 &gEfiDriverBindingProtocolGuid, DriverBinding,
152 &gEfiComponentNameProtocolGuid, ComponentName,
153 &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
154 NULL
155 );
156 }
157 } else {
158 if (ComponentName == NULL || FeaturePcdGet(PcdComponentNameDisable)) {
159 Status = gBS->InstallMultipleProtocolInterfaces (
160 &DriverBindingHandle,
161 &gEfiDriverBindingProtocolGuid, DriverBinding,
162 &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,
163 &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
164 NULL
165 );
166 } else {
167 Status = gBS->InstallMultipleProtocolInterfaces (
168 &DriverBindingHandle,
169 &gEfiDriverBindingProtocolGuid, DriverBinding,
170 &gEfiComponentNameProtocolGuid, ComponentName,
171 &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,
172 &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
173 NULL
174 );
175 }
176 }
177 }
178
179 //
180 // ASSERT if the call to InstallMultipleProtocolInterfaces() failed
181 //
182 ASSERT_EFI_ERROR (Status);
183
184 //
185 // Update the ImageHandle and DriverBindingHandle fields of the Driver Binding Protocol
186 //
187 DriverBinding->ImageHandle = ImageHandle;
188 DriverBinding->DriverBindingHandle = DriverBindingHandle;
189
190 return Status;
191 }
192
193
194
195 /**
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 ().
201
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.
209
210 @retval EFI_SUCCESS The protocol installation is completed successfully.
211 @retval Others Status from gBS->InstallMultipleProtocolInterfaces().
212
213 **/
214 EFI_STATUS
215 EFIAPI
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
223 )
224 {
225 EFI_STATUS Status;
226
227 ASSERT (DriverBinding != NULL);
228
229 if (ComponentName == NULL || FeaturePcdGet(PcdComponentNameDisable)) {
230 if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {
231 Status = gBS->InstallMultipleProtocolInterfaces (
232 &DriverBindingHandle,
233 &gEfiDriverBindingProtocolGuid, DriverBinding,
234 NULL
235 );
236 } else {
237 Status = gBS->InstallMultipleProtocolInterfaces (
238 &DriverBindingHandle,
239 &gEfiDriverBindingProtocolGuid, DriverBinding,
240 &gEfiComponentName2ProtocolGuid, ComponentName2,
241 NULL
242 );
243 }
244 } else {
245 if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {
246 Status = gBS->InstallMultipleProtocolInterfaces (
247 &DriverBindingHandle,
248 &gEfiDriverBindingProtocolGuid, DriverBinding,
249 &gEfiComponentNameProtocolGuid, ComponentName,
250 NULL
251 );
252 } else {
253 Status = gBS->InstallMultipleProtocolInterfaces (
254 &DriverBindingHandle,
255 &gEfiDriverBindingProtocolGuid, DriverBinding,
256 &gEfiComponentNameProtocolGuid, ComponentName,
257 &gEfiComponentName2ProtocolGuid, ComponentName2,
258 NULL
259 );
260 }
261 }
262 //
263 // ASSERT if the call to InstallMultipleProtocolInterfaces() failed
264 //
265 ASSERT_EFI_ERROR (Status);
266
267 //
268 // Update the ImageHandle and DriverBindingHandle fields of the Driver Binding Protocol
269 //
270 DriverBinding->ImageHandle = ImageHandle;
271 DriverBinding->DriverBindingHandle = DriverBindingHandle;
272
273 return Status;
274 }
275
276
277
278 /**
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 ().
285
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.
297
298 @retval EFI_SUCCESS The protocol installation is completed successfully.
299 @retval Others Status from gBS->InstallMultipleProtocolInterfaces().
300
301 **/
302 EFI_STATUS
303 EFIAPI
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
315 )
316 {
317 EFI_STATUS Status;
318
319 ASSERT (DriverBinding != NULL);
320
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,
330 NULL
331 );
332 } else {
333 Status = gBS->InstallMultipleProtocolInterfaces (
334 &DriverBindingHandle,
335 &gEfiDriverBindingProtocolGuid, DriverBinding,
336 &gEfiComponentName2ProtocolGuid, ComponentName2,
337 NULL
338 );
339 }
340 } else {
341 if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {
342 Status = gBS->InstallMultipleProtocolInterfaces (
343 &DriverBindingHandle,
344 &gEfiDriverBindingProtocolGuid, DriverBinding,
345 &gEfiComponentNameProtocolGuid, ComponentName,
346 NULL
347 );
348 } else {
349 Status = gBS->InstallMultipleProtocolInterfaces (
350 &DriverBindingHandle,
351 &gEfiDriverBindingProtocolGuid, DriverBinding,
352 &gEfiComponentNameProtocolGuid, ComponentName,
353 &gEfiComponentName2ProtocolGuid, ComponentName2,
354 NULL
355 );
356 }
357 }
358 } else {
359 if (ComponentName == NULL || FeaturePcdGet(PcdComponentNameDisable)) {
360 if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {
361 Status = gBS->InstallMultipleProtocolInterfaces (
362 &DriverBindingHandle,
363 &gEfiDriverBindingProtocolGuid, DriverBinding,
364 &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,
365 NULL
366 );
367 } else {
368 Status = gBS->InstallMultipleProtocolInterfaces (
369 &DriverBindingHandle,
370 &gEfiDriverBindingProtocolGuid, DriverBinding,
371 &gEfiComponentName2ProtocolGuid, ComponentName2,
372 &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,
373 NULL
374 );
375 }
376 } else {
377 if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {
378 Status = gBS->InstallMultipleProtocolInterfaces (
379 &DriverBindingHandle,
380 &gEfiDriverBindingProtocolGuid, DriverBinding,
381 &gEfiComponentNameProtocolGuid, ComponentName,
382 &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,
383 NULL
384 );
385 } else {
386 Status = gBS->InstallMultipleProtocolInterfaces (
387 &DriverBindingHandle,
388 &gEfiDriverBindingProtocolGuid, DriverBinding,
389 &gEfiComponentNameProtocolGuid, ComponentName,
390 &gEfiComponentName2ProtocolGuid, ComponentName2,
391 &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,
392 NULL
393 );
394 }
395 }
396 }
397 } else {
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,
405 NULL
406 );
407 } else {
408 Status = gBS->InstallMultipleProtocolInterfaces (
409 &DriverBindingHandle,
410 &gEfiDriverBindingProtocolGuid, DriverBinding,
411 &gEfiComponentName2ProtocolGuid, ComponentName2,
412 &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
413 NULL
414 );
415 }
416 } else {
417 if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {
418 Status = gBS->InstallMultipleProtocolInterfaces (
419 &DriverBindingHandle,
420 &gEfiDriverBindingProtocolGuid, DriverBinding,
421 &gEfiComponentNameProtocolGuid, ComponentName,
422 &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
423 NULL
424 );
425 } else {
426 Status = gBS->InstallMultipleProtocolInterfaces (
427 &DriverBindingHandle,
428 &gEfiDriverBindingProtocolGuid, DriverBinding,
429 &gEfiComponentNameProtocolGuid, ComponentName,
430 &gEfiComponentName2ProtocolGuid, ComponentName2,
431 &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
432 NULL
433 );
434 }
435 }
436 } else {
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,
444 NULL
445 );
446 } else {
447 Status = gBS->InstallMultipleProtocolInterfaces (
448 &DriverBindingHandle,
449 &gEfiDriverBindingProtocolGuid, DriverBinding,
450 &gEfiComponentName2ProtocolGuid, ComponentName2,
451 &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
452 &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,
453 NULL
454 );
455 }
456 } else {
457 if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {
458 Status = gBS->InstallMultipleProtocolInterfaces (
459 &DriverBindingHandle,
460 &gEfiDriverBindingProtocolGuid, DriverBinding,
461 &gEfiComponentNameProtocolGuid, ComponentName,
462 &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
463 &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,
464 NULL
465 );
466 } else {
467 Status = gBS->InstallMultipleProtocolInterfaces (
468 &DriverBindingHandle,
469 &gEfiDriverBindingProtocolGuid, DriverBinding,
470 &gEfiComponentNameProtocolGuid, ComponentName,
471 &gEfiComponentName2ProtocolGuid, ComponentName2,
472 &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
473 &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,
474 NULL
475 );
476 }
477 }
478 }
479 }
480 } else {
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,
489 NULL
490 );
491 } else {
492 Status = gBS->InstallMultipleProtocolInterfaces (
493 &DriverBindingHandle,
494 &gEfiDriverBindingProtocolGuid, DriverBinding,
495 &gEfiComponentName2ProtocolGuid, ComponentName2,
496 &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,
497 NULL
498 );
499 }
500 } else {
501 if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {
502 Status = gBS->InstallMultipleProtocolInterfaces (
503 &DriverBindingHandle,
504 &gEfiDriverBindingProtocolGuid, DriverBinding,
505 &gEfiComponentNameProtocolGuid, ComponentName,
506 &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,
507 NULL
508 );
509 } else {
510 Status = gBS->InstallMultipleProtocolInterfaces (
511 &DriverBindingHandle,
512 &gEfiDriverBindingProtocolGuid, DriverBinding,
513 &gEfiComponentNameProtocolGuid, ComponentName,
514 &gEfiComponentName2ProtocolGuid, ComponentName2,
515 &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,
516 NULL
517 );
518 }
519 }
520 } else {
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,
528 NULL
529 );
530 } else {
531 Status = gBS->InstallMultipleProtocolInterfaces (
532 &DriverBindingHandle,
533 &gEfiDriverBindingProtocolGuid, DriverBinding,
534 &gEfiComponentName2ProtocolGuid, ComponentName2,
535 &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,
536 &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,
537 NULL
538 );
539 }
540 } else {
541 if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {
542 Status = gBS->InstallMultipleProtocolInterfaces (
543 &DriverBindingHandle,
544 &gEfiDriverBindingProtocolGuid, DriverBinding,
545 &gEfiComponentNameProtocolGuid, ComponentName,
546 &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,
547 &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,
548 NULL
549 );
550 } else {
551 Status = gBS->InstallMultipleProtocolInterfaces (
552 &DriverBindingHandle,
553 &gEfiDriverBindingProtocolGuid, DriverBinding,
554 &gEfiComponentNameProtocolGuid, ComponentName,
555 &gEfiComponentName2ProtocolGuid, ComponentName2,
556 &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,
557 &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,
558 NULL
559 );
560 }
561 }
562 }
563 } else {
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,
572 NULL
573 );
574 } else {
575 Status = gBS->InstallMultipleProtocolInterfaces (
576 &DriverBindingHandle,
577 &gEfiDriverBindingProtocolGuid, DriverBinding,
578 &gEfiComponentName2ProtocolGuid, ComponentName2,
579 &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,
580 &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
581 NULL
582 );
583 }
584 } else {
585 if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {
586 Status = gBS->InstallMultipleProtocolInterfaces (
587 &DriverBindingHandle,
588 &gEfiDriverBindingProtocolGuid, DriverBinding,
589 &gEfiComponentNameProtocolGuid, ComponentName,
590 &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,
591 &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
592 NULL
593 );
594 } else {
595 Status = gBS->InstallMultipleProtocolInterfaces (
596 &DriverBindingHandle,
597 &gEfiDriverBindingProtocolGuid, DriverBinding,
598 &gEfiComponentNameProtocolGuid, ComponentName,
599 &gEfiComponentName2ProtocolGuid, ComponentName2,
600 &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,
601 &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
602 NULL
603 );
604 }
605 }
606 } else {
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,
615 NULL
616 );
617 } else {
618 Status = gBS->InstallMultipleProtocolInterfaces (
619 &DriverBindingHandle,
620 &gEfiDriverBindingProtocolGuid, DriverBinding,
621 &gEfiComponentName2ProtocolGuid, ComponentName2,
622 &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,
623 &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
624 &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,
625 NULL
626 );
627 }
628 } else {
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,
637 NULL
638 );
639 } else {
640 Status = gBS->InstallMultipleProtocolInterfaces (
641 &DriverBindingHandle,
642 &gEfiDriverBindingProtocolGuid, DriverBinding,
643 &gEfiComponentNameProtocolGuid, ComponentName,
644 &gEfiComponentName2ProtocolGuid, ComponentName2,
645 &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,
646 &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
647 &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,
648 NULL
649 );
650 }
651 }
652 }
653 }
654 }
655 } else {
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,
665 NULL
666 );
667 } else {
668 Status = gBS->InstallMultipleProtocolInterfaces (
669 &DriverBindingHandle,
670 &gEfiDriverBindingProtocolGuid, DriverBinding,
671 &gEfiComponentName2ProtocolGuid, ComponentName2,
672 &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,
673 NULL
674 );
675 }
676 } else {
677 if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {
678 Status = gBS->InstallMultipleProtocolInterfaces (
679 &DriverBindingHandle,
680 &gEfiDriverBindingProtocolGuid, DriverBinding,
681 &gEfiComponentNameProtocolGuid, ComponentName,
682 &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,
683 NULL
684 );
685 } else {
686 Status = gBS->InstallMultipleProtocolInterfaces (
687 &DriverBindingHandle,
688 &gEfiDriverBindingProtocolGuid, DriverBinding,
689 &gEfiComponentNameProtocolGuid, ComponentName,
690 &gEfiComponentName2ProtocolGuid, ComponentName2,
691 &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,
692 NULL
693 );
694 }
695 }
696 } else {
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,
704 NULL
705 );
706 } else {
707 Status = gBS->InstallMultipleProtocolInterfaces (
708 &DriverBindingHandle,
709 &gEfiDriverBindingProtocolGuid, DriverBinding,
710 &gEfiComponentName2ProtocolGuid, ComponentName2,
711 &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,
712 &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,
713 NULL
714 );
715 }
716 } else {
717 if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {
718 Status = gBS->InstallMultipleProtocolInterfaces (
719 &DriverBindingHandle,
720 &gEfiDriverBindingProtocolGuid, DriverBinding,
721 &gEfiComponentNameProtocolGuid, ComponentName,
722 &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,
723 &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,
724 NULL
725 );
726 } else {
727 Status = gBS->InstallMultipleProtocolInterfaces (
728 &DriverBindingHandle,
729 &gEfiDriverBindingProtocolGuid, DriverBinding,
730 &gEfiComponentNameProtocolGuid, ComponentName,
731 &gEfiComponentName2ProtocolGuid, ComponentName2,
732 &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,
733 &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,
734 NULL
735 );
736 }
737 }
738 }
739 } else {
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,
748 NULL
749 );
750 } else {
751 Status = gBS->InstallMultipleProtocolInterfaces (
752 &DriverBindingHandle,
753 &gEfiDriverBindingProtocolGuid, DriverBinding,
754 &gEfiComponentName2ProtocolGuid, ComponentName2,
755 &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,
756 &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
757 NULL
758 );
759 }
760 } else {
761 if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {
762 Status = gBS->InstallMultipleProtocolInterfaces (
763 &DriverBindingHandle,
764 &gEfiDriverBindingProtocolGuid, DriverBinding,
765 &gEfiComponentNameProtocolGuid, ComponentName,
766 &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
767 &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,
768 NULL
769 );
770 } else {
771 Status = gBS->InstallMultipleProtocolInterfaces (
772 &DriverBindingHandle,
773 &gEfiDriverBindingProtocolGuid, DriverBinding,
774 &gEfiComponentNameProtocolGuid, ComponentName,
775 &gEfiComponentName2ProtocolGuid, ComponentName2,
776 &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,
777 &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
778 NULL
779 );
780 }
781 }
782 } else {
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,
791 NULL
792 );
793 } else {
794 Status = gBS->InstallMultipleProtocolInterfaces (
795 &DriverBindingHandle,
796 &gEfiDriverBindingProtocolGuid, DriverBinding,
797 &gEfiComponentName2ProtocolGuid, ComponentName2,
798 &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,
799 &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
800 &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,
801 NULL
802 );
803 }
804 } else {
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,
813 NULL
814 );
815 } else {
816 Status = gBS->InstallMultipleProtocolInterfaces (
817 &DriverBindingHandle,
818 &gEfiDriverBindingProtocolGuid, DriverBinding,
819 &gEfiComponentNameProtocolGuid, ComponentName,
820 &gEfiComponentName2ProtocolGuid, ComponentName2,
821 &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,
822 &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
823 &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,
824 NULL
825 );
826 }
827 }
828 }
829 }
830 } else {
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,
840 NULL
841 );
842 } else {
843 Status = gBS->InstallMultipleProtocolInterfaces (
844 &DriverBindingHandle,
845 &gEfiDriverBindingProtocolGuid, DriverBinding,
846 &gEfiComponentName2ProtocolGuid, ComponentName2,
847 &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,
848 &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,
849 NULL
850 );
851 }
852 } else {
853 if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {
854 Status = gBS->InstallMultipleProtocolInterfaces (
855 &DriverBindingHandle,
856 &gEfiDriverBindingProtocolGuid, DriverBinding,
857 &gEfiComponentNameProtocolGuid, ComponentName,
858 &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,
859 &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,
860 NULL
861 );
862 } else {
863 Status = gBS->InstallMultipleProtocolInterfaces (
864 &DriverBindingHandle,
865 &gEfiDriverBindingProtocolGuid, DriverBinding,
866 &gEfiComponentNameProtocolGuid, ComponentName,
867 &gEfiComponentName2ProtocolGuid, ComponentName2,
868 &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,
869 &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,
870 NULL
871 );
872 }
873 }
874 } else {
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,
883 NULL
884 );
885 } else {
886 Status = gBS->InstallMultipleProtocolInterfaces (
887 &DriverBindingHandle,
888 &gEfiDriverBindingProtocolGuid, DriverBinding,
889 &gEfiComponentName2ProtocolGuid, ComponentName2,
890 &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,
891 &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,
892 &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,
893 NULL
894 );
895 }
896 } else {
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,
905 NULL
906 );
907 } else {
908 Status = gBS->InstallMultipleProtocolInterfaces (
909 &DriverBindingHandle,
910 &gEfiDriverBindingProtocolGuid, DriverBinding,
911 &gEfiComponentNameProtocolGuid, ComponentName,
912 &gEfiComponentName2ProtocolGuid, ComponentName2,
913 &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,
914 &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,
915 &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,
916 NULL
917 );
918 }
919 }
920 }
921 } else {
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,
931 NULL
932 );
933 } else {
934 Status = gBS->InstallMultipleProtocolInterfaces (
935 &DriverBindingHandle,
936 &gEfiDriverBindingProtocolGuid, DriverBinding,
937 &gEfiComponentName2ProtocolGuid, ComponentName2,
938 &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,
939 &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,
940 &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
941 NULL
942 );
943 }
944 } else {
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,
953 NULL
954 );
955 } else {
956 Status = gBS->InstallMultipleProtocolInterfaces (
957 &DriverBindingHandle,
958 &gEfiDriverBindingProtocolGuid, DriverBinding,
959 &gEfiComponentNameProtocolGuid, ComponentName,
960 &gEfiComponentName2ProtocolGuid, ComponentName2,
961 &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,
962 &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,
963 &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
964 NULL
965 );
966 }
967 }
968 } else {
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,
978 NULL
979 );
980 } else {
981 Status = gBS->InstallMultipleProtocolInterfaces (
982 &DriverBindingHandle,
983 &gEfiDriverBindingProtocolGuid, DriverBinding,
984 &gEfiComponentName2ProtocolGuid, ComponentName2,
985 &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,
986 &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,
987 &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
988 &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,
989 NULL
990 );
991 }
992 } else {
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,
1002 NULL
1003 );
1004 } else {
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,
1014 NULL
1015 );
1016 }
1017 }
1018 }
1019 }
1020 }
1021 }
1022
1023
1024 //
1025 // ASSERT if the call to InstallMultipleProtocolInterfaces() failed
1026 //
1027 ASSERT_EFI_ERROR (Status);
1028
1029 //
1030 // Update the ImageHandle and DriverBindingHandle fields of the Driver Binding Protocol
1031 //
1032 DriverBinding->ImageHandle = ImageHandle;
1033 DriverBinding->DriverBindingHandle = DriverBindingHandle;
1034
1035 return Status;
1036 }
1037
1038