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