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