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