]> git.proxmox.com Git - mirror_edk2.git/blobdiff - IntelFrameworkPkg/Library/UefiLibFramework/UefiDriverModel.c
Update following library class/Protocol for puting 'Framework' as prefix
[mirror_edk2.git] / IntelFrameworkPkg / Library / UefiLibFramework / UefiDriverModel.c
diff --git a/IntelFrameworkPkg/Library/UefiLibFramework/UefiDriverModel.c b/IntelFrameworkPkg/Library/UefiLibFramework/UefiDriverModel.c
deleted file mode 100644 (file)
index f6919a6..0000000
+++ /dev/null
@@ -1,667 +0,0 @@
-/** @file\r
-  Library functions that abstract driver model protocols\r
-  installation.\r
-\r
-  Copyright (c) 2006 - 2007, Intel Corporation<BR> All rights\r
-  reserved. This program and the accompanying materials are\r
-  licensed and made available under the terms and conditions of the BSD License\r
-  which accompanies this distribution.  The full text of the license may be found at\r
-  http://opensource.org/licenses/bsd-license.php\r
-  \r
-  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-\r
-**/ \r
-\r
-#include "UefiLibFramework.h"\r
-\r
-/**\r
-  Intialize a driver by installing the Driver Binding Protocol onto the driver's\r
-  DriverBindingHandle.  This is typically the same as the driver's ImageHandle, but\r
-  it can be different if the driver produces multiple DriverBinding Protocols. \r
-  If the Drvier Binding Protocol interface is NULL, then ASSERT (). \r
-  If the installation fails, then ASSERT ().\r
-\r
-  @param  ImageHandle                 The image handle of the driver.\r
-  @param  SystemTable                 The EFI System Table that was passed to the driver's entry point.\r
-  @param  DriverBinding               A Driver Binding Protocol instance that this driver is producing.\r
-  @param  DriverBindingHandle         The handle that DriverBinding is to be installe onto.  If this\r
-                                      parameter is NULL, then a new handle is created.\r
-\r
-  @retval EFI_SUCCESS                 The protocol installation is completed successfully.\r
-  @retval Others                      Status from gBS->InstallMultipleProtocolInterfaces().\r
-\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-EfiLibInstallDriverBinding (\r
-  IN CONST EFI_HANDLE             ImageHandle,\r
-  IN CONST EFI_SYSTEM_TABLE       *SystemTable,\r
-  IN EFI_DRIVER_BINDING_PROTOCOL  *DriverBinding,\r
-  IN EFI_HANDLE                   DriverBindingHandle\r
-  )\r
-{\r
-  EFI_STATUS  Status;\r
-\r
-  ASSERT (NULL != DriverBinding);\r
-\r
-  Status = gBS->InstallMultipleProtocolInterfaces (\r
-                  &DriverBindingHandle,\r
-                  &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                  NULL\r
-                  );\r
-  //\r
-  // ASSERT if the call to InstallMultipleProtocolInterfaces() failed\r
-  //\r
-  ASSERT_EFI_ERROR (Status);\r
-\r
-  //\r
-  // Update the ImageHandle and DriverBindingHandle fields of the Driver Binding Protocol\r
-  //\r
-  DriverBinding->ImageHandle         = ImageHandle;\r
-  DriverBinding->DriverBindingHandle = DriverBindingHandle;\r
-\r
-  return Status;\r
-}\r
-\r
-\r
-/**\r
-  Intialize a driver by installing the Driver Binding Protocol together with the optional Component Name,\r
-  Driver Configure and Driver Diagnostic Protocols onto the driver's DriverBindingHandle.  This is\r
-  typically the same as the driver's ImageHandle, but it can be different if the driver produces multiple\r
-  DriverBinding Protocols. \r
-  If the Drvier Binding Protocol interface is NULL, then ASSERT (). \r
-  If the installation fails, then ASSERT ().\r
-\r
-  @param  ImageHandle                 The image handle of the driver.\r
-  @param  SystemTable                 The EFI System Table that was passed to the driver's entry point.\r
-  @param  DriverBinding               A Driver Binding Protocol instance that this driver is producing.\r
-  @param  DriverBindingHandle         The handle that DriverBinding is to be installe onto.  If this\r
-                                      parameter is NULL, then a new handle is created.\r
-  @param  ComponentName               A Component Name Protocol instance that this driver is producing.\r
-  @param  DriverConfiguration         A Driver Configuration Protocol instance that this driver is producing.\r
-  @param  DriverDiagnostics           A Driver Diagnostics Protocol instance that this driver is producing.\r
-\r
-  @retval EFI_SUCCESS                 The protocol installation is completed successfully.\r
-  @retval Others                      Status from gBS->InstallMultipleProtocolInterfaces().\r
-\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-EfiLibInstallAllDriverProtocols (\r
-  IN CONST EFI_HANDLE                         ImageHandle,\r
-  IN CONST EFI_SYSTEM_TABLE                   *SystemTable,\r
-  IN EFI_DRIVER_BINDING_PROTOCOL              *DriverBinding,\r
-  IN EFI_HANDLE                               DriverBindingHandle,\r
-  IN CONST EFI_COMPONENT_NAME_PROTOCOL        *ComponentName,       OPTIONAL\r
-  IN CONST EFI_DRIVER_CONFIGURATION_PROTOCOL  *DriverConfiguration, OPTIONAL\r
-  IN CONST EFI_DRIVER_DIAGNOSTICS_PROTOCOL    *DriverDiagnostics    OPTIONAL\r
-  )\r
-{\r
-  EFI_STATUS  Status;\r
-\r
-  ASSERT (NULL != DriverBinding);\r
-\r
-  if (DriverDiagnostics == NULL || FeaturePcdGet(PcdDriverDiagnosticsDisable)) {\r
-    if (DriverConfiguration == NULL) {\r
-      if (ComponentName == NULL || FeaturePcdGet(PcdComponentNameDisable)) {\r
-        Status = gBS->InstallMultipleProtocolInterfaces (\r
-                        &DriverBindingHandle,\r
-                        &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                        NULL\r
-                        );\r
-      } else {\r
-        Status = gBS->InstallMultipleProtocolInterfaces (\r
-                        &DriverBindingHandle,\r
-                        &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                        &gEfiComponentNameProtocolGuid, ComponentName,\r
-                        NULL\r
-                        );\r
-      }\r
-    } else {\r
-      if (ComponentName == NULL || FeaturePcdGet(PcdComponentNameDisable)) {\r
-        Status = gBS->InstallMultipleProtocolInterfaces (\r
-                        &DriverBindingHandle,\r
-                        &gEfiDriverBindingProtocolGuid,       DriverBinding,\r
-                        &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,\r
-                        NULL\r
-                        );\r
-      } else {\r
-        Status = gBS->InstallMultipleProtocolInterfaces (\r
-                        &DriverBindingHandle,\r
-                        &gEfiDriverBindingProtocolGuid,       DriverBinding,\r
-                        &gEfiComponentNameProtocolGuid,       ComponentName,\r
-                        &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,\r
-                        NULL\r
-                        );\r
-      }\r
-    }\r
-  } else {\r
-    if (DriverConfiguration == NULL) {\r
-      if (ComponentName == NULL || FeaturePcdGet(PcdComponentNameDisable)) {\r
-        Status = gBS->InstallMultipleProtocolInterfaces (\r
-                        &DriverBindingHandle,\r
-                        &gEfiDriverBindingProtocolGuid,     DriverBinding,\r
-                        &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,\r
-                        NULL\r
-                        );\r
-      } else {\r
-        Status = gBS->InstallMultipleProtocolInterfaces (\r
-                        &DriverBindingHandle,\r
-                        &gEfiDriverBindingProtocolGuid,     DriverBinding,\r
-                        &gEfiComponentNameProtocolGuid,     ComponentName,\r
-                        &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,\r
-                        NULL\r
-                        );\r
-      }\r
-    } else {\r
-      if (ComponentName == NULL || FeaturePcdGet(PcdComponentNameDisable)) {\r
-       Status = gBS->InstallMultipleProtocolInterfaces (\r
-                        &DriverBindingHandle,\r
-                        &gEfiDriverBindingProtocolGuid,       DriverBinding,\r
-                        &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,\r
-                        &gEfiDriverDiagnosticsProtocolGuid,   DriverDiagnostics,\r
-                        NULL\r
-                        );\r
-      } else {\r
-        Status = gBS->InstallMultipleProtocolInterfaces (\r
-                        &DriverBindingHandle,\r
-                        &gEfiDriverBindingProtocolGuid,       DriverBinding,\r
-                        &gEfiComponentNameProtocolGuid,       ComponentName,\r
-                        &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,\r
-                        &gEfiDriverDiagnosticsProtocolGuid,   DriverDiagnostics,\r
-                        NULL\r
-                        );\r
-      }\r
-    }\r
-  }\r
-\r
-  //\r
-  // ASSERT if the call to InstallMultipleProtocolInterfaces() failed\r
-  //\r
-  ASSERT_EFI_ERROR (Status);\r
-\r
-  //\r
-  // Update the ImageHandle and DriverBindingHandle fields of the Driver Binding Protocol\r
-  //\r
-  DriverBinding->ImageHandle         = ImageHandle;\r
-  DriverBinding->DriverBindingHandle = DriverBindingHandle;\r
-\r
-  return Status;\r
-}\r
-\r
-\r
-\r
-/**\r
-  Intialize a driver by installing the Driver Binding Protocol together with the optional Component Name,\r
-  Component Name 2 onto the driver's DriverBindingHandle.  This is typically the same as the driver's\r
-  ImageHandle, but it can be different if the driver produces multiple DriverBinding Protocols. \r
-  If the Drvier Binding Protocol interface is NULL, then ASSERT (). \r
-  If the installation fails, then ASSERT ().\r
-\r
-  @param  ImageHandle                 The image handle of the driver.\r
-  @param  SystemTable                 The EFI System Table that was passed to the driver's entry point.\r
-  @param  DriverBinding               A Driver Binding Protocol instance that this driver is producing.\r
-  @param  DriverBindingHandle         The handle that DriverBinding is to be installe onto.  If this\r
-                                      parameter is NULL, then a new handle is created.\r
-  @param  ComponentName               A Component Name Protocol instance that this driver is producing.\r
-  @param  ComponentName2              A Component Name 2 Protocol instance that this driver is producing.\r
-\r
-  @retval EFI_SUCCESS                 The protocol installation is completed successfully.\r
-  @retval Others                      Status from gBS->InstallMultipleProtocolInterfaces().\r
-\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-EfiLibInstallDriverBindingComponentName2 (\r
-  IN CONST EFI_HANDLE                         ImageHandle,\r
-  IN CONST EFI_SYSTEM_TABLE                   *SystemTable,\r
-  IN EFI_DRIVER_BINDING_PROTOCOL              *DriverBinding,\r
-  IN EFI_HANDLE                               DriverBindingHandle,\r
-  IN CONST EFI_COMPONENT_NAME_PROTOCOL        *ComponentName,       OPTIONAL\r
-  IN CONST EFI_COMPONENT_NAME2_PROTOCOL       *ComponentName2       OPTIONAL\r
-  )\r
-{\r
-  EFI_STATUS  Status;\r
-\r
-  ASSERT (NULL != DriverBinding);\r
-\r
-  if (ComponentName == NULL || FeaturePcdGet(PcdComponentNameDisable)) {\r
-    if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {\r
-      Status = gBS->InstallMultipleProtocolInterfaces (\r
-                      &DriverBindingHandle,\r
-                      &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                      NULL\r
-                      );\r
-      } else {\r
-      Status = gBS->InstallMultipleProtocolInterfaces (\r
-                      &DriverBindingHandle,\r
-                      &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                      &gEfiComponentName2ProtocolGuid, ComponentName2,\r
-                      NULL\r
-                      );\r
-     }\r
-  } else {\r
-     if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {\r
-       Status = gBS->InstallMultipleProtocolInterfaces (\r
-                       &DriverBindingHandle,\r
-                       &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                       &gEfiComponentNameProtocolGuid, ComponentName,\r
-                       NULL\r
-                       );\r
-     } else {\r
-       Status = gBS->InstallMultipleProtocolInterfaces (\r
-                       &DriverBindingHandle,\r
-                       &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                       &gEfiComponentNameProtocolGuid, ComponentName,\r
-                       &gEfiComponentName2ProtocolGuid, ComponentName2,\r
-                       NULL\r
-                       );\r
-    }\r
-  }\r
-  //\r
-  // ASSERT if the call to InstallMultipleProtocolInterfaces() failed\r
-  //\r
-  ASSERT_EFI_ERROR (Status);\r
-\r
-  //\r
-  // Update the ImageHandle and DriverBindingHandle fields of the Driver Binding Protocol\r
-  //\r
-  DriverBinding->ImageHandle         = ImageHandle;\r
-  DriverBinding->DriverBindingHandle = DriverBindingHandle;\r
-\r
-  return Status;\r
-}\r
-\r
-\r
-\r
-/**\r
-  Intialize a driver by installing the Driver Binding Protocol together with the optional Component Name,\r
-  Component Name 2, Driver Configure, Driver Diagnostic and Driver Diagnostic 2 Protocols onto the driver's\r
-  DriverBindingHandle.  This is typically the same as the driver's ImageHandle, but it can be different if\r
-  the driver produces multiple DriverBinding Protocols. \r
-  If the Drvier Binding Protocol interface is NULL, then ASSERT (). \r
-  If the installation fails, then ASSERT ().\r
-\r
-  @param  ImageHandle                 The image handle of the driver.\r
-  @param  SystemTable                 The EFI System Table that was passed to the driver's entry point.\r
-  @param  DriverBinding               A Driver Binding Protocol instance that this driver is producing.\r
-  @param  DriverBindingHandle         The handle that DriverBinding is to be installe onto.  If this\r
-                                      parameter is NULL, then a new handle is created.\r
-  @param  ComponentName               A Component Name Protocol instance that this driver is producing.\r
-  @param  ComponentName2              A Component Name 2 Protocol instance that this driver is producing.\r
-  @param  DriverConfiguration         A Driver Configuration Protocol instance that this driver is producing.\r
-  @param  DriverDiagnostics           A Driver Diagnostics Protocol instance that this driver is producing.\r
-  @param  DriverDiagnostics2          A Driver Diagnostics Protocol 2 instance that this driver is producing.\r
-\r
-  @retval EFI_SUCCESS                 The protocol installation is completed successfully.\r
-  @retval Others                      Status from gBS->InstallMultipleProtocolInterfaces().\r
-\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-EfiLibInstallAllDriverProtocols2 (\r
-  IN CONST EFI_HANDLE                         ImageHandle,\r
-  IN CONST EFI_SYSTEM_TABLE                   *SystemTable,\r
-  IN EFI_DRIVER_BINDING_PROTOCOL              *DriverBinding,\r
-  IN EFI_HANDLE                               DriverBindingHandle,\r
-  IN CONST EFI_COMPONENT_NAME_PROTOCOL        *ComponentName,       OPTIONAL\r
-  IN CONST EFI_COMPONENT_NAME2_PROTOCOL       *ComponentName2,      OPTIONAL\r
-  IN CONST EFI_DRIVER_CONFIGURATION_PROTOCOL  *DriverConfiguration, OPTIONAL\r
-  IN CONST EFI_DRIVER_DIAGNOSTICS_PROTOCOL    *DriverDiagnostics,   OPTIONAL\r
-  IN CONST EFI_DRIVER_DIAGNOSTICS2_PROTOCOL   *DriverDiagnostics2   OPTIONAL\r
-  )\r
-{\r
-  EFI_STATUS  Status;\r
-\r
-  ASSERT (NULL != DriverBinding);\r
-\r
-  if (DriverConfiguration == NULL) {\r
-    if (DriverDiagnostics == NULL || FeaturePcdGet(PcdDriverDiagnosticsDisable)) {\r
-      if (DriverDiagnostics2 == NULL || FeaturePcdGet(PcdDriverDiagnostics2Disable)) {\r
-        if (ComponentName == NULL || FeaturePcdGet(PcdComponentNameDisable)) {\r
-          if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {\r
-            Status = gBS->InstallMultipleProtocolInterfaces (\r
-                            &DriverBindingHandle,\r
-                            &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                            NULL\r
-                            );\r
-          } else {\r
-            Status = gBS->InstallMultipleProtocolInterfaces (\r
-                            &DriverBindingHandle,\r
-                            &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                            &gEfiComponentName2ProtocolGuid, ComponentName2,\r
-                            NULL\r
-                            );\r
-          }\r
-        } else {\r
-          if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {\r
-            Status = gBS->InstallMultipleProtocolInterfaces (\r
-                            &DriverBindingHandle,\r
-                            &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                            &gEfiComponentNameProtocolGuid, ComponentName,\r
-                            NULL\r
-                            );\r
-          } else {\r
-            Status = gBS->InstallMultipleProtocolInterfaces (\r
-                            &DriverBindingHandle,\r
-                            &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                            &gEfiComponentNameProtocolGuid, ComponentName,\r
-                            &gEfiComponentName2ProtocolGuid, ComponentName2,\r
-                            NULL\r
-                            );\r
-          }\r
-        }\r
-      } else {\r
-        if (ComponentName == NULL || FeaturePcdGet(PcdComponentNameDisable)) {\r
-          if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {\r
-            Status = gBS->InstallMultipleProtocolInterfaces (\r
-                            &DriverBindingHandle,\r
-                            &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                            &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,\r
-                            NULL\r
-                            );\r
-          } else {\r
-            Status = gBS->InstallMultipleProtocolInterfaces (\r
-                            &DriverBindingHandle,\r
-                            &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                            &gEfiComponentName2ProtocolGuid, ComponentName2,\r
-                            &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,\r
-                            NULL\r
-                            );\r
-          }\r
-        } else {\r
-          if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {\r
-            Status = gBS->InstallMultipleProtocolInterfaces (\r
-                            &DriverBindingHandle,\r
-                            &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                            &gEfiComponentNameProtocolGuid, ComponentName,\r
-                            &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,\r
-                            NULL\r
-                            );\r
-          } else {\r
-            Status = gBS->InstallMultipleProtocolInterfaces (\r
-                            &DriverBindingHandle,\r
-                            &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                            &gEfiComponentNameProtocolGuid, ComponentName,\r
-                            &gEfiComponentName2ProtocolGuid, ComponentName2,\r
-                            &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,\r
-                            NULL\r
-                            );\r
-          }\r
-        }\r
-      }\r
-    } else {\r
-      if (DriverDiagnostics2 == NULL || FeaturePcdGet(PcdDriverDiagnostics2Disable)) {\r
-        if (ComponentName == NULL || FeaturePcdGet(PcdComponentNameDisable)) {\r
-          if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {\r
-            Status = gBS->InstallMultipleProtocolInterfaces (\r
-                            &DriverBindingHandle,\r
-                            &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                            &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,\r
-                            NULL\r
-                            );\r
-          } else {\r
-            Status = gBS->InstallMultipleProtocolInterfaces (\r
-                            &DriverBindingHandle,\r
-                            &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                            &gEfiComponentName2ProtocolGuid, ComponentName2,\r
-                            &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,\r
-                            NULL\r
-                            );\r
-          }\r
-        } else {\r
-          if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {\r
-            Status = gBS->InstallMultipleProtocolInterfaces (\r
-                            &DriverBindingHandle,\r
-                            &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                            &gEfiComponentNameProtocolGuid, ComponentName,\r
-                            &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,\r
-                            NULL\r
-                            );\r
-          } else {\r
-            Status = gBS->InstallMultipleProtocolInterfaces (\r
-                            &DriverBindingHandle,\r
-                            &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                            &gEfiComponentNameProtocolGuid, ComponentName,\r
-                            &gEfiComponentName2ProtocolGuid, ComponentName2,\r
-                            &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,\r
-                            NULL\r
-                            );\r
-          }\r
-        }\r
-      } else {\r
-        if (ComponentName == NULL || FeaturePcdGet(PcdComponentNameDisable)) {\r
-          if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {\r
-            Status = gBS->InstallMultipleProtocolInterfaces (\r
-                            &DriverBindingHandle,\r
-                            &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                            &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,\r
-                            &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,\r
-                            NULL\r
-                            );\r
-          } else {\r
-            Status = gBS->InstallMultipleProtocolInterfaces (\r
-                            &DriverBindingHandle,\r
-                            &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                            &gEfiComponentName2ProtocolGuid, ComponentName2,\r
-                            &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,\r
-                            &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,\r
-                            NULL\r
-                            );\r
-          }\r
-        } else {\r
-          if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {\r
-            Status = gBS->InstallMultipleProtocolInterfaces (\r
-                            &DriverBindingHandle,\r
-                            &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                            &gEfiComponentNameProtocolGuid, ComponentName,\r
-                            &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,\r
-                            &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,\r
-                            NULL\r
-                            );\r
-          } else {\r
-            Status = gBS->InstallMultipleProtocolInterfaces (\r
-                            &DriverBindingHandle,\r
-                            &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                            &gEfiComponentNameProtocolGuid, ComponentName,\r
-                            &gEfiComponentName2ProtocolGuid, ComponentName2,\r
-                            &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,\r
-                            &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,\r
-                            NULL\r
-                            );\r
-          }\r
-        }\r
-      }\r
-    }\r
-  } else {\r
-    if (DriverDiagnostics == NULL || FeaturePcdGet(PcdDriverDiagnosticsDisable)) {\r
-      if (DriverDiagnostics2 == NULL || FeaturePcdGet(PcdDriverDiagnostics2Disable)) {\r
-        if (ComponentName == NULL || FeaturePcdGet(PcdComponentNameDisable)) {\r
-          if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {\r
-            Status = gBS->InstallMultipleProtocolInterfaces (\r
-                            &DriverBindingHandle,\r
-                            &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                            &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,\r
-                            NULL\r
-                            );\r
-          } else {\r
-            Status = gBS->InstallMultipleProtocolInterfaces (\r
-                            &DriverBindingHandle,\r
-                            &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                            &gEfiComponentName2ProtocolGuid, ComponentName2,\r
-                            &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,\r
-                            NULL\r
-                            );\r
-          }\r
-        } else {\r
-          if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {\r
-            Status = gBS->InstallMultipleProtocolInterfaces (\r
-                            &DriverBindingHandle,\r
-                            &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                            &gEfiComponentNameProtocolGuid, ComponentName,\r
-                            &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,\r
-                            NULL\r
-                            );\r
-          } else {\r
-            Status = gBS->InstallMultipleProtocolInterfaces (\r
-                            &DriverBindingHandle,\r
-                            &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                            &gEfiComponentNameProtocolGuid, ComponentName,\r
-                            &gEfiComponentName2ProtocolGuid, ComponentName2,\r
-                            &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,\r
-                            NULL\r
-                            );\r
-          }\r
-        }\r
-      } else {\r
-        if (ComponentName == NULL || FeaturePcdGet(PcdComponentNameDisable)) {\r
-          if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {\r
-            Status = gBS->InstallMultipleProtocolInterfaces (\r
-                            &DriverBindingHandle,\r
-                            &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                            &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,\r
-                            &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,\r
-                            NULL\r
-                            );\r
-          } else {\r
-            Status = gBS->InstallMultipleProtocolInterfaces (\r
-                            &DriverBindingHandle,\r
-                            &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                            &gEfiComponentName2ProtocolGuid, ComponentName2,\r
-                            &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,\r
-                            &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,\r
-                            NULL\r
-                            );\r
-          }\r
-        } else {\r
-          if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {\r
-            Status = gBS->InstallMultipleProtocolInterfaces (\r
-                            &DriverBindingHandle,\r
-                            &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                            &gEfiComponentNameProtocolGuid, ComponentName,\r
-                            &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,\r
-                            &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,\r
-                            NULL\r
-                            );\r
-          } else {\r
-            Status = gBS->InstallMultipleProtocolInterfaces (\r
-                            &DriverBindingHandle,\r
-                            &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                            &gEfiComponentNameProtocolGuid, ComponentName,\r
-                            &gEfiComponentName2ProtocolGuid, ComponentName2,\r
-                            &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,\r
-                            &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,\r
-                            NULL\r
-                            );\r
-          }\r
-        }\r
-      }\r
-    } else {\r
-      if (DriverDiagnostics2 == NULL || FeaturePcdGet(PcdDriverDiagnostics2Disable)) {\r
-        if (ComponentName == NULL || FeaturePcdGet(PcdComponentNameDisable)) {\r
-          if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {\r
-            Status = gBS->InstallMultipleProtocolInterfaces (\r
-                            &DriverBindingHandle,\r
-                            &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                            &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,\r
-                            &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,\r
-                            NULL\r
-                            );\r
-          } else {\r
-            Status = gBS->InstallMultipleProtocolInterfaces (\r
-                            &DriverBindingHandle,\r
-                            &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                            &gEfiComponentName2ProtocolGuid, ComponentName2,\r
-                            &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,\r
-                            &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,\r
-                            NULL\r
-                            );\r
-          }\r
-        } else {\r
-          if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {\r
-            Status = gBS->InstallMultipleProtocolInterfaces (\r
-                            &DriverBindingHandle,\r
-                            &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                            &gEfiComponentNameProtocolGuid, ComponentName,\r
-                            &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,\r
-                            &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,\r
-                            NULL\r
-                            );\r
-          } else {\r
-            Status = gBS->InstallMultipleProtocolInterfaces (\r
-                            &DriverBindingHandle,\r
-                            &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                            &gEfiComponentNameProtocolGuid, ComponentName,\r
-                            &gEfiComponentName2ProtocolGuid, ComponentName2,\r
-                            &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,\r
-                            &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,\r
-                            NULL\r
-                            );\r
-          }\r
-        }\r
-      } else {\r
-        if (ComponentName == NULL || FeaturePcdGet(PcdComponentNameDisable)) {\r
-          if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {\r
-            Status = gBS->InstallMultipleProtocolInterfaces (\r
-                            &DriverBindingHandle,\r
-                            &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                            &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,\r
-                            &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,\r
-                            &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,\r
-                            NULL\r
-                            );\r
-          } else {\r
-            Status = gBS->InstallMultipleProtocolInterfaces (\r
-                            &DriverBindingHandle,\r
-                            &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                            &gEfiComponentName2ProtocolGuid, ComponentName2,\r
-                            &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,\r
-                            &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,\r
-                            &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,\r
-                            NULL\r
-                            );\r
-          }\r
-        } else {\r
-          if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {\r
-            Status = gBS->InstallMultipleProtocolInterfaces (\r
-                            &DriverBindingHandle,\r
-                            &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                            &gEfiComponentNameProtocolGuid, ComponentName,\r
-                            &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,\r
-                            &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,\r
-                            &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,\r
-                            NULL\r
-                            );\r
-          } else {\r
-            Status = gBS->InstallMultipleProtocolInterfaces (\r
-                            &DriverBindingHandle,\r
-                            &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                            &gEfiComponentNameProtocolGuid, ComponentName,\r
-                            &gEfiComponentName2ProtocolGuid, ComponentName2,\r
-                            &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,\r
-                            &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,\r
-                            &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,\r
-                            NULL\r
-                            );\r
-          }\r
-        }\r
-      }\r
-    }\r
-  }\r
-\r
-  //\r
-  // ASSERT if the call to InstallMultipleProtocolInterfaces() failed\r
-  //\r
-  ASSERT_EFI_ERROR (Status);\r
-\r
-  //\r
-  // Update the ImageHandle and DriverBindingHandle fields of the Driver Binding Protocol\r
-  //\r
-  DriverBinding->ImageHandle         = ImageHandle;\r
-  DriverBinding->DriverBindingHandle = DriverBindingHandle;\r
-\r
-  return Status;\r
-}\r
-\r
-\r