/** @file\r
Library functions that abstract driver model protocols\r
- installation.\r
+ installation and uninstallation.\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
+ Copyright (c) 2019, NVIDIA Corporation. All rights reserved.\r
+ Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>\r
+ SPDX-License-Identifier: BSD-2-Clause-Patent\r
\r
-**/ \r
+**/\r
\r
-//\r
-// Include common header file for this module.\r
-//\r
-#include "CommonHeader.h"\r
+#include "UefiLibInternal.h"\r
\r
/**\r
- Intialize a driver by installing the Driver Binding Protocol onto the\r
- driver's DriverBindingHandle. This is typically the same as the driver's\r
- ImageHandle, but it can be different if the driver produces multiple\r
- DriverBinding Protocols. This function also initializes the EFI Driver\r
- Library that initializes the global variables gST, gBS, gRT.\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
+ Installs and completes the initialization of a Driver Binding Protocol instance.\r
+\r
+ Installs the Driver Binding Protocol specified by DriverBinding onto the handle\r
+ specified by DriverBindingHandle. If DriverBindingHandle is NULL, then DriverBinding\r
+ is installed onto a newly created handle. DriverBindingHandle is typically the same\r
+ as the driver's ImageHandle, but it can be different if the driver produces multiple\r
+ Driver Binding Protocols.\r
+ If DriverBinding is NULL, then ASSERT().\r
+ If DriverBinding can not be installed onto a handle, 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 installed onto. If this\r
parameter is NULL, then a new handle is created.\r
\r
- @retval EFI_SUCCESS DriverBinding is installed onto DriverBindingHandle\r
- @retval Other Status from gBS->InstallProtocolInterface()\r
+ @retval EFI_SUCCESS The protocol installation successfully completed.\r
+ @retval EFI_OUT_OF_RESOURCES There was not enough system resources to install the protocol.\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 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
+ ASSERT (DriverBinding != NULL);\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
Status = gBS->InstallMultipleProtocolInterfaces (\r
- &DriverBindingHandle,\r
- &gEfiDriverBindingProtocolGuid, DriverBinding,\r
+ &DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
NULL\r
);\r
//\r
//\r
ASSERT_EFI_ERROR (Status);\r
\r
+ return Status;\r
+}\r
+\r
+/**\r
+ Uninstalls a Driver Binding Protocol instance.\r
+\r
+ If DriverBinding is NULL, then ASSERT().\r
+ If DriverBinding can not be uninstalled, then ASSERT().\r
+\r
+ @param DriverBinding A Driver Binding Protocol instance that this driver produced.\r
+\r
+ @retval EFI_SUCCESS The protocol uninstallation successfully completed.\r
+ @retval Others Status from gBS->UninstallMultipleProtocolInterfaces().\r
+\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+EfiLibUninstallDriverBinding (\r
+ IN EFI_DRIVER_BINDING_PROTOCOL *DriverBinding\r
+ )\r
+{\r
+ EFI_STATUS Status;\r
+\r
+ ASSERT (DriverBinding != NULL);\r
+\r
+ Status = gBS->UninstallMultipleProtocolInterfaces (\r
+ DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ NULL\r
+ );\r
//\r
- // Update the ImageHandle and DriverBindingHandle fields of the Driver Binding Protocol\r
+ // ASSERT if the call to UninstallMultipleProtocolInterfaces() failed\r
//\r
- DriverBinding->ImageHandle = ImageHandle;\r
- DriverBinding->DriverBindingHandle = DriverBindingHandle;\r
+ ASSERT_EFI_ERROR (Status);\r
\r
return Status;\r
}\r
\r
/**\r
- Intialize a driver by installing the Driver Binding Protocol onto the\r
- driver's DriverBindingHandle. This is typically the same as the driver's\r
- ImageHandle, but it can be different if the driver produces multiple\r
- DriverBinding Protocols. This function also initializes the EFI Driver\r
- Library that initializes the global variables gST, gBS, gRT.\r
-\r
- @ImageHandle The image handle of the driver\r
- @SystemTable The EFI System Table that was passed to the driver's entry point\r
- @DriverBinding A Driver Binding Protocol instance that this driver is producing\r
- @DriverBindingHandle The handle that DriverBinding is to be installe onto. If this\r
+ Installs and completes the initialization of a Driver Binding Protocol instance and\r
+ optionally installs the Component Name, Driver Configuration and Driver Diagnostics Protocols.\r
+\r
+ Initializes a driver by installing the Driver Binding Protocol together with the\r
+ optional Component Name, optional Driver Configure and optional Driver Diagnostic\r
+ Protocols onto the driver's DriverBindingHandle. If DriverBindingHandle is NULL,\r
+ then the protocols are installed onto a newly created handle. DriverBindingHandle\r
+ is typically the same as the driver's ImageHandle, but it can be different if the\r
+ driver produces multiple Driver Binding Protocols.\r
+ If DriverBinding 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 installed onto. If this\r
parameter is NULL, then a new handle is created.\r
- @ComponentName A Component Name Protocol instance that this driver is producing\r
- @DriverConfiguration A Driver Configuration Protocol instance that this driver is producing\r
- @DriverDiagnostics A Driver Diagnostics Protocol instance that this driver is producing\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 DriverBinding is installed onto DriverBindingHandle\r
- @retval Other Status from gBS->InstallProtocolInterface()\r
+ @retval EFI_SUCCESS The protocol installation successfully completed.\r
+ @retval EFI_OUT_OF_RESOURCES There was not enough memory in pool to install all the protocols.\r
\r
**/\r
EFI_STATUS\r
EFIAPI\r
EfiLibInstallAllDriverProtocols (\r
- IN const EFI_HANDLE ImageHandle,\r
- IN const EFI_SYSTEM_TABLE *SystemTable,\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
+ 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
+ ASSERT (DriverBinding != NULL);\r
\r
- if (DriverDiagnostics == NULL || FeaturePcdGet(PcdDriverDiagnosticsDisable)) {\r
+ //\r
+ // Update the ImageHandle and DriverBindingHandle fields of the Driver Binding Protocol\r
+ //\r
+ DriverBinding->ImageHandle = ImageHandle;\r
+ DriverBinding->DriverBindingHandle = DriverBindingHandle;\r
+\r
+ if ((DriverDiagnostics == NULL) || FeaturePcdGet (PcdDriverDiagnosticsDisable)) {\r
if (DriverConfiguration == NULL) {\r
- if (ComponentName == NULL || FeaturePcdGet(PcdComponentNameDisable)) {\r
+ if ((ComponentName == NULL) || FeaturePcdGet (PcdComponentNameDisable)) {\r
Status = gBS->InstallMultipleProtocolInterfaces (\r
- &DriverBindingHandle,\r
- &gEfiDriverBindingProtocolGuid, DriverBinding,\r
+ &DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
NULL\r
);\r
} else {\r
Status = gBS->InstallMultipleProtocolInterfaces (\r
- &DriverBindingHandle,\r
- &gEfiDriverBindingProtocolGuid, DriverBinding,\r
- &gEfiComponentNameProtocolGuid, ComponentName,\r
+ &DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiComponentNameProtocolGuid,\r
+ ComponentName,\r
NULL\r
);\r
}\r
} else {\r
- if (ComponentName == NULL || FeaturePcdGet(PcdComponentNameDisable)) {\r
+ if ((ComponentName == NULL) || FeaturePcdGet (PcdComponentNameDisable)) {\r
Status = gBS->InstallMultipleProtocolInterfaces (\r
- &DriverBindingHandle,\r
- &gEfiDriverBindingProtocolGuid, DriverBinding,\r
- &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,\r
+ &DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiDriverConfigurationProtocolGuid,\r
+ DriverConfiguration,\r
NULL\r
);\r
} else {\r
Status = gBS->InstallMultipleProtocolInterfaces (\r
- &DriverBindingHandle,\r
- &gEfiDriverBindingProtocolGuid, DriverBinding,\r
- &gEfiComponentNameProtocolGuid, ComponentName,\r
- &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,\r
+ &DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiComponentNameProtocolGuid,\r
+ ComponentName,\r
+ &gEfiDriverConfigurationProtocolGuid,\r
+ DriverConfiguration,\r
NULL\r
);\r
}\r
}\r
} else {\r
if (DriverConfiguration == NULL) {\r
- if (ComponentName == NULL || FeaturePcdGet(PcdComponentNameDisable)) {\r
+ if ((ComponentName == NULL) || FeaturePcdGet (PcdComponentNameDisable)) {\r
Status = gBS->InstallMultipleProtocolInterfaces (\r
- &DriverBindingHandle,\r
- &gEfiDriverBindingProtocolGuid, DriverBinding,\r
- &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,\r
+ &DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiDriverDiagnosticsProtocolGuid,\r
+ DriverDiagnostics,\r
NULL\r
);\r
} else {\r
Status = gBS->InstallMultipleProtocolInterfaces (\r
- &DriverBindingHandle,\r
- &gEfiDriverBindingProtocolGuid, DriverBinding,\r
- &gEfiComponentNameProtocolGuid, ComponentName,\r
- &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,\r
+ &DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiComponentNameProtocolGuid,\r
+ ComponentName,\r
+ &gEfiDriverDiagnosticsProtocolGuid,\r
+ 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
+ if ((ComponentName == NULL) || FeaturePcdGet (PcdComponentNameDisable)) {\r
+ Status = gBS->InstallMultipleProtocolInterfaces (\r
+ &DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiDriverConfigurationProtocolGuid,\r
+ DriverConfiguration,\r
+ &gEfiDriverDiagnosticsProtocolGuid,\r
+ 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
+ &DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiComponentNameProtocolGuid,\r
+ ComponentName,\r
+ &gEfiDriverConfigurationProtocolGuid,\r
+ DriverConfiguration,\r
+ &gEfiDriverDiagnosticsProtocolGuid,\r
+ DriverDiagnostics,\r
NULL\r
);\r
}\r
//\r
ASSERT_EFI_ERROR (Status);\r
\r
+ return Status;\r
+}\r
+\r
+/**\r
+ Uninstalls a Driver Binding Protocol instance and optionally uninstalls the\r
+ Component Name, Driver Configuration and Driver Diagnostics Protocols.\r
+\r
+ If DriverBinding is NULL, then ASSERT().\r
+ If the uninstallation fails, then ASSERT().\r
+\r
+ @param DriverBinding A Driver Binding Protocol instance that this driver produced.\r
+ @param ComponentName A Component Name Protocol instance that this driver produced.\r
+ @param DriverConfiguration A Driver Configuration Protocol instance that this driver produced.\r
+ @param DriverDiagnostics A Driver Diagnostics Protocol instance that this driver produced.\r
+\r
+ @retval EFI_SUCCESS The protocol uninstallation successfully completed.\r
+ @retval Others Status from gBS->UninstallMultipleProtocolInterfaces().\r
+\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+EfiLibUninstallAllDriverProtocols (\r
+ IN EFI_DRIVER_BINDING_PROTOCOL *DriverBinding,\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 (DriverBinding != NULL);\r
+\r
+ if ((DriverDiagnostics == NULL) || FeaturePcdGet (PcdDriverDiagnosticsDisable)) {\r
+ if (DriverConfiguration == NULL) {\r
+ if ((ComponentName == NULL) || FeaturePcdGet (PcdComponentNameDisable)) {\r
+ Status = gBS->UninstallMultipleProtocolInterfaces (\r
+ DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ NULL\r
+ );\r
+ } else {\r
+ Status = gBS->UninstallMultipleProtocolInterfaces (\r
+ DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiComponentNameProtocolGuid,\r
+ ComponentName,\r
+ NULL\r
+ );\r
+ }\r
+ } else {\r
+ if ((ComponentName == NULL) || FeaturePcdGet (PcdComponentNameDisable)) {\r
+ Status = gBS->UninstallMultipleProtocolInterfaces (\r
+ DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiDriverConfigurationProtocolGuid,\r
+ DriverConfiguration,\r
+ NULL\r
+ );\r
+ } else {\r
+ Status = gBS->UninstallMultipleProtocolInterfaces (\r
+ DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiComponentNameProtocolGuid,\r
+ ComponentName,\r
+ &gEfiDriverConfigurationProtocolGuid,\r
+ DriverConfiguration,\r
+ NULL\r
+ );\r
+ }\r
+ }\r
+ } else {\r
+ if (DriverConfiguration == NULL) {\r
+ if ((ComponentName == NULL) || FeaturePcdGet (PcdComponentNameDisable)) {\r
+ Status = gBS->UninstallMultipleProtocolInterfaces (\r
+ DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiDriverDiagnosticsProtocolGuid,\r
+ DriverDiagnostics,\r
+ NULL\r
+ );\r
+ } else {\r
+ Status = gBS->UninstallMultipleProtocolInterfaces (\r
+ DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiComponentNameProtocolGuid,\r
+ ComponentName,\r
+ &gEfiDriverDiagnosticsProtocolGuid,\r
+ DriverDiagnostics,\r
+ NULL\r
+ );\r
+ }\r
+ } else {\r
+ if ((ComponentName == NULL) || FeaturePcdGet (PcdComponentNameDisable)) {\r
+ Status = gBS->UninstallMultipleProtocolInterfaces (\r
+ DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiDriverConfigurationProtocolGuid,\r
+ DriverConfiguration,\r
+ &gEfiDriverDiagnosticsProtocolGuid,\r
+ DriverDiagnostics,\r
+ NULL\r
+ );\r
+ } else {\r
+ Status = gBS->UninstallMultipleProtocolInterfaces (\r
+ DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiComponentNameProtocolGuid,\r
+ ComponentName,\r
+ &gEfiDriverConfigurationProtocolGuid,\r
+ DriverConfiguration,\r
+ &gEfiDriverDiagnosticsProtocolGuid,\r
+ DriverDiagnostics,\r
+ NULL\r
+ );\r
+ }\r
+ }\r
+ }\r
+\r
+ //\r
+ // ASSERT if the call to UninstallMultipleProtocolInterfaces() failed\r
+ //\r
+ ASSERT_EFI_ERROR (Status);\r
+\r
+ return Status;\r
+}\r
+\r
+/**\r
+ Installs Driver Binding Protocol with optional Component Name and Component Name 2 Protocols.\r
+\r
+ Initializes a driver by installing the Driver Binding Protocol together with the\r
+ optional Component Name and optional Component Name 2 protocols onto the driver's\r
+ DriverBindingHandle. If DriverBindingHandle is NULL, then the protocols are installed\r
+ onto a newly created handle. DriverBindingHandle is typically the same as the driver's\r
+ ImageHandle, but it can be different if the driver produces multiple Driver Binding Protocols.\r
+ If DriverBinding 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 installed 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 successfully completed.\r
+ @retval EFI_OUT_OF_RESOURCES There was not enough memory in pool to install all the protocols.\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 (DriverBinding != NULL);\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
+ if ((ComponentName == NULL) || FeaturePcdGet (PcdComponentNameDisable)) {\r
+ if ((ComponentName2 == NULL) || FeaturePcdGet (PcdComponentName2Disable)) {\r
+ Status = gBS->InstallMultipleProtocolInterfaces (\r
+ &DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ NULL\r
+ );\r
+ } else {\r
+ Status = gBS->InstallMultipleProtocolInterfaces (\r
+ &DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiComponentName2ProtocolGuid,\r
+ ComponentName2,\r
+ NULL\r
+ );\r
+ }\r
+ } else {\r
+ if ((ComponentName2 == NULL) || FeaturePcdGet (PcdComponentName2Disable)) {\r
+ Status = gBS->InstallMultipleProtocolInterfaces (\r
+ &DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiComponentNameProtocolGuid,\r
+ ComponentName,\r
+ NULL\r
+ );\r
+ } else {\r
+ Status = gBS->InstallMultipleProtocolInterfaces (\r
+ &DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiComponentNameProtocolGuid,\r
+ ComponentName,\r
+ &gEfiComponentName2ProtocolGuid,\r
+ ComponentName2,\r
+ NULL\r
+ );\r
+ }\r
+ }\r
+\r
+ //\r
+ // ASSERT if the call to InstallMultipleProtocolInterfaces() failed\r
+ //\r
+ ASSERT_EFI_ERROR (Status);\r
+\r
return Status;\r
}\r
\r
+/**\r
+ Uninstalls Driver Binding Protocol with optional Component Name and Component Name 2 Protocols.\r
+\r
+ If DriverBinding is NULL, then ASSERT().\r
+ If the uninstallation fails, then ASSERT().\r
+\r
+ @param DriverBinding A Driver Binding Protocol instance that this driver produced.\r
+ @param ComponentName A Component Name Protocol instance that this driver produced.\r
+ @param ComponentName2 A Component Name 2 Protocol instance that this driver produced.\r
+\r
+ @retval EFI_SUCCESS The protocol installation successfully completed.\r
+ @retval Others Status from gBS->UninstallMultipleProtocolInterfaces().\r
+\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+EfiLibUninstallDriverBindingComponentName2 (\r
+ IN EFI_DRIVER_BINDING_PROTOCOL *DriverBinding,\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 (DriverBinding != NULL);\r
+\r
+ if ((ComponentName == NULL) || FeaturePcdGet (PcdComponentNameDisable)) {\r
+ if ((ComponentName2 == NULL) || FeaturePcdGet (PcdComponentName2Disable)) {\r
+ Status = gBS->UninstallMultipleProtocolInterfaces (\r
+ DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ NULL\r
+ );\r
+ } else {\r
+ Status = gBS->UninstallMultipleProtocolInterfaces (\r
+ DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiComponentName2ProtocolGuid,\r
+ ComponentName2,\r
+ NULL\r
+ );\r
+ }\r
+ } else {\r
+ if ((ComponentName2 == NULL) || FeaturePcdGet (PcdComponentName2Disable)) {\r
+ Status = gBS->UninstallMultipleProtocolInterfaces (\r
+ DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiComponentNameProtocolGuid,\r
+ ComponentName,\r
+ NULL\r
+ );\r
+ } else {\r
+ Status = gBS->UninstallMultipleProtocolInterfaces (\r
+ DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiComponentNameProtocolGuid,\r
+ ComponentName,\r
+ &gEfiComponentName2ProtocolGuid,\r
+ ComponentName2,\r
+ NULL\r
+ );\r
+ }\r
+ }\r
+\r
+ //\r
+ // ASSERT if the call to UninstallMultipleProtocolInterfaces() failed\r
+ //\r
+ ASSERT_EFI_ERROR (Status);\r
+\r
+ return Status;\r
+}\r
\r
/**\r
- Intialize a driver by installing the Driver Binding Protocol onto the\r
- driver's DriverBindingHandle. This is typically the same as the driver's\r
- ImageHandle, but it can be different if the driver produces multiple\r
- DriverBinding Protocols. This function also initializes the EFI Driver\r
- Library that initializes the global variables gST, gBS, gRT.\r
-\r
- @ImageHandle The image handle of the driver\r
- @SystemTable The EFI System Table that was passed to the driver's entry point\r
- @DriverBinding A Driver Binding Protocol instance that this driver is producing\r
- @DriverBindingHandle The handle that DriverBinding is to be installe onto. If this\r
- parameter is NULL, then a new handle is created.\r
- @ComponentName A Component Name Protocol instance that this driver is producing\r
- @DriverConfiguration A Driver Configuration Protocol instance that this driver is producing\r
- @DriverDiagnostics A Driver Diagnostics Protocol instance that this driver is producing\r
+ Installs Driver Binding Protocol with optional Component Name, Component Name 2, Driver\r
+ Configuration, Driver Configuration 2, Driver Diagnostics, and Driver Diagnostics 2 Protocols.\r
+\r
+ Initializes a driver by installing the Driver Binding Protocol together with the optional\r
+ Component Name, optional Component Name 2, optional Driver Configuration, optional Driver Configuration 2,\r
+ optional Driver Diagnostic, and optional Driver Diagnostic 2 Protocols onto the driver's DriverBindingHandle.\r
+ DriverBindingHandle is typically the same as the driver's ImageHandle, but it can be different if the driver\r
+ produces multiple Driver Binding Protocols.\r
+ If DriverBinding is NULL, then ASSERT().\r
+ If the installation fails, then ASSERT().\r
\r
- @retval EFI_SUCCESS DriverBinding is installed onto DriverBindingHandle\r
- @retval Other Status from gBS->InstallProtocolInterface()\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 installed 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 DriverConfiguration2 A Driver Configuration Protocol 2 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 successfully completed.\r
+ @retval EFI_OUT_OF_RESOURCES There was not enough memory in pool to install all the protocols.\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
+ 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_CONFIGURATION2_PROTOCOL *DriverConfiguration2 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
+ ASSERT (DriverBinding != NULL);\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
+ if (DriverConfiguration2 == NULL) {\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
+ &DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ NULL\r
+ );\r
+ } else {\r
+ Status = gBS->InstallMultipleProtocolInterfaces (\r
+ &DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiComponentName2ProtocolGuid,\r
+ ComponentName2,\r
+ NULL\r
+ );\r
+ }\r
+ } else {\r
+ if ((ComponentName2 == NULL) || FeaturePcdGet (PcdComponentName2Disable)) {\r
+ Status = gBS->InstallMultipleProtocolInterfaces (\r
+ &DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiComponentNameProtocolGuid,\r
+ ComponentName,\r
+ NULL\r
+ );\r
+ } else {\r
+ Status = gBS->InstallMultipleProtocolInterfaces (\r
+ &DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiComponentNameProtocolGuid,\r
+ ComponentName,\r
+ &gEfiComponentName2ProtocolGuid,\r
+ ComponentName2,\r
+ NULL\r
+ );\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
+ if ((ComponentName == NULL) || FeaturePcdGet (PcdComponentNameDisable)) {\r
+ if ((ComponentName2 == NULL) || FeaturePcdGet (PcdComponentName2Disable)) {\r
+ Status = gBS->InstallMultipleProtocolInterfaces (\r
+ &DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiDriverDiagnostics2ProtocolGuid,\r
+ DriverDiagnostics2,\r
+ NULL\r
+ );\r
+ } else {\r
+ Status = gBS->InstallMultipleProtocolInterfaces (\r
+ &DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiComponentName2ProtocolGuid,\r
+ ComponentName2,\r
+ &gEfiDriverDiagnostics2ProtocolGuid,\r
+ DriverDiagnostics2,\r
+ NULL\r
+ );\r
+ }\r
+ } else {\r
+ if ((ComponentName2 == NULL) || FeaturePcdGet (PcdComponentName2Disable)) {\r
+ Status = gBS->InstallMultipleProtocolInterfaces (\r
+ &DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiComponentNameProtocolGuid,\r
+ ComponentName,\r
+ &gEfiDriverDiagnostics2ProtocolGuid,\r
+ DriverDiagnostics2,\r
+ NULL\r
+ );\r
+ } else {\r
+ Status = gBS->InstallMultipleProtocolInterfaces (\r
+ &DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiComponentNameProtocolGuid,\r
+ ComponentName,\r
+ &gEfiComponentName2ProtocolGuid,\r
+ ComponentName2,\r
+ &gEfiDriverDiagnostics2ProtocolGuid,\r
+ DriverDiagnostics2,\r
+ NULL\r
+ );\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
+ if ((DriverDiagnostics2 == NULL) || FeaturePcdGet (PcdDriverDiagnostics2Disable)) {\r
+ if ((ComponentName == NULL) || FeaturePcdGet (PcdComponentNameDisable)) {\r
+ if ((ComponentName2 == NULL) || FeaturePcdGet (PcdComponentName2Disable)) {\r
+ Status = gBS->InstallMultipleProtocolInterfaces (\r
+ &DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiDriverDiagnosticsProtocolGuid,\r
+ DriverDiagnostics,\r
+ NULL\r
+ );\r
+ } else {\r
+ Status = gBS->InstallMultipleProtocolInterfaces (\r
+ &DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiComponentName2ProtocolGuid,\r
+ ComponentName2,\r
+ &gEfiDriverDiagnosticsProtocolGuid,\r
+ DriverDiagnostics,\r
+ NULL\r
+ );\r
+ }\r
+ } else {\r
+ if ((ComponentName2 == NULL) || FeaturePcdGet (PcdComponentName2Disable)) {\r
+ Status = gBS->InstallMultipleProtocolInterfaces (\r
+ &DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiComponentNameProtocolGuid,\r
+ ComponentName,\r
+ &gEfiDriverDiagnosticsProtocolGuid,\r
+ DriverDiagnostics,\r
+ NULL\r
+ );\r
+ } else {\r
+ Status = gBS->InstallMultipleProtocolInterfaces (\r
+ &DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiComponentNameProtocolGuid,\r
+ ComponentName,\r
+ &gEfiComponentName2ProtocolGuid,\r
+ ComponentName2,\r
+ &gEfiDriverDiagnosticsProtocolGuid,\r
+ DriverDiagnostics,\r
+ NULL\r
+ );\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
+ if ((ComponentName == NULL) || FeaturePcdGet (PcdComponentNameDisable)) {\r
+ if ((ComponentName2 == NULL) || FeaturePcdGet (PcdComponentName2Disable)) {\r
+ Status = gBS->InstallMultipleProtocolInterfaces (\r
+ &DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiDriverDiagnosticsProtocolGuid,\r
+ DriverDiagnostics,\r
+ &gEfiDriverDiagnostics2ProtocolGuid,\r
+ DriverDiagnostics2,\r
+ NULL\r
+ );\r
+ } else {\r
+ Status = gBS->InstallMultipleProtocolInterfaces (\r
+ &DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiComponentName2ProtocolGuid,\r
+ ComponentName2,\r
+ &gEfiDriverDiagnosticsProtocolGuid,\r
+ DriverDiagnostics,\r
+ &gEfiDriverDiagnostics2ProtocolGuid,\r
+ DriverDiagnostics2,\r
+ NULL\r
+ );\r
+ }\r
+ } else {\r
+ if ((ComponentName2 == NULL) || FeaturePcdGet (PcdComponentName2Disable)) {\r
+ Status = gBS->InstallMultipleProtocolInterfaces (\r
+ &DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiComponentNameProtocolGuid,\r
+ ComponentName,\r
+ &gEfiDriverDiagnosticsProtocolGuid,\r
+ DriverDiagnostics,\r
+ &gEfiDriverDiagnostics2ProtocolGuid,\r
+ DriverDiagnostics2,\r
+ NULL\r
+ );\r
+ } else {\r
+ Status = gBS->InstallMultipleProtocolInterfaces (\r
+ &DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiComponentNameProtocolGuid,\r
+ ComponentName,\r
+ &gEfiComponentName2ProtocolGuid,\r
+ ComponentName2,\r
+ &gEfiDriverDiagnosticsProtocolGuid,\r
+ DriverDiagnostics,\r
+ &gEfiDriverDiagnostics2ProtocolGuid,\r
+ DriverDiagnostics2,\r
+ NULL\r
+ );\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
+ 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
+ &DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiDriverConfigurationProtocolGuid,\r
+ DriverConfiguration,\r
+ NULL\r
+ );\r
+ } else {\r
+ Status = gBS->InstallMultipleProtocolInterfaces (\r
+ &DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiComponentName2ProtocolGuid,\r
+ ComponentName2,\r
+ &gEfiDriverConfigurationProtocolGuid,\r
+ DriverConfiguration,\r
+ NULL\r
+ );\r
+ }\r
+ } else {\r
+ if ((ComponentName2 == NULL) || FeaturePcdGet (PcdComponentName2Disable)) {\r
+ Status = gBS->InstallMultipleProtocolInterfaces (\r
+ &DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiComponentNameProtocolGuid,\r
+ ComponentName,\r
+ &gEfiDriverConfigurationProtocolGuid,\r
+ DriverConfiguration,\r
+ NULL\r
+ );\r
+ } else {\r
+ Status = gBS->InstallMultipleProtocolInterfaces (\r
+ &DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiComponentNameProtocolGuid,\r
+ ComponentName,\r
+ &gEfiComponentName2ProtocolGuid,\r
+ ComponentName2,\r
+ &gEfiDriverConfigurationProtocolGuid,\r
+ DriverConfiguration,\r
+ NULL\r
+ );\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
+ if ((ComponentName == NULL) || FeaturePcdGet (PcdComponentNameDisable)) {\r
+ if ((ComponentName2 == NULL) || FeaturePcdGet (PcdComponentName2Disable)) {\r
+ Status = gBS->InstallMultipleProtocolInterfaces (\r
+ &DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiDriverConfigurationProtocolGuid,\r
+ DriverConfiguration,\r
+ &gEfiDriverDiagnostics2ProtocolGuid,\r
+ DriverDiagnostics2,\r
+ NULL\r
+ );\r
+ } else {\r
+ Status = gBS->InstallMultipleProtocolInterfaces (\r
+ &DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiComponentName2ProtocolGuid,\r
+ ComponentName2,\r
+ &gEfiDriverConfigurationProtocolGuid,\r
+ DriverConfiguration,\r
+ &gEfiDriverDiagnostics2ProtocolGuid,\r
+ DriverDiagnostics2,\r
+ NULL\r
+ );\r
+ }\r
+ } else {\r
+ if ((ComponentName2 == NULL) || FeaturePcdGet (PcdComponentName2Disable)) {\r
+ Status = gBS->InstallMultipleProtocolInterfaces (\r
+ &DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiComponentNameProtocolGuid,\r
+ ComponentName,\r
+ &gEfiDriverConfigurationProtocolGuid,\r
+ DriverConfiguration,\r
+ &gEfiDriverDiagnostics2ProtocolGuid,\r
+ DriverDiagnostics2,\r
+ NULL\r
+ );\r
+ } else {\r
+ Status = gBS->InstallMultipleProtocolInterfaces (\r
+ &DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiComponentNameProtocolGuid,\r
+ ComponentName,\r
+ &gEfiComponentName2ProtocolGuid,\r
+ ComponentName2,\r
+ &gEfiDriverConfigurationProtocolGuid,\r
+ DriverConfiguration,\r
+ &gEfiDriverDiagnostics2ProtocolGuid,\r
+ DriverDiagnostics2,\r
+ NULL\r
+ );\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
+ if ((DriverDiagnostics2 == NULL) || FeaturePcdGet (PcdDriverDiagnostics2Disable)) {\r
+ if ((ComponentName == NULL) || FeaturePcdGet (PcdComponentNameDisable)) {\r
+ if ((ComponentName2 == NULL) || FeaturePcdGet (PcdComponentName2Disable)) {\r
+ Status = gBS->InstallMultipleProtocolInterfaces (\r
+ &DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiDriverConfigurationProtocolGuid,\r
+ DriverConfiguration,\r
+ &gEfiDriverDiagnosticsProtocolGuid,\r
+ DriverDiagnostics,\r
+ NULL\r
+ );\r
+ } else {\r
+ Status = gBS->InstallMultipleProtocolInterfaces (\r
+ &DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiComponentName2ProtocolGuid,\r
+ ComponentName2,\r
+ &gEfiDriverConfigurationProtocolGuid,\r
+ DriverConfiguration,\r
+ &gEfiDriverDiagnosticsProtocolGuid,\r
+ DriverDiagnostics,\r
+ NULL\r
+ );\r
+ }\r
+ } else {\r
+ if ((ComponentName2 == NULL) || FeaturePcdGet (PcdComponentName2Disable)) {\r
+ Status = gBS->InstallMultipleProtocolInterfaces (\r
+ &DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiComponentNameProtocolGuid,\r
+ ComponentName,\r
+ &gEfiDriverConfigurationProtocolGuid,\r
+ DriverConfiguration,\r
+ &gEfiDriverDiagnosticsProtocolGuid,\r
+ DriverDiagnostics,\r
+ NULL\r
+ );\r
+ } else {\r
+ Status = gBS->InstallMultipleProtocolInterfaces (\r
+ &DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiComponentNameProtocolGuid,\r
+ ComponentName,\r
+ &gEfiComponentName2ProtocolGuid,\r
+ ComponentName2,\r
+ &gEfiDriverConfigurationProtocolGuid,\r
+ DriverConfiguration,\r
+ &gEfiDriverDiagnosticsProtocolGuid,\r
+ DriverDiagnostics,\r
+ NULL\r
+ );\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
+ if ((ComponentName == NULL) || FeaturePcdGet (PcdComponentNameDisable)) {\r
+ if ((ComponentName2 == NULL) || FeaturePcdGet (PcdComponentName2Disable)) {\r
+ Status = gBS->InstallMultipleProtocolInterfaces (\r
+ &DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiDriverConfigurationProtocolGuid,\r
+ DriverConfiguration,\r
+ &gEfiDriverDiagnosticsProtocolGuid,\r
+ DriverDiagnostics,\r
+ &gEfiDriverDiagnostics2ProtocolGuid,\r
+ DriverDiagnostics2,\r
+ NULL\r
+ );\r
+ } else {\r
+ Status = gBS->InstallMultipleProtocolInterfaces (\r
+ &DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiComponentName2ProtocolGuid,\r
+ ComponentName2,\r
+ &gEfiDriverConfigurationProtocolGuid,\r
+ DriverConfiguration,\r
+ &gEfiDriverDiagnosticsProtocolGuid,\r
+ DriverDiagnostics,\r
+ &gEfiDriverDiagnostics2ProtocolGuid,\r
+ DriverDiagnostics2,\r
+ NULL\r
+ );\r
+ }\r
+ } else {\r
+ if ((ComponentName2 == NULL) || FeaturePcdGet (PcdComponentName2Disable)) {\r
+ Status = gBS->InstallMultipleProtocolInterfaces (\r
+ &DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiComponentNameProtocolGuid,\r
+ ComponentName,\r
+ &gEfiDriverConfigurationProtocolGuid,\r
+ DriverConfiguration,\r
+ &gEfiDriverDiagnosticsProtocolGuid,\r
+ DriverDiagnostics,\r
+ &gEfiDriverDiagnostics2ProtocolGuid,\r
+ DriverDiagnostics2,\r
+ NULL\r
+ );\r
+ } else {\r
+ Status = gBS->InstallMultipleProtocolInterfaces (\r
+ &DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiComponentNameProtocolGuid,\r
+ ComponentName,\r
+ &gEfiComponentName2ProtocolGuid,\r
+ ComponentName2,\r
+ &gEfiDriverConfigurationProtocolGuid,\r
+ DriverConfiguration,\r
+ &gEfiDriverDiagnosticsProtocolGuid,\r
+ DriverDiagnostics,\r
+ &gEfiDriverDiagnostics2ProtocolGuid,\r
+ DriverDiagnostics2,\r
+ NULL\r
+ );\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
+ 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
+ &DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiDriverConfiguration2ProtocolGuid,\r
+ DriverConfiguration2,\r
+ NULL\r
+ );\r
+ } else {\r
+ Status = gBS->InstallMultipleProtocolInterfaces (\r
+ &DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiComponentName2ProtocolGuid,\r
+ ComponentName2,\r
+ &gEfiDriverConfiguration2ProtocolGuid,\r
+ DriverConfiguration2,\r
+ NULL\r
+ );\r
+ }\r
+ } else {\r
+ if ((ComponentName2 == NULL) || FeaturePcdGet (PcdComponentName2Disable)) {\r
+ Status = gBS->InstallMultipleProtocolInterfaces (\r
+ &DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiComponentNameProtocolGuid,\r
+ ComponentName,\r
+ &gEfiDriverConfiguration2ProtocolGuid,\r
+ DriverConfiguration2,\r
+ NULL\r
+ );\r
+ } else {\r
+ Status = gBS->InstallMultipleProtocolInterfaces (\r
+ &DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiComponentNameProtocolGuid,\r
+ ComponentName,\r
+ &gEfiComponentName2ProtocolGuid,\r
+ ComponentName2,\r
+ &gEfiDriverConfiguration2ProtocolGuid,\r
+ DriverConfiguration2,\r
+ NULL\r
+ );\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
+ if ((ComponentName == NULL) || FeaturePcdGet (PcdComponentNameDisable)) {\r
+ if ((ComponentName2 == NULL) || FeaturePcdGet (PcdComponentName2Disable)) {\r
+ Status = gBS->InstallMultipleProtocolInterfaces (\r
+ &DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiDriverDiagnostics2ProtocolGuid,\r
+ DriverDiagnostics2,\r
+ &gEfiDriverConfiguration2ProtocolGuid,\r
+ DriverConfiguration2,\r
+ NULL\r
+ );\r
+ } else {\r
+ Status = gBS->InstallMultipleProtocolInterfaces (\r
+ &DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiComponentName2ProtocolGuid,\r
+ ComponentName2,\r
+ &gEfiDriverConfiguration2ProtocolGuid,\r
+ DriverConfiguration2,\r
+ &gEfiDriverDiagnostics2ProtocolGuid,\r
+ DriverDiagnostics2,\r
+ NULL\r
+ );\r
+ }\r
+ } else {\r
+ if ((ComponentName2 == NULL) || FeaturePcdGet (PcdComponentName2Disable)) {\r
+ Status = gBS->InstallMultipleProtocolInterfaces (\r
+ &DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiComponentNameProtocolGuid,\r
+ ComponentName,\r
+ &gEfiDriverConfiguration2ProtocolGuid,\r
+ DriverConfiguration2,\r
+ &gEfiDriverDiagnostics2ProtocolGuid,\r
+ DriverDiagnostics2,\r
+ NULL\r
+ );\r
+ } else {\r
+ Status = gBS->InstallMultipleProtocolInterfaces (\r
+ &DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiComponentNameProtocolGuid,\r
+ ComponentName,\r
+ &gEfiComponentName2ProtocolGuid,\r
+ ComponentName2,\r
+ &gEfiDriverConfiguration2ProtocolGuid,\r
+ DriverConfiguration2,\r
+ &gEfiDriverDiagnostics2ProtocolGuid,\r
+ DriverDiagnostics2,\r
+ NULL\r
+ );\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
+ if ((DriverDiagnostics2 == NULL) || FeaturePcdGet (PcdDriverDiagnostics2Disable)) {\r
+ if ((ComponentName == NULL) || FeaturePcdGet (PcdComponentNameDisable)) {\r
+ if ((ComponentName2 == NULL) || FeaturePcdGet (PcdComponentName2Disable)) {\r
+ Status = gBS->InstallMultipleProtocolInterfaces (\r
+ &DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiDriverDiagnosticsProtocolGuid,\r
+ DriverDiagnostics,\r
+ &gEfiDriverConfiguration2ProtocolGuid,\r
+ DriverConfiguration2,\r
+ NULL\r
+ );\r
+ } else {\r
+ Status = gBS->InstallMultipleProtocolInterfaces (\r
+ &DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiComponentName2ProtocolGuid,\r
+ ComponentName2,\r
+ &gEfiDriverConfiguration2ProtocolGuid,\r
+ DriverConfiguration2,\r
+ &gEfiDriverDiagnosticsProtocolGuid,\r
+ DriverDiagnostics,\r
+ NULL\r
+ );\r
+ }\r
+ } else {\r
+ if ((ComponentName2 == NULL) || FeaturePcdGet (PcdComponentName2Disable)) {\r
+ Status = gBS->InstallMultipleProtocolInterfaces (\r
+ &DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiComponentNameProtocolGuid,\r
+ ComponentName,\r
+ &gEfiDriverDiagnosticsProtocolGuid,\r
+ DriverDiagnostics,\r
+ &gEfiDriverConfiguration2ProtocolGuid,\r
+ DriverConfiguration2,\r
+ NULL\r
+ );\r
+ } else {\r
+ Status = gBS->InstallMultipleProtocolInterfaces (\r
+ &DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiComponentNameProtocolGuid,\r
+ ComponentName,\r
+ &gEfiComponentName2ProtocolGuid,\r
+ ComponentName2,\r
+ &gEfiDriverConfiguration2ProtocolGuid,\r
+ DriverConfiguration2,\r
+ &gEfiDriverDiagnosticsProtocolGuid,\r
+ DriverDiagnostics,\r
+ NULL\r
+ );\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
+ if ((ComponentName == NULL) || FeaturePcdGet (PcdComponentNameDisable)) {\r
+ if ((ComponentName2 == NULL) || FeaturePcdGet (PcdComponentName2Disable)) {\r
+ Status = gBS->InstallMultipleProtocolInterfaces (\r
+ &DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiDriverConfiguration2ProtocolGuid,\r
+ DriverConfiguration2,\r
+ &gEfiDriverDiagnosticsProtocolGuid,\r
+ DriverDiagnostics,\r
+ &gEfiDriverDiagnostics2ProtocolGuid,\r
+ DriverDiagnostics2,\r
+ NULL\r
+ );\r
+ } else {\r
+ Status = gBS->InstallMultipleProtocolInterfaces (\r
+ &DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiComponentName2ProtocolGuid,\r
+ ComponentName2,\r
+ &gEfiDriverConfiguration2ProtocolGuid,\r
+ DriverConfiguration2,\r
+ &gEfiDriverDiagnosticsProtocolGuid,\r
+ DriverDiagnostics,\r
+ &gEfiDriverDiagnostics2ProtocolGuid,\r
+ DriverDiagnostics2,\r
+ NULL\r
+ );\r
+ }\r
+ } else {\r
+ if ((ComponentName2 == NULL) || FeaturePcdGet (PcdComponentName2Disable)) {\r
+ Status = gBS->InstallMultipleProtocolInterfaces (\r
+ &DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiComponentNameProtocolGuid,\r
+ ComponentName,\r
+ &gEfiDriverConfiguration2ProtocolGuid,\r
+ DriverConfiguration2,\r
+ &gEfiDriverDiagnosticsProtocolGuid,\r
+ DriverDiagnostics,\r
+ &gEfiDriverDiagnostics2ProtocolGuid,\r
+ DriverDiagnostics2,\r
+ NULL\r
+ );\r
+ } else {\r
+ Status = gBS->InstallMultipleProtocolInterfaces (\r
+ &DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiComponentNameProtocolGuid,\r
+ ComponentName,\r
+ &gEfiComponentName2ProtocolGuid,\r
+ ComponentName2,\r
+ &gEfiDriverConfiguration2ProtocolGuid,\r
+ DriverConfiguration2,\r
+ &gEfiDriverDiagnosticsProtocolGuid,\r
+ DriverDiagnostics,\r
+ &gEfiDriverDiagnostics2ProtocolGuid,\r
+ DriverDiagnostics2,\r
+ NULL\r
+ );\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
+ 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
+ &DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiDriverConfigurationProtocolGuid,\r
+ DriverConfiguration,\r
+ &gEfiDriverConfiguration2ProtocolGuid,\r
+ DriverConfiguration2,\r
+ NULL\r
+ );\r
+ } else {\r
+ Status = gBS->InstallMultipleProtocolInterfaces (\r
+ &DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiComponentName2ProtocolGuid,\r
+ ComponentName2,\r
+ &gEfiDriverConfigurationProtocolGuid,\r
+ DriverConfiguration,\r
+ &gEfiDriverConfiguration2ProtocolGuid,\r
+ DriverConfiguration2,\r
+ NULL\r
+ );\r
+ }\r
+ } else {\r
+ if ((ComponentName2 == NULL) || FeaturePcdGet (PcdComponentName2Disable)) {\r
+ Status = gBS->InstallMultipleProtocolInterfaces (\r
+ &DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiComponentNameProtocolGuid,\r
+ ComponentName,\r
+ &gEfiDriverConfigurationProtocolGuid,\r
+ DriverConfiguration,\r
+ &gEfiDriverConfiguration2ProtocolGuid,\r
+ DriverConfiguration2,\r
+ NULL\r
+ );\r
+ } else {\r
+ Status = gBS->InstallMultipleProtocolInterfaces (\r
+ &DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiComponentNameProtocolGuid,\r
+ ComponentName,\r
+ &gEfiComponentName2ProtocolGuid,\r
+ ComponentName2,\r
+ &gEfiDriverConfigurationProtocolGuid,\r
+ DriverConfiguration,\r
+ &gEfiDriverConfiguration2ProtocolGuid,\r
+ DriverConfiguration2,\r
+ NULL\r
+ );\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
+ if ((ComponentName == NULL) || FeaturePcdGet (PcdComponentNameDisable)) {\r
+ if ((ComponentName2 == NULL) || FeaturePcdGet (PcdComponentName2Disable)) {\r
+ Status = gBS->InstallMultipleProtocolInterfaces (\r
+ &DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiDriverConfigurationProtocolGuid,\r
+ DriverConfiguration,\r
+ &gEfiDriverConfiguration2ProtocolGuid,\r
+ DriverConfiguration2,\r
+ &gEfiDriverDiagnostics2ProtocolGuid,\r
+ DriverDiagnostics2,\r
+ NULL\r
+ );\r
+ } else {\r
+ Status = gBS->InstallMultipleProtocolInterfaces (\r
+ &DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiComponentName2ProtocolGuid,\r
+ ComponentName2,\r
+ &gEfiDriverConfigurationProtocolGuid,\r
+ DriverConfiguration,\r
+ &gEfiDriverConfiguration2ProtocolGuid,\r
+ DriverConfiguration2,\r
+ &gEfiDriverDiagnostics2ProtocolGuid,\r
+ DriverDiagnostics2,\r
+ NULL\r
+ );\r
+ }\r
+ } else {\r
+ if ((ComponentName2 == NULL) || FeaturePcdGet (PcdComponentName2Disable)) {\r
+ Status = gBS->InstallMultipleProtocolInterfaces (\r
+ &DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiComponentNameProtocolGuid,\r
+ ComponentName,\r
+ &gEfiDriverConfigurationProtocolGuid,\r
+ DriverConfiguration,\r
+ &gEfiDriverConfiguration2ProtocolGuid,\r
+ DriverConfiguration2,\r
+ &gEfiDriverDiagnostics2ProtocolGuid,\r
+ DriverDiagnostics2,\r
+ NULL\r
+ );\r
+ } else {\r
+ Status = gBS->InstallMultipleProtocolInterfaces (\r
+ &DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiComponentNameProtocolGuid,\r
+ ComponentName,\r
+ &gEfiComponentName2ProtocolGuid,\r
+ ComponentName2,\r
+ &gEfiDriverConfigurationProtocolGuid,\r
+ DriverConfiguration,\r
+ &gEfiDriverConfiguration2ProtocolGuid,\r
+ DriverConfiguration2,\r
+ &gEfiDriverDiagnostics2ProtocolGuid,\r
+ DriverDiagnostics2,\r
+ NULL\r
+ );\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
+ if ((DriverDiagnostics2 == NULL) || FeaturePcdGet (PcdDriverDiagnostics2Disable)) {\r
+ if ((ComponentName == NULL) || FeaturePcdGet (PcdComponentNameDisable)) {\r
+ if ((ComponentName2 == NULL) || FeaturePcdGet (PcdComponentName2Disable)) {\r
+ Status = gBS->InstallMultipleProtocolInterfaces (\r
+ &DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiDriverConfigurationProtocolGuid,\r
+ DriverConfiguration,\r
+ &gEfiDriverConfiguration2ProtocolGuid,\r
+ DriverConfiguration2,\r
+ &gEfiDriverDiagnosticsProtocolGuid,\r
+ DriverDiagnostics,\r
+ NULL\r
+ );\r
+ } else {\r
+ Status = gBS->InstallMultipleProtocolInterfaces (\r
+ &DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiComponentName2ProtocolGuid,\r
+ ComponentName2,\r
+ &gEfiDriverConfigurationProtocolGuid,\r
+ DriverConfiguration,\r
+ &gEfiDriverConfiguration2ProtocolGuid,\r
+ DriverConfiguration2,\r
+ &gEfiDriverDiagnosticsProtocolGuid,\r
+ DriverDiagnostics,\r
+ NULL\r
+ );\r
+ }\r
+ } else {\r
+ if ((ComponentName2 == NULL) || FeaturePcdGet (PcdComponentName2Disable)) {\r
+ Status = gBS->InstallMultipleProtocolInterfaces (\r
+ &DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiComponentNameProtocolGuid,\r
+ ComponentName,\r
+ &gEfiDriverConfigurationProtocolGuid,\r
+ DriverConfiguration,\r
+ &gEfiDriverConfiguration2ProtocolGuid,\r
+ DriverConfiguration2,\r
+ &gEfiDriverDiagnosticsProtocolGuid,\r
+ DriverDiagnostics,\r
+ NULL\r
+ );\r
+ } else {\r
+ Status = gBS->InstallMultipleProtocolInterfaces (\r
+ &DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiComponentNameProtocolGuid,\r
+ ComponentName,\r
+ &gEfiComponentName2ProtocolGuid,\r
+ ComponentName2,\r
+ &gEfiDriverConfigurationProtocolGuid,\r
+ DriverConfiguration,\r
+ &gEfiDriverConfiguration2ProtocolGuid,\r
+ DriverConfiguration2,\r
+ &gEfiDriverDiagnosticsProtocolGuid,\r
+ DriverDiagnostics,\r
+ NULL\r
+ );\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
+ if ((ComponentName == NULL) || FeaturePcdGet (PcdComponentNameDisable)) {\r
+ if ((ComponentName2 == NULL) || FeaturePcdGet (PcdComponentName2Disable)) {\r
+ Status = gBS->InstallMultipleProtocolInterfaces (\r
+ &DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiDriverConfigurationProtocolGuid,\r
+ DriverConfiguration,\r
+ &gEfiDriverConfiguration2ProtocolGuid,\r
+ DriverConfiguration2,\r
+ &gEfiDriverDiagnosticsProtocolGuid,\r
+ DriverDiagnostics,\r
+ &gEfiDriverDiagnostics2ProtocolGuid,\r
+ DriverDiagnostics2,\r
+ NULL\r
+ );\r
+ } else {\r
+ Status = gBS->InstallMultipleProtocolInterfaces (\r
+ &DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiComponentName2ProtocolGuid,\r
+ ComponentName2,\r
+ &gEfiDriverConfigurationProtocolGuid,\r
+ DriverConfiguration,\r
+ &gEfiDriverConfiguration2ProtocolGuid,\r
+ DriverConfiguration2,\r
+ &gEfiDriverDiagnosticsProtocolGuid,\r
+ DriverDiagnostics,\r
+ &gEfiDriverDiagnostics2ProtocolGuid,\r
+ DriverDiagnostics2,\r
+ NULL\r
+ );\r
+ }\r
+ } else {\r
+ if ((ComponentName2 == NULL) || FeaturePcdGet (PcdComponentName2Disable)) {\r
+ Status = gBS->InstallMultipleProtocolInterfaces (\r
+ &DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiComponentNameProtocolGuid,\r
+ ComponentName,\r
+ &gEfiDriverConfigurationProtocolGuid,\r
+ DriverConfiguration,\r
+ &gEfiDriverConfiguration2ProtocolGuid,\r
+ DriverConfiguration2,\r
+ &gEfiDriverDiagnosticsProtocolGuid,\r
+ DriverDiagnostics,\r
+ &gEfiDriverDiagnostics2ProtocolGuid,\r
+ DriverDiagnostics2,\r
+ NULL\r
+ );\r
+ } else {\r
+ Status = gBS->InstallMultipleProtocolInterfaces (\r
+ &DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiComponentNameProtocolGuid,\r
+ ComponentName,\r
+ &gEfiComponentName2ProtocolGuid,\r
+ ComponentName2,\r
+ &gEfiDriverConfigurationProtocolGuid,\r
+ DriverConfiguration,\r
+ &gEfiDriverConfiguration2ProtocolGuid,\r
+ DriverConfiguration2,\r
+ &gEfiDriverDiagnosticsProtocolGuid,\r
+ DriverDiagnostics,\r
+ &gEfiDriverDiagnostics2ProtocolGuid,\r
+ DriverDiagnostics2,\r
+ NULL\r
+ );\r
+ }\r
}\r
}\r
}\r
//\r
ASSERT_EFI_ERROR (Status);\r
\r
+ return Status;\r
+}\r
+\r
+/**\r
+ Uninstalls Driver Binding Protocol with optional Component Name, Component Name 2, Driver\r
+ Configuration, Driver Configuration 2, Driver Diagnostics, and Driver Diagnostics 2 Protocols.\r
+\r
+ If DriverBinding is NULL, then ASSERT().\r
+ If the installation fails, then ASSERT().\r
+\r
+\r
+ @param DriverBinding A Driver Binding Protocol instance that this driver produced.\r
+ @param ComponentName A Component Name Protocol instance that this driver produced.\r
+ @param ComponentName2 A Component Name 2 Protocol instance that this driver produced.\r
+ @param DriverConfiguration A Driver Configuration Protocol instance that this driver produced.\r
+ @param DriverConfiguration2 A Driver Configuration Protocol 2 instance that this driver produced.\r
+ @param DriverDiagnostics A Driver Diagnostics Protocol instance that this driver produced.\r
+ @param DriverDiagnostics2 A Driver Diagnostics Protocol 2 instance that this driver produced.\r
+\r
+ @retval EFI_SUCCESS The protocol uninstallation successfully completed.\r
+ @retval Others Status from gBS->UninstallMultipleProtocolInterfaces().\r
+\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+EfiLibUninstallAllDriverProtocols2 (\r
+ IN EFI_DRIVER_BINDING_PROTOCOL *DriverBinding,\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_CONFIGURATION2_PROTOCOL *DriverConfiguration2 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 (DriverBinding != NULL);\r
+\r
+ if (DriverConfiguration2 == NULL) {\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->UninstallMultipleProtocolInterfaces (\r
+ DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ NULL\r
+ );\r
+ } else {\r
+ Status = gBS->UninstallMultipleProtocolInterfaces (\r
+ DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiComponentName2ProtocolGuid,\r
+ ComponentName2,\r
+ NULL\r
+ );\r
+ }\r
+ } else {\r
+ if ((ComponentName2 == NULL) || FeaturePcdGet (PcdComponentName2Disable)) {\r
+ Status = gBS->UninstallMultipleProtocolInterfaces (\r
+ DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiComponentNameProtocolGuid,\r
+ ComponentName,\r
+ NULL\r
+ );\r
+ } else {\r
+ Status = gBS->UninstallMultipleProtocolInterfaces (\r
+ DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiComponentNameProtocolGuid,\r
+ ComponentName,\r
+ &gEfiComponentName2ProtocolGuid,\r
+ ComponentName2,\r
+ NULL\r
+ );\r
+ }\r
+ }\r
+ } else {\r
+ if ((ComponentName == NULL) || FeaturePcdGet (PcdComponentNameDisable)) {\r
+ if ((ComponentName2 == NULL) || FeaturePcdGet (PcdComponentName2Disable)) {\r
+ Status = gBS->UninstallMultipleProtocolInterfaces (\r
+ DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiDriverDiagnostics2ProtocolGuid,\r
+ DriverDiagnostics2,\r
+ NULL\r
+ );\r
+ } else {\r
+ Status = gBS->UninstallMultipleProtocolInterfaces (\r
+ DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiComponentName2ProtocolGuid,\r
+ ComponentName2,\r
+ &gEfiDriverDiagnostics2ProtocolGuid,\r
+ DriverDiagnostics2,\r
+ NULL\r
+ );\r
+ }\r
+ } else {\r
+ if ((ComponentName2 == NULL) || FeaturePcdGet (PcdComponentName2Disable)) {\r
+ Status = gBS->UninstallMultipleProtocolInterfaces (\r
+ DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiComponentNameProtocolGuid,\r
+ ComponentName,\r
+ &gEfiDriverDiagnostics2ProtocolGuid,\r
+ DriverDiagnostics2,\r
+ NULL\r
+ );\r
+ } else {\r
+ Status = gBS->UninstallMultipleProtocolInterfaces (\r
+ DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiComponentNameProtocolGuid,\r
+ ComponentName,\r
+ &gEfiComponentName2ProtocolGuid,\r
+ ComponentName2,\r
+ &gEfiDriverDiagnostics2ProtocolGuid,\r
+ 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->UninstallMultipleProtocolInterfaces (\r
+ DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiDriverDiagnosticsProtocolGuid,\r
+ DriverDiagnostics,\r
+ NULL\r
+ );\r
+ } else {\r
+ Status = gBS->UninstallMultipleProtocolInterfaces (\r
+ DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiComponentName2ProtocolGuid,\r
+ ComponentName2,\r
+ &gEfiDriverDiagnosticsProtocolGuid,\r
+ DriverDiagnostics,\r
+ NULL\r
+ );\r
+ }\r
+ } else {\r
+ if ((ComponentName2 == NULL) || FeaturePcdGet (PcdComponentName2Disable)) {\r
+ Status = gBS->UninstallMultipleProtocolInterfaces (\r
+ DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiComponentNameProtocolGuid,\r
+ ComponentName,\r
+ &gEfiDriverDiagnosticsProtocolGuid,\r
+ DriverDiagnostics,\r
+ NULL\r
+ );\r
+ } else {\r
+ Status = gBS->UninstallMultipleProtocolInterfaces (\r
+ DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiComponentNameProtocolGuid,\r
+ ComponentName,\r
+ &gEfiComponentName2ProtocolGuid,\r
+ ComponentName2,\r
+ &gEfiDriverDiagnosticsProtocolGuid,\r
+ DriverDiagnostics,\r
+ NULL\r
+ );\r
+ }\r
+ }\r
+ } else {\r
+ if ((ComponentName == NULL) || FeaturePcdGet (PcdComponentNameDisable)) {\r
+ if ((ComponentName2 == NULL) || FeaturePcdGet (PcdComponentName2Disable)) {\r
+ Status = gBS->UninstallMultipleProtocolInterfaces (\r
+ DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiDriverDiagnosticsProtocolGuid,\r
+ DriverDiagnostics,\r
+ &gEfiDriverDiagnostics2ProtocolGuid,\r
+ DriverDiagnostics2,\r
+ NULL\r
+ );\r
+ } else {\r
+ Status = gBS->UninstallMultipleProtocolInterfaces (\r
+ DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiComponentName2ProtocolGuid,\r
+ ComponentName2,\r
+ &gEfiDriverDiagnosticsProtocolGuid,\r
+ DriverDiagnostics,\r
+ &gEfiDriverDiagnostics2ProtocolGuid,\r
+ DriverDiagnostics2,\r
+ NULL\r
+ );\r
+ }\r
+ } else {\r
+ if ((ComponentName2 == NULL) || FeaturePcdGet (PcdComponentName2Disable)) {\r
+ Status = gBS->UninstallMultipleProtocolInterfaces (\r
+ DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiComponentNameProtocolGuid,\r
+ ComponentName,\r
+ &gEfiDriverDiagnosticsProtocolGuid,\r
+ DriverDiagnostics,\r
+ &gEfiDriverDiagnostics2ProtocolGuid,\r
+ DriverDiagnostics2,\r
+ NULL\r
+ );\r
+ } else {\r
+ Status = gBS->UninstallMultipleProtocolInterfaces (\r
+ DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiComponentNameProtocolGuid,\r
+ ComponentName,\r
+ &gEfiComponentName2ProtocolGuid,\r
+ ComponentName2,\r
+ &gEfiDriverDiagnosticsProtocolGuid,\r
+ DriverDiagnostics,\r
+ &gEfiDriverDiagnostics2ProtocolGuid,\r
+ 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->UninstallMultipleProtocolInterfaces (\r
+ DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiDriverConfigurationProtocolGuid,\r
+ DriverConfiguration,\r
+ NULL\r
+ );\r
+ } else {\r
+ Status = gBS->UninstallMultipleProtocolInterfaces (\r
+ DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiComponentName2ProtocolGuid,\r
+ ComponentName2,\r
+ &gEfiDriverConfigurationProtocolGuid,\r
+ DriverConfiguration,\r
+ NULL\r
+ );\r
+ }\r
+ } else {\r
+ if ((ComponentName2 == NULL) || FeaturePcdGet (PcdComponentName2Disable)) {\r
+ Status = gBS->UninstallMultipleProtocolInterfaces (\r
+ DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiComponentNameProtocolGuid,\r
+ ComponentName,\r
+ &gEfiDriverConfigurationProtocolGuid,\r
+ DriverConfiguration,\r
+ NULL\r
+ );\r
+ } else {\r
+ Status = gBS->UninstallMultipleProtocolInterfaces (\r
+ DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiComponentNameProtocolGuid,\r
+ ComponentName,\r
+ &gEfiComponentName2ProtocolGuid,\r
+ ComponentName2,\r
+ &gEfiDriverConfigurationProtocolGuid,\r
+ DriverConfiguration,\r
+ NULL\r
+ );\r
+ }\r
+ }\r
+ } else {\r
+ if ((ComponentName == NULL) || FeaturePcdGet (PcdComponentNameDisable)) {\r
+ if ((ComponentName2 == NULL) || FeaturePcdGet (PcdComponentName2Disable)) {\r
+ Status = gBS->UninstallMultipleProtocolInterfaces (\r
+ DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiDriverConfigurationProtocolGuid,\r
+ DriverConfiguration,\r
+ &gEfiDriverDiagnostics2ProtocolGuid,\r
+ DriverDiagnostics2,\r
+ NULL\r
+ );\r
+ } else {\r
+ Status = gBS->UninstallMultipleProtocolInterfaces (\r
+ DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiComponentName2ProtocolGuid,\r
+ ComponentName2,\r
+ &gEfiDriverConfigurationProtocolGuid,\r
+ DriverConfiguration,\r
+ &gEfiDriverDiagnostics2ProtocolGuid,\r
+ DriverDiagnostics2,\r
+ NULL\r
+ );\r
+ }\r
+ } else {\r
+ if ((ComponentName2 == NULL) || FeaturePcdGet (PcdComponentName2Disable)) {\r
+ Status = gBS->UninstallMultipleProtocolInterfaces (\r
+ DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiComponentNameProtocolGuid,\r
+ ComponentName,\r
+ &gEfiDriverConfigurationProtocolGuid,\r
+ DriverConfiguration,\r
+ &gEfiDriverDiagnostics2ProtocolGuid,\r
+ DriverDiagnostics2,\r
+ NULL\r
+ );\r
+ } else {\r
+ Status = gBS->UninstallMultipleProtocolInterfaces (\r
+ DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiComponentNameProtocolGuid,\r
+ ComponentName,\r
+ &gEfiComponentName2ProtocolGuid,\r
+ ComponentName2,\r
+ &gEfiDriverConfigurationProtocolGuid,\r
+ DriverConfiguration,\r
+ &gEfiDriverDiagnostics2ProtocolGuid,\r
+ 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->UninstallMultipleProtocolInterfaces (\r
+ DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiDriverConfigurationProtocolGuid,\r
+ DriverConfiguration,\r
+ &gEfiDriverDiagnosticsProtocolGuid,\r
+ DriverDiagnostics,\r
+ NULL\r
+ );\r
+ } else {\r
+ Status = gBS->UninstallMultipleProtocolInterfaces (\r
+ DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiComponentName2ProtocolGuid,\r
+ ComponentName2,\r
+ &gEfiDriverConfigurationProtocolGuid,\r
+ DriverConfiguration,\r
+ &gEfiDriverDiagnosticsProtocolGuid,\r
+ DriverDiagnostics,\r
+ NULL\r
+ );\r
+ }\r
+ } else {\r
+ if ((ComponentName2 == NULL) || FeaturePcdGet (PcdComponentName2Disable)) {\r
+ Status = gBS->UninstallMultipleProtocolInterfaces (\r
+ DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiComponentNameProtocolGuid,\r
+ ComponentName,\r
+ &gEfiDriverConfigurationProtocolGuid,\r
+ DriverConfiguration,\r
+ &gEfiDriverDiagnosticsProtocolGuid,\r
+ DriverDiagnostics,\r
+ NULL\r
+ );\r
+ } else {\r
+ Status = gBS->UninstallMultipleProtocolInterfaces (\r
+ DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiComponentNameProtocolGuid,\r
+ ComponentName,\r
+ &gEfiComponentName2ProtocolGuid,\r
+ ComponentName2,\r
+ &gEfiDriverConfigurationProtocolGuid,\r
+ DriverConfiguration,\r
+ &gEfiDriverDiagnosticsProtocolGuid,\r
+ DriverDiagnostics,\r
+ NULL\r
+ );\r
+ }\r
+ }\r
+ } else {\r
+ if ((ComponentName == NULL) || FeaturePcdGet (PcdComponentNameDisable)) {\r
+ if ((ComponentName2 == NULL) || FeaturePcdGet (PcdComponentName2Disable)) {\r
+ Status = gBS->UninstallMultipleProtocolInterfaces (\r
+ DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiDriverConfigurationProtocolGuid,\r
+ DriverConfiguration,\r
+ &gEfiDriverDiagnosticsProtocolGuid,\r
+ DriverDiagnostics,\r
+ &gEfiDriverDiagnostics2ProtocolGuid,\r
+ DriverDiagnostics2,\r
+ NULL\r
+ );\r
+ } else {\r
+ Status = gBS->UninstallMultipleProtocolInterfaces (\r
+ DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiComponentName2ProtocolGuid,\r
+ ComponentName2,\r
+ &gEfiDriverConfigurationProtocolGuid,\r
+ DriverConfiguration,\r
+ &gEfiDriverDiagnosticsProtocolGuid,\r
+ DriverDiagnostics,\r
+ &gEfiDriverDiagnostics2ProtocolGuid,\r
+ DriverDiagnostics2,\r
+ NULL\r
+ );\r
+ }\r
+ } else {\r
+ if ((ComponentName2 == NULL) || FeaturePcdGet (PcdComponentName2Disable)) {\r
+ Status = gBS->UninstallMultipleProtocolInterfaces (\r
+ DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiComponentNameProtocolGuid,\r
+ ComponentName,\r
+ &gEfiDriverConfigurationProtocolGuid,\r
+ DriverConfiguration,\r
+ &gEfiDriverDiagnosticsProtocolGuid,\r
+ DriverDiagnostics,\r
+ &gEfiDriverDiagnostics2ProtocolGuid,\r
+ DriverDiagnostics2,\r
+ NULL\r
+ );\r
+ } else {\r
+ Status = gBS->UninstallMultipleProtocolInterfaces (\r
+ DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiComponentNameProtocolGuid,\r
+ ComponentName,\r
+ &gEfiComponentName2ProtocolGuid,\r
+ ComponentName2,\r
+ &gEfiDriverConfigurationProtocolGuid,\r
+ DriverConfiguration,\r
+ &gEfiDriverDiagnosticsProtocolGuid,\r
+ DriverDiagnostics,\r
+ &gEfiDriverDiagnostics2ProtocolGuid,\r
+ DriverDiagnostics2,\r
+ NULL\r
+ );\r
+ }\r
+ }\r
+ }\r
+ }\r
+ }\r
+ } else {\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->UninstallMultipleProtocolInterfaces (\r
+ DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiDriverConfiguration2ProtocolGuid,\r
+ DriverConfiguration2,\r
+ NULL\r
+ );\r
+ } else {\r
+ Status = gBS->UninstallMultipleProtocolInterfaces (\r
+ DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiComponentName2ProtocolGuid,\r
+ ComponentName2,\r
+ &gEfiDriverConfiguration2ProtocolGuid,\r
+ DriverConfiguration2,\r
+ NULL\r
+ );\r
+ }\r
+ } else {\r
+ if ((ComponentName2 == NULL) || FeaturePcdGet (PcdComponentName2Disable)) {\r
+ Status = gBS->UninstallMultipleProtocolInterfaces (\r
+ DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiComponentNameProtocolGuid,\r
+ ComponentName,\r
+ &gEfiDriverConfiguration2ProtocolGuid,\r
+ DriverConfiguration2,\r
+ NULL\r
+ );\r
+ } else {\r
+ Status = gBS->UninstallMultipleProtocolInterfaces (\r
+ DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiComponentNameProtocolGuid,\r
+ ComponentName,\r
+ &gEfiComponentName2ProtocolGuid,\r
+ ComponentName2,\r
+ &gEfiDriverConfiguration2ProtocolGuid,\r
+ DriverConfiguration2,\r
+ NULL\r
+ );\r
+ }\r
+ }\r
+ } else {\r
+ if ((ComponentName == NULL) || FeaturePcdGet (PcdComponentNameDisable)) {\r
+ if ((ComponentName2 == NULL) || FeaturePcdGet (PcdComponentName2Disable)) {\r
+ Status = gBS->UninstallMultipleProtocolInterfaces (\r
+ DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiDriverDiagnostics2ProtocolGuid,\r
+ DriverDiagnostics2,\r
+ &gEfiDriverConfiguration2ProtocolGuid,\r
+ DriverConfiguration2,\r
+ NULL\r
+ );\r
+ } else {\r
+ Status = gBS->UninstallMultipleProtocolInterfaces (\r
+ DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiComponentName2ProtocolGuid,\r
+ ComponentName2,\r
+ &gEfiDriverConfiguration2ProtocolGuid,\r
+ DriverConfiguration2,\r
+ &gEfiDriverDiagnostics2ProtocolGuid,\r
+ DriverDiagnostics2,\r
+ NULL\r
+ );\r
+ }\r
+ } else {\r
+ if ((ComponentName2 == NULL) || FeaturePcdGet (PcdComponentName2Disable)) {\r
+ Status = gBS->UninstallMultipleProtocolInterfaces (\r
+ DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiComponentNameProtocolGuid,\r
+ ComponentName,\r
+ &gEfiDriverConfiguration2ProtocolGuid,\r
+ DriverConfiguration2,\r
+ &gEfiDriverDiagnostics2ProtocolGuid,\r
+ DriverDiagnostics2,\r
+ NULL\r
+ );\r
+ } else {\r
+ Status = gBS->UninstallMultipleProtocolInterfaces (\r
+ DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiComponentNameProtocolGuid,\r
+ ComponentName,\r
+ &gEfiComponentName2ProtocolGuid,\r
+ ComponentName2,\r
+ &gEfiDriverConfiguration2ProtocolGuid,\r
+ DriverConfiguration2,\r
+ &gEfiDriverDiagnostics2ProtocolGuid,\r
+ 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->UninstallMultipleProtocolInterfaces (\r
+ DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiDriverDiagnosticsProtocolGuid,\r
+ DriverDiagnostics,\r
+ &gEfiDriverConfiguration2ProtocolGuid,\r
+ DriverConfiguration2,\r
+ NULL\r
+ );\r
+ } else {\r
+ Status = gBS->UninstallMultipleProtocolInterfaces (\r
+ DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiComponentName2ProtocolGuid,\r
+ ComponentName2,\r
+ &gEfiDriverConfiguration2ProtocolGuid,\r
+ DriverConfiguration2,\r
+ &gEfiDriverDiagnosticsProtocolGuid,\r
+ DriverDiagnostics,\r
+ NULL\r
+ );\r
+ }\r
+ } else {\r
+ if ((ComponentName2 == NULL) || FeaturePcdGet (PcdComponentName2Disable)) {\r
+ Status = gBS->UninstallMultipleProtocolInterfaces (\r
+ DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiComponentNameProtocolGuid,\r
+ ComponentName,\r
+ &gEfiDriverDiagnosticsProtocolGuid,\r
+ DriverDiagnostics,\r
+ &gEfiDriverConfiguration2ProtocolGuid,\r
+ DriverConfiguration2,\r
+ NULL\r
+ );\r
+ } else {\r
+ Status = gBS->UninstallMultipleProtocolInterfaces (\r
+ DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiComponentNameProtocolGuid,\r
+ ComponentName,\r
+ &gEfiComponentName2ProtocolGuid,\r
+ ComponentName2,\r
+ &gEfiDriverConfiguration2ProtocolGuid,\r
+ DriverConfiguration2,\r
+ &gEfiDriverDiagnosticsProtocolGuid,\r
+ DriverDiagnostics,\r
+ NULL\r
+ );\r
+ }\r
+ }\r
+ } else {\r
+ if ((ComponentName == NULL) || FeaturePcdGet (PcdComponentNameDisable)) {\r
+ if ((ComponentName2 == NULL) || FeaturePcdGet (PcdComponentName2Disable)) {\r
+ Status = gBS->UninstallMultipleProtocolInterfaces (\r
+ DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiDriverConfiguration2ProtocolGuid,\r
+ DriverConfiguration2,\r
+ &gEfiDriverDiagnosticsProtocolGuid,\r
+ DriverDiagnostics,\r
+ &gEfiDriverDiagnostics2ProtocolGuid,\r
+ DriverDiagnostics2,\r
+ NULL\r
+ );\r
+ } else {\r
+ Status = gBS->UninstallMultipleProtocolInterfaces (\r
+ DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiComponentName2ProtocolGuid,\r
+ ComponentName2,\r
+ &gEfiDriverConfiguration2ProtocolGuid,\r
+ DriverConfiguration2,\r
+ &gEfiDriverDiagnosticsProtocolGuid,\r
+ DriverDiagnostics,\r
+ &gEfiDriverDiagnostics2ProtocolGuid,\r
+ DriverDiagnostics2,\r
+ NULL\r
+ );\r
+ }\r
+ } else {\r
+ if ((ComponentName2 == NULL) || FeaturePcdGet (PcdComponentName2Disable)) {\r
+ Status = gBS->UninstallMultipleProtocolInterfaces (\r
+ DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiComponentNameProtocolGuid,\r
+ ComponentName,\r
+ &gEfiDriverConfiguration2ProtocolGuid,\r
+ DriverConfiguration2,\r
+ &gEfiDriverDiagnosticsProtocolGuid,\r
+ DriverDiagnostics,\r
+ &gEfiDriverDiagnostics2ProtocolGuid,\r
+ DriverDiagnostics2,\r
+ NULL\r
+ );\r
+ } else {\r
+ Status = gBS->UninstallMultipleProtocolInterfaces (\r
+ DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiComponentNameProtocolGuid,\r
+ ComponentName,\r
+ &gEfiComponentName2ProtocolGuid,\r
+ ComponentName2,\r
+ &gEfiDriverConfiguration2ProtocolGuid,\r
+ DriverConfiguration2,\r
+ &gEfiDriverDiagnosticsProtocolGuid,\r
+ DriverDiagnostics,\r
+ &gEfiDriverDiagnostics2ProtocolGuid,\r
+ 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->UninstallMultipleProtocolInterfaces (\r
+ DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiDriverConfigurationProtocolGuid,\r
+ DriverConfiguration,\r
+ &gEfiDriverConfiguration2ProtocolGuid,\r
+ DriverConfiguration2,\r
+ NULL\r
+ );\r
+ } else {\r
+ Status = gBS->UninstallMultipleProtocolInterfaces (\r
+ DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiComponentName2ProtocolGuid,\r
+ ComponentName2,\r
+ &gEfiDriverConfigurationProtocolGuid,\r
+ DriverConfiguration,\r
+ &gEfiDriverConfiguration2ProtocolGuid,\r
+ DriverConfiguration2,\r
+ NULL\r
+ );\r
+ }\r
+ } else {\r
+ if ((ComponentName2 == NULL) || FeaturePcdGet (PcdComponentName2Disable)) {\r
+ Status = gBS->UninstallMultipleProtocolInterfaces (\r
+ DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiComponentNameProtocolGuid,\r
+ ComponentName,\r
+ &gEfiDriverConfigurationProtocolGuid,\r
+ DriverConfiguration,\r
+ &gEfiDriverConfiguration2ProtocolGuid,\r
+ DriverConfiguration2,\r
+ NULL\r
+ );\r
+ } else {\r
+ Status = gBS->UninstallMultipleProtocolInterfaces (\r
+ DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiComponentNameProtocolGuid,\r
+ ComponentName,\r
+ &gEfiComponentName2ProtocolGuid,\r
+ ComponentName2,\r
+ &gEfiDriverConfigurationProtocolGuid,\r
+ DriverConfiguration,\r
+ &gEfiDriverConfiguration2ProtocolGuid,\r
+ DriverConfiguration2,\r
+ NULL\r
+ );\r
+ }\r
+ }\r
+ } else {\r
+ if ((ComponentName == NULL) || FeaturePcdGet (PcdComponentNameDisable)) {\r
+ if ((ComponentName2 == NULL) || FeaturePcdGet (PcdComponentName2Disable)) {\r
+ Status = gBS->UninstallMultipleProtocolInterfaces (\r
+ DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiDriverConfigurationProtocolGuid,\r
+ DriverConfiguration,\r
+ &gEfiDriverConfiguration2ProtocolGuid,\r
+ DriverConfiguration2,\r
+ &gEfiDriverDiagnostics2ProtocolGuid,\r
+ DriverDiagnostics2,\r
+ NULL\r
+ );\r
+ } else {\r
+ Status = gBS->UninstallMultipleProtocolInterfaces (\r
+ DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiComponentName2ProtocolGuid,\r
+ ComponentName2,\r
+ &gEfiDriverConfigurationProtocolGuid,\r
+ DriverConfiguration,\r
+ &gEfiDriverConfiguration2ProtocolGuid,\r
+ DriverConfiguration2,\r
+ &gEfiDriverDiagnostics2ProtocolGuid,\r
+ DriverDiagnostics2,\r
+ NULL\r
+ );\r
+ }\r
+ } else {\r
+ if ((ComponentName2 == NULL) || FeaturePcdGet (PcdComponentName2Disable)) {\r
+ Status = gBS->UninstallMultipleProtocolInterfaces (\r
+ DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiComponentNameProtocolGuid,\r
+ ComponentName,\r
+ &gEfiDriverConfigurationProtocolGuid,\r
+ DriverConfiguration,\r
+ &gEfiDriverConfiguration2ProtocolGuid,\r
+ DriverConfiguration2,\r
+ &gEfiDriverDiagnostics2ProtocolGuid,\r
+ DriverDiagnostics2,\r
+ NULL\r
+ );\r
+ } else {\r
+ Status = gBS->UninstallMultipleProtocolInterfaces (\r
+ DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiComponentNameProtocolGuid,\r
+ ComponentName,\r
+ &gEfiComponentName2ProtocolGuid,\r
+ ComponentName2,\r
+ &gEfiDriverConfigurationProtocolGuid,\r
+ DriverConfiguration,\r
+ &gEfiDriverConfiguration2ProtocolGuid,\r
+ DriverConfiguration2,\r
+ &gEfiDriverDiagnostics2ProtocolGuid,\r
+ 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->UninstallMultipleProtocolInterfaces (\r
+ DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiDriverConfigurationProtocolGuid,\r
+ DriverConfiguration,\r
+ &gEfiDriverConfiguration2ProtocolGuid,\r
+ DriverConfiguration2,\r
+ &gEfiDriverDiagnosticsProtocolGuid,\r
+ DriverDiagnostics,\r
+ NULL\r
+ );\r
+ } else {\r
+ Status = gBS->UninstallMultipleProtocolInterfaces (\r
+ DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiComponentName2ProtocolGuid,\r
+ ComponentName2,\r
+ &gEfiDriverConfigurationProtocolGuid,\r
+ DriverConfiguration,\r
+ &gEfiDriverConfiguration2ProtocolGuid,\r
+ DriverConfiguration2,\r
+ &gEfiDriverDiagnosticsProtocolGuid,\r
+ DriverDiagnostics,\r
+ NULL\r
+ );\r
+ }\r
+ } else {\r
+ if ((ComponentName2 == NULL) || FeaturePcdGet (PcdComponentName2Disable)) {\r
+ Status = gBS->UninstallMultipleProtocolInterfaces (\r
+ DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiComponentNameProtocolGuid,\r
+ ComponentName,\r
+ &gEfiDriverConfigurationProtocolGuid,\r
+ DriverConfiguration,\r
+ &gEfiDriverConfiguration2ProtocolGuid,\r
+ DriverConfiguration2,\r
+ &gEfiDriverDiagnosticsProtocolGuid,\r
+ DriverDiagnostics,\r
+ NULL\r
+ );\r
+ } else {\r
+ Status = gBS->UninstallMultipleProtocolInterfaces (\r
+ DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiComponentNameProtocolGuid,\r
+ ComponentName,\r
+ &gEfiComponentName2ProtocolGuid,\r
+ ComponentName2,\r
+ &gEfiDriverConfigurationProtocolGuid,\r
+ DriverConfiguration,\r
+ &gEfiDriverConfiguration2ProtocolGuid,\r
+ DriverConfiguration2,\r
+ &gEfiDriverDiagnosticsProtocolGuid,\r
+ DriverDiagnostics,\r
+ NULL\r
+ );\r
+ }\r
+ }\r
+ } else {\r
+ if ((ComponentName == NULL) || FeaturePcdGet (PcdComponentNameDisable)) {\r
+ if ((ComponentName2 == NULL) || FeaturePcdGet (PcdComponentName2Disable)) {\r
+ Status = gBS->UninstallMultipleProtocolInterfaces (\r
+ DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiDriverConfigurationProtocolGuid,\r
+ DriverConfiguration,\r
+ &gEfiDriverConfiguration2ProtocolGuid,\r
+ DriverConfiguration2,\r
+ &gEfiDriverDiagnosticsProtocolGuid,\r
+ DriverDiagnostics,\r
+ &gEfiDriverDiagnostics2ProtocolGuid,\r
+ DriverDiagnostics2,\r
+ NULL\r
+ );\r
+ } else {\r
+ Status = gBS->UninstallMultipleProtocolInterfaces (\r
+ DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiComponentName2ProtocolGuid,\r
+ ComponentName2,\r
+ &gEfiDriverConfigurationProtocolGuid,\r
+ DriverConfiguration,\r
+ &gEfiDriverConfiguration2ProtocolGuid,\r
+ DriverConfiguration2,\r
+ &gEfiDriverDiagnosticsProtocolGuid,\r
+ DriverDiagnostics,\r
+ &gEfiDriverDiagnostics2ProtocolGuid,\r
+ DriverDiagnostics2,\r
+ NULL\r
+ );\r
+ }\r
+ } else {\r
+ if ((ComponentName2 == NULL) || FeaturePcdGet (PcdComponentName2Disable)) {\r
+ Status = gBS->UninstallMultipleProtocolInterfaces (\r
+ DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiComponentNameProtocolGuid,\r
+ ComponentName,\r
+ &gEfiDriverConfigurationProtocolGuid,\r
+ DriverConfiguration,\r
+ &gEfiDriverConfiguration2ProtocolGuid,\r
+ DriverConfiguration2,\r
+ &gEfiDriverDiagnosticsProtocolGuid,\r
+ DriverDiagnostics,\r
+ &gEfiDriverDiagnostics2ProtocolGuid,\r
+ DriverDiagnostics2,\r
+ NULL\r
+ );\r
+ } else {\r
+ Status = gBS->UninstallMultipleProtocolInterfaces (\r
+ DriverBinding->DriverBindingHandle,\r
+ &gEfiDriverBindingProtocolGuid,\r
+ DriverBinding,\r
+ &gEfiComponentNameProtocolGuid,\r
+ ComponentName,\r
+ &gEfiComponentName2ProtocolGuid,\r
+ ComponentName2,\r
+ &gEfiDriverConfigurationProtocolGuid,\r
+ DriverConfiguration,\r
+ &gEfiDriverConfiguration2ProtocolGuid,\r
+ DriverConfiguration2,\r
+ &gEfiDriverDiagnosticsProtocolGuid,\r
+ DriverDiagnostics,\r
+ &gEfiDriverDiagnostics2ProtocolGuid,\r
+ DriverDiagnostics2,\r
+ NULL\r
+ );\r
+ }\r
+ }\r
+ }\r
+ }\r
+ }\r
+ }\r
+\r
//\r
- // Update the ImageHandle and DriverBindingHandle fields of the Driver Binding Protocol\r
+ // ASSERT if the call to UninstallMultipleProtocolInterfaces() failed\r
//\r
- DriverBinding->ImageHandle = ImageHandle;\r
- DriverBinding->DriverBindingHandle = DriverBindingHandle;\r
+ ASSERT_EFI_ERROR (Status);\r
\r
return Status;\r
}\r
-\r
-\r