Ashish,

Thanks for looking at simplifying this logic again.

I have not had a chance to run the size analysis yet.

I will get back to you in a couple of days.

Thanks,

Mike

> -----Original Message-----
> From: Ashish Singhal [mailto:ashishsin...@nvidia.com]
> Sent: Tuesday, February 19, 2019 8:19 AM
> To: edk2-devel@lists.01.org
> Cc: Kinney, Michael D <michael.d.kin...@intel.com>;
> Gao, Liming <liming....@intel.com>
> Subject: RE: [PATCH] MdePkg/UefiLib: Simplify protocol
> un/installation abstraction
> 
> Hello Mike/Lao,
> 
> Were you able to have a look at this?
> 
> Thanks
> Ashish
> 
> -----Original Message-----
> From: Ashish Singhal <ashishsin...@nvidia.com>
> Sent: Monday, February 4, 2019 1:16 PM
> To: edk2-devel@lists.01.org
> Cc: michael.d.kin...@intel.com; liming....@intel.com;
> Ashish Singhal <ashishsin...@nvidia.com>
> Subject: [PATCH] MdePkg/UefiLib: Simplify protocol
> un/installation abstraction
> 
> Add helper functions to operate upon protocol
> installation and
> uninstallation instead of every function doing it by
> itself.
> 
> Contributed-under: TianoCore Contribution Agreement 1.1
> Signed-off-by: Ashish Singhal <ashishsin...@nvidia.com>
> ---
>  MdePkg/Library/UefiLib/UefiDriverModel.c | 2040 +++++-
> ------------------------
>  1 file changed, 342 insertions(+), 1698 deletions(-)
> 
> diff --git a/MdePkg/Library/UefiLib/UefiDriverModel.c
> b/MdePkg/Library/UefiLib/UefiDriverModel.c
> index 262d8bc..268edf7 100644
> --- a/MdePkg/Library/UefiLib/UefiDriverModel.c
> +++ b/MdePkg/Library/UefiLib/UefiDriverModel.c
> @@ -17,6 +17,290 @@
> 
>  #include "UefiLibInternal.h"
> 
> +
> +#define MAX_SUPPORTED_PROTOCOLS 7
> +typedef struct {
> +  EFI_GUID *Guid;
> +  VOID     *Interface;
> +} EFI_PROCESS_PROTOCOL;
> +
> +
> +static
> +EFI_STATUS
> +EFIAPI
> +EfiLibProcessProtocols (
> +  IN CONST EFI_HANDLE
> ImageHandle,
> +  IN EFI_DRIVER_BINDING_PROTOCOL
> *DriverBinding,
> +  IN EFI_HANDLE
> DriverBindingHandle,
> +  IN BOOLEAN                                  Install,
> +  IN CONST EFI_PROCESS_PROTOCOL
> *ProtocolArray
> +  )
> +{
> +  ASSERT (DriverBinding != NULL);
> +  ASSERT (ProtocolArray != NULL);
> +
> +  if (Install) {
> +    //
> +    // Update the ImageHandle and DriverBindingHandle
> fields of the Driver Binding Protocol
> +    //
> +    DriverBinding->ImageHandle         = ImageHandle;
> +    DriverBinding->DriverBindingHandle =
> DriverBindingHandle;
> +
> +    return gBS->InstallMultipleProtocolInterfaces (
> +                  &DriverBinding->DriverBindingHandle,
> +                  ProtocolArray[0].Guid,
> ProtocolArray[0].Interface,
> +                  ProtocolArray[1].Guid,
> ProtocolArray[1].Interface,
> +                  ProtocolArray[2].Guid,
> ProtocolArray[2].Interface,
> +                  ProtocolArray[3].Guid,
> ProtocolArray[3].Interface,
> +                  ProtocolArray[4].Guid,
> ProtocolArray[4].Interface,
> +                  ProtocolArray[5].Guid,
> ProtocolArray[5].Interface,
> +                  ProtocolArray[6].Guid,
> ProtocolArray[6].Interface,
> +                  NULL
> +                  );
> +  } else {
> +    return gBS->UninstallMultipleProtocolInterfaces (
> +                  DriverBinding->DriverBindingHandle,
> +                  ProtocolArray[0].Guid,
> ProtocolArray[0].Interface,
> +                  ProtocolArray[1].Guid,
> ProtocolArray[1].Interface,
> +                  ProtocolArray[2].Guid,
> ProtocolArray[2].Interface,
> +                  ProtocolArray[3].Guid,
> ProtocolArray[3].Interface,
> +                  ProtocolArray[4].Guid,
> ProtocolArray[4].Interface,
> +                  ProtocolArray[5].Guid,
> ProtocolArray[5].Interface,
> +                  ProtocolArray[6].Guid,
> ProtocolArray[6].Interface,
> +                  NULL
> +                  );
> +  }
> +}
> +
> +
> +
> +static
> +EFI_STATUS
> +EFIAPI
> +EfiLibProcessAllDriverProtocols (
> +  IN CONST EFI_HANDLE
> ImageHandle,
> +  IN EFI_DRIVER_BINDING_PROTOCOL
> *DriverBinding,
> +  IN EFI_HANDLE
> DriverBindingHandle,
> +  IN BOOLEAN                                  Install,
> +  IN CONST EFI_COMPONENT_NAME_PROTOCOL
> *ComponentName,
> +  IN CONST EFI_DRIVER_CONFIGURATION_PROTOCOL
> *DriverConfiguration,
> +  IN CONST EFI_DRIVER_DIAGNOSTICS_PROTOCOL
> *DriverDiagnostics
> +  )
> +{
> +  EFI_STATUS           Status;
> +  EFI_PROCESS_PROTOCOL
> ProtocolArray[MAX_SUPPORTED_PROTOCOLS];
> +  UINT8                ProtocolCount;
> +
> +  ASSERT (DriverBinding != NULL);
> +
> +  //
> +  // ZI the ProtocolArray structure. Both
> InstallMultipleProtocolInterfaces
> +  // and UninstallMultipleProtocolInterfaces would
> stop processing ProtocolArray
> +  // elements as soon as they encounter a NULL.
> +  //
> +  ZeroMem(ProtocolArray, sizeof(ProtocolArray));
> +  ProtocolCount = 0;
> +
> +  //
> +  // Populate ProtocolArray with valid protocol
> interfaces.
> +  //
> +  ProtocolArray[ProtocolCount].Guid =
> &gEfiDriverBindingProtocolGuid;
> +  ProtocolArray[ProtocolCount].Interface =
> DriverBinding;
> +  ProtocolCount++;
> +
> +  if (ComponentName != NULL &&
> !FeaturePcdGet(PcdComponentNameDisable)) {
> +    ProtocolArray[ProtocolCount].Guid =
> &gEfiComponentNameProtocolGuid;
> +    ProtocolArray[ProtocolCount].Interface = (VOID
> *)ComponentName;
> +    ProtocolCount++;
> +  }
> +
> +  if (DriverConfiguration != NULL) {
> +    ProtocolArray[ProtocolCount].Guid =
> &gEfiDriverConfigurationProtocolGuid;
> +    ProtocolArray[ProtocolCount].Interface = (VOID
> *)DriverConfiguration;
> +    ProtocolCount++;
> +  }
> +
> +  if (DriverDiagnostics != NULL &&
> !FeaturePcdGet(PcdDriverDiagnosticsDisable)) {
> +    ProtocolArray[ProtocolCount].Guid =
> &gEfiDriverDiagnosticsProtocolGuid;
> +    ProtocolArray[ProtocolCount].Interface = (VOID
> *)DriverDiagnostics;
> +    ProtocolCount++;
> +  }
> +
> +  Status = EfiLibProcessProtocols (
> +             ImageHandle,
> +             DriverBinding,
> +             DriverBindingHandle,
> +             Install,
> +             ProtocolArray
> +             );
> +
> +  //
> +  // ASSERT if the call to
> InstallMultipleProtocolInterfaces() or
> +  // UninstallMultipleProtocolInterfaces() failed
> +  //
> +  ASSERT_EFI_ERROR (Status);
> +
> +  return Status;
> +}
> +
> +
> +
> +static
> +EFI_STATUS
> +EFIAPI
> +EfiLibProcessDriverBindingComponentName2 (
> +  IN CONST EFI_HANDLE
> ImageHandle,
> +  IN EFI_DRIVER_BINDING_PROTOCOL
> *DriverBinding,
> +  IN EFI_HANDLE
> DriverBindingHandle,
> +  IN BOOLEAN                                  Install,
> +  IN CONST EFI_COMPONENT_NAME_PROTOCOL
> *ComponentName,
> +  IN CONST EFI_COMPONENT_NAME2_PROTOCOL
> *ComponentName2
> +  )
> +{
> +  EFI_STATUS           Status;
> +  EFI_PROCESS_PROTOCOL
> ProtocolArray[MAX_SUPPORTED_PROTOCOLS];
> +  UINT8                ProtocolCount;
> +
> +  ASSERT (DriverBinding != NULL);
> +
> +  //
> +  // ZI the ProtocolArray structure. Both
> InstallMultipleProtocolInterfaces
> +  // and UninstallMultipleProtocolInterfaces would
> stop processing ProtocolArray
> +  // elements as soon as they encounter a NULL.
> +  //
> +  ZeroMem(ProtocolArray, sizeof(ProtocolArray));
> +  ProtocolCount = 0;
> +
> +  //
> +  // Populate ProtocolArray with valid protocol
> interfaces.
> +  //
> +  ProtocolArray[ProtocolCount].Guid =
> &gEfiDriverBindingProtocolGuid;
> +  ProtocolArray[ProtocolCount].Interface =
> DriverBinding;
> +  ProtocolCount++;
> +
> +  if (ComponentName != NULL &&
> !FeaturePcdGet(PcdComponentNameDisable)) {
> +    ProtocolArray[ProtocolCount].Guid =
> &gEfiComponentNameProtocolGuid;
> +    ProtocolArray[ProtocolCount].Interface = (VOID
> *)ComponentName;
> +    ProtocolCount++;
> +  }
> +
> +  if (ComponentName2 != NULL &&
> !FeaturePcdGet(PcdComponentName2Disable)) {
> +    ProtocolArray[ProtocolCount].Guid =
> &gEfiComponentName2ProtocolGuid;
> +    ProtocolArray[ProtocolCount].Interface = (VOID
> *)ComponentName2;
> +    ProtocolCount++;
> +  }
> +
> +  Status = EfiLibProcessProtocols (
> +             ImageHandle,
> +             DriverBinding,
> +             DriverBindingHandle,
> +             Install,
> +             ProtocolArray
> +             );
> +
> +  //
> +  // ASSERT if the call to
> InstallMultipleProtocolInterfaces() or
> +  // UninstallMultipleProtocolInterfaces() failed
> +  //
> +  ASSERT_EFI_ERROR (Status);
> +
> +  return Status;
> +}
> +
> +
> +
> +static
> +EFI_STATUS
> +EFIAPI
> +EfiLibProcessAllDriverProtocols2 (
> +  IN CONST EFI_HANDLE
> ImageHandle,
> +  IN EFI_DRIVER_BINDING_PROTOCOL
> *DriverBinding,
> +  IN EFI_HANDLE
> DriverBindingHandle,
> +  IN BOOLEAN                                  Install,
> +  IN CONST EFI_COMPONENT_NAME_PROTOCOL
> *ComponentName,
> +  IN CONST EFI_COMPONENT_NAME2_PROTOCOL
> *ComponentName2,
> +  IN CONST EFI_DRIVER_CONFIGURATION_PROTOCOL
> *DriverConfiguration,
> +  IN CONST EFI_DRIVER_CONFIGURATION2_PROTOCOL
> *DriverConfiguration2,
> +  IN CONST EFI_DRIVER_DIAGNOSTICS_PROTOCOL
> *DriverDiagnostics,
> +  IN CONST EFI_DRIVER_DIAGNOSTICS2_PROTOCOL
> *DriverDiagnostics2
> +  )
> +{
> +  EFI_STATUS           Status;
> +  EFI_PROCESS_PROTOCOL
> ProtocolArray[MAX_SUPPORTED_PROTOCOLS];
> +  UINT8                ProtocolCount;
> +
> +  ASSERT (DriverBinding != NULL);
> +
> +  //
> +  // ZI the ProtocolArray structure. Both
> InstallMultipleProtocolInterfaces
> +  // and UninstallMultipleProtocolInterfaces would
> stop processing ProtocolArray
> +  // elements as soon as they encounter a NULL.
> +  //
> +  ZeroMem(ProtocolArray, sizeof(ProtocolArray));
> +  ProtocolCount = 0;
> +
> +  //
> +  // Populate ProtocolArray with valid protocol
> interfaces.
> +  //
> +  ProtocolArray[ProtocolCount].Guid =
> &gEfiDriverBindingProtocolGuid;
> +  ProtocolArray[ProtocolCount].Interface =
> DriverBinding;
> +  ProtocolCount++;
> +
> +  if (ComponentName != NULL &&
> !FeaturePcdGet(PcdComponentNameDisable)) {
> +    ProtocolArray[ProtocolCount].Guid =
> &gEfiComponentNameProtocolGuid;
> +    ProtocolArray[ProtocolCount].Interface = (VOID
> *)ComponentName;
> +    ProtocolCount++;
> +  }
> +
> +  if (ComponentName2 != NULL &&
> !FeaturePcdGet(PcdComponentName2Disable)) {
> +    ProtocolArray[ProtocolCount].Guid =
> &gEfiComponentName2ProtocolGuid;
> +    ProtocolArray[ProtocolCount].Interface = (VOID
> *)ComponentName2;
> +    ProtocolCount++;
> +  }
> +
> +  if (DriverConfiguration != NULL) {
> +    ProtocolArray[ProtocolCount].Guid =
> &gEfiDriverConfigurationProtocolGuid;
> +    ProtocolArray[ProtocolCount].Interface = (VOID
> *)DriverConfiguration;
> +    ProtocolCount++;
> +  }
> +
> +  if (DriverConfiguration2 != NULL) {
> +    ProtocolArray[ProtocolCount].Guid =
> &gEfiDriverConfiguration2ProtocolGuid;
> +    ProtocolArray[ProtocolCount].Interface = (VOID
> *)DriverConfiguration2;
> +    ProtocolCount++;
> +  }
> +
> +  if (DriverDiagnostics != NULL &&
> !FeaturePcdGet(PcdDriverDiagnosticsDisable)) {
> +    ProtocolArray[ProtocolCount].Guid =
> &gEfiDriverDiagnosticsProtocolGuid;
> +    ProtocolArray[ProtocolCount].Interface = (VOID
> *)DriverDiagnostics;
> +    ProtocolCount++;
> +  }
> +
> +  if (DriverDiagnostics2 != NULL &&
> !FeaturePcdGet(PcdDriverDiagnostics2Disable)) {
> +    ProtocolArray[ProtocolCount].Guid =
> &gEfiDriverDiagnostics2ProtocolGuid;
> +    ProtocolArray[ProtocolCount].Interface = (VOID
> *)DriverDiagnostics2;
> +    ProtocolCount++;
> +  }
> +
> +  Status = EfiLibProcessProtocols (
> +             ImageHandle,
> +             DriverBinding,
> +             DriverBindingHandle,
> +             Install,
> +             ProtocolArray
> +             );
> +
> +  //
> +  // ASSERT if the call to
> InstallMultipleProtocolInterfaces() or
> +  // UninstallMultipleProtocolInterfaces() failed
> +  //
> +  ASSERT_EFI_ERROR (Status);
> +
> +  return Status;
> +}
> +
> +
> +
>  /**
>    Installs and completes the initialization of a
> Driver Binding Protocol instance.
> 
> @@ -148,96 +432,15 @@ EfiLibInstallAllDriverProtocols (
>    IN CONST EFI_DRIVER_DIAGNOSTICS_PROTOCOL
> *DriverDiagnostics    OPTIONAL
>    )
>  {
> -  EFI_STATUS  Status;
> -
> -  ASSERT (DriverBinding != NULL);
> -
> -  //
> -  // Update the ImageHandle and DriverBindingHandle
> fields of the Driver Binding Protocol
> -  //
> -  DriverBinding->ImageHandle         = ImageHandle;
> -  DriverBinding->DriverBindingHandle =
> DriverBindingHandle;
> -
> -  if (DriverDiagnostics == NULL ||
> FeaturePcdGet(PcdDriverDiagnosticsDisable)) {
> -    if (DriverConfiguration == NULL) {
> -      if (ComponentName == NULL ||
> FeaturePcdGet(PcdComponentNameDisable)) {
> -        Status = gBS-
> >InstallMultipleProtocolInterfaces (
> -                        &DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid, DriverBinding,
> -                        NULL
> -                        );
> -      } else {
> -        Status = gBS-
> >InstallMultipleProtocolInterfaces (
> -                        &DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid, DriverBinding,
> -
> &gEfiComponentNameProtocolGuid, ComponentName,
> -                        NULL
> -                        );
> -      }
> -    } else {
> -      if (ComponentName == NULL ||
> FeaturePcdGet(PcdComponentNameDisable)) {
> -        Status = gBS-
> >InstallMultipleProtocolInterfaces (
> -                        &DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid,       DriverBinding,
> -
> &gEfiDriverConfigurationProtocolGuid,
> DriverConfiguration,
> -                        NULL
> -                        );
> -      } else {
> -        Status = gBS-
> >InstallMultipleProtocolInterfaces (
> -                        &DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid,       DriverBinding,
> -
> &gEfiComponentNameProtocolGuid,       ComponentName,
> -
> &gEfiDriverConfigurationProtocolGuid,
> DriverConfiguration,
> -                        NULL
> -                        );
> -      }
> -    }
> -  } else {
> -    if (DriverConfiguration == NULL) {
> -      if (ComponentName == NULL ||
> FeaturePcdGet(PcdComponentNameDisable)) {
> -        Status = gBS-
> >InstallMultipleProtocolInterfaces (
> -                        &DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid,     DriverBinding,
> -
> &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
> -                        NULL
> -                        );
> -      } else {
> -        Status = gBS-
> >InstallMultipleProtocolInterfaces (
> -                        &DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid,     DriverBinding,
> -
> &gEfiComponentNameProtocolGuid,     ComponentName,
> -
> &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
> -                        NULL
> -                        );
> -      }
> -    } else {
> -      if (ComponentName == NULL ||
> FeaturePcdGet(PcdComponentNameDisable)) {
> -       Status = gBS->InstallMultipleProtocolInterfaces
> (
> -                        &DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid,       DriverBinding,
> -
> &gEfiDriverConfigurationProtocolGuid,
> DriverConfiguration,
> -
> &gEfiDriverDiagnosticsProtocolGuid,
> DriverDiagnostics,
> -                        NULL
> -                        );
> -      } else {
> -        Status = gBS-
> >InstallMultipleProtocolInterfaces (
> -                        &DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid,       DriverBinding,
> -
> &gEfiComponentNameProtocolGuid,       ComponentName,
> -
> &gEfiDriverConfigurationProtocolGuid,
> DriverConfiguration,
> -
> &gEfiDriverDiagnosticsProtocolGuid,
> DriverDiagnostics,
> -                        NULL
> -                        );
> -      }
> -    }
> -  }
> -
> -  //
> -  // ASSERT if the call to
> InstallMultipleProtocolInterfaces() failed
> -  //
> -  ASSERT_EFI_ERROR (Status);
> -
> -  return Status;
> +  return EfiLibProcessAllDriverProtocols (
> +           ImageHandle,
> +           DriverBinding,
> +           DriverBindingHandle,
> +           TRUE,
> +           ComponentName,
> +           DriverConfiguration,
> +           DriverDiagnostics
> +           );
>  }
> 
> 
> @@ -267,90 +470,15 @@ EfiLibUninstallAllDriverProtocols
> (
>    IN CONST EFI_DRIVER_DIAGNOSTICS_PROTOCOL
> *DriverDiagnostics    OPTIONAL
>    )
>  {
> -  EFI_STATUS  Status;
> -
> -  ASSERT (DriverBinding != NULL);
> -
> -  if (DriverDiagnostics == NULL ||
> FeaturePcdGet(PcdDriverDiagnosticsDisable)) {
> -    if (DriverConfiguration == NULL) {
> -      if (ComponentName == NULL ||
> FeaturePcdGet(PcdComponentNameDisable)) {
> -        Status = gBS-
> >UninstallMultipleProtocolInterfaces (
> -                        DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid, DriverBinding,
> -                        NULL
> -                        );
> -      } else {
> -        Status = gBS-
> >UninstallMultipleProtocolInterfaces (
> -                        DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid, DriverBinding,
> -
> &gEfiComponentNameProtocolGuid, ComponentName,
> -                        NULL
> -                        );
> -      }
> -    } else {
> -      if (ComponentName == NULL ||
> FeaturePcdGet(PcdComponentNameDisable)) {
> -        Status = gBS-
> >UninstallMultipleProtocolInterfaces (
> -                        DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid,       DriverBinding,
> -
> &gEfiDriverConfigurationProtocolGuid,
> DriverConfiguration,
> -                        NULL
> -                        );
> -      } else {
> -        Status = gBS-
> >UninstallMultipleProtocolInterfaces (
> -                        DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid,       DriverBinding,
> -
> &gEfiComponentNameProtocolGuid,       ComponentName,
> -
> &gEfiDriverConfigurationProtocolGuid,
> DriverConfiguration,
> -                        NULL
> -                        );
> -      }
> -    }
> -  } else {
> -    if (DriverConfiguration == NULL) {
> -      if (ComponentName == NULL ||
> FeaturePcdGet(PcdComponentNameDisable)) {
> -        Status = gBS-
> >UninstallMultipleProtocolInterfaces (
> -                        DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid,     DriverBinding,
> -
> &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
> -                        NULL
> -                        );
> -      } else {
> -        Status = gBS-
> >UninstallMultipleProtocolInterfaces (
> -                        DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid,     DriverBinding,
> -
> &gEfiComponentNameProtocolGuid,     ComponentName,
> -
> &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
> -                        NULL
> -                        );
> -      }
> -    } else {
> -      if (ComponentName == NULL ||
> FeaturePcdGet(PcdComponentNameDisable)) {
> -       Status = gBS-
> >UninstallMultipleProtocolInterfaces (
> -                        DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid,       DriverBinding,
> -
> &gEfiDriverConfigurationProtocolGuid,
> DriverConfiguration,
> -
> &gEfiDriverDiagnosticsProtocolGuid,
> DriverDiagnostics,
> -                        NULL
> -                        );
> -      } else {
> -        Status = gBS-
> >UninstallMultipleProtocolInterfaces (
> -                        DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid,       DriverBinding,
> -
> &gEfiComponentNameProtocolGuid,       ComponentName,
> -
> &gEfiDriverConfigurationProtocolGuid,
> DriverConfiguration,
> -
> &gEfiDriverDiagnosticsProtocolGuid,
> DriverDiagnostics,
> -                        NULL
> -                        );
> -      }
> -    }
> -  }
> -
> -  //
> -  // ASSERT if the call to
> UninstallMultipleProtocolInterfaces() failed
> -  //
> -  ASSERT_EFI_ERROR (Status);
> -
> -  return Status;
> +  return EfiLibProcessAllDriverProtocols (
> +           NULL,
> +           DriverBinding,
> +           NULL,
> +           FALSE,
> +           ComponentName,
> +           DriverConfiguration,
> +           DriverDiagnostics
> +           );
>  }
> 
> 
> @@ -389,56 +517,14 @@
> EfiLibInstallDriverBindingComponentName2 (
>    IN CONST EFI_COMPONENT_NAME2_PROTOCOL
> *ComponentName2       OPTIONAL
>    )
>  {
> -  EFI_STATUS  Status;
> -
> -  ASSERT (DriverBinding != NULL);
> -
> -  //
> -  // Update the ImageHandle and DriverBindingHandle
> fields of the Driver Binding Protocol
> -  //
> -  DriverBinding->ImageHandle         = ImageHandle;
> -  DriverBinding->DriverBindingHandle =
> DriverBindingHandle;
> -
> -  if (ComponentName == NULL ||
> FeaturePcdGet(PcdComponentNameDisable)) {
> -    if (ComponentName2 == NULL ||
> FeaturePcdGet(PcdComponentName2Disable)) {
> -      Status = gBS->InstallMultipleProtocolInterfaces
> (
> -                      &DriverBinding-
> >DriverBindingHandle,
> -                      &gEfiDriverBindingProtocolGuid,
> DriverBinding,
> -                      NULL
> -                      );
> -      } else {
> -      Status = gBS->InstallMultipleProtocolInterfaces
> (
> -                      &DriverBinding-
> >DriverBindingHandle,
> -                      &gEfiDriverBindingProtocolGuid,
> DriverBinding,
> -                      &gEfiComponentName2ProtocolGuid,
> ComponentName2,
> -                      NULL
> -                      );
> -     }
> -  } else {
> -     if (ComponentName2 == NULL ||
> FeaturePcdGet(PcdComponentName2Disable)) {
> -       Status = gBS->InstallMultipleProtocolInterfaces
> (
> -                       &DriverBinding-
> >DriverBindingHandle,
> -                       &gEfiDriverBindingProtocolGuid,
> DriverBinding,
> -                       &gEfiComponentNameProtocolGuid,
> ComponentName,
> -                       NULL
> -                       );
> -     } else {
> -       Status = gBS->InstallMultipleProtocolInterfaces
> (
> -                       &DriverBinding-
> >DriverBindingHandle,
> -                       &gEfiDriverBindingProtocolGuid,
> DriverBinding,
> -                       &gEfiComponentNameProtocolGuid,
> ComponentName,
> -
> &gEfiComponentName2ProtocolGuid, ComponentName2,
> -                       NULL
> -                       );
> -    }
> -  }
> -
> -  //
> -  // ASSERT if the call to
> InstallMultipleProtocolInterfaces() failed
> -  //
> -  ASSERT_EFI_ERROR (Status);
> -
> -  return Status;
> +  return EfiLibProcessDriverBindingComponentName2 (
> +           ImageHandle,
> +           DriverBinding,
> +           DriverBindingHandle,
> +           TRUE,
> +           ComponentName,
> +           ComponentName2
> +           );
>  }
> 
> 
> @@ -465,50 +551,14 @@
> EfiLibUninstallDriverBindingComponentName2 (
>    IN CONST EFI_COMPONENT_NAME2_PROTOCOL
> *ComponentName2       OPTIONAL
>    )
>  {
> -  EFI_STATUS  Status;
> -
> -  ASSERT (DriverBinding != NULL);
> -
> -  if (ComponentName == NULL ||
> FeaturePcdGet(PcdComponentNameDisable)) {
> -    if (ComponentName2 == NULL ||
> FeaturePcdGet(PcdComponentName2Disable)) {
> -      Status = gBS-
> >UninstallMultipleProtocolInterfaces (
> -                      DriverBinding-
> >DriverBindingHandle,
> -                      &gEfiDriverBindingProtocolGuid,
> DriverBinding,
> -                      NULL
> -                      );
> -      } else {
> -      Status = gBS-
> >UninstallMultipleProtocolInterfaces (
> -                      DriverBinding-
> >DriverBindingHandle,
> -                      &gEfiDriverBindingProtocolGuid,
> DriverBinding,
> -                      &gEfiComponentName2ProtocolGuid,
> ComponentName2,
> -                      NULL
> -                      );
> -     }
> -  } else {
> -     if (ComponentName2 == NULL ||
> FeaturePcdGet(PcdComponentName2Disable)) {
> -       Status = gBS-
> >UninstallMultipleProtocolInterfaces (
> -                       DriverBinding-
> >DriverBindingHandle,
> -                       &gEfiDriverBindingProtocolGuid,
> DriverBinding,
> -                       &gEfiComponentNameProtocolGuid,
> ComponentName,
> -                       NULL
> -                       );
> -     } else {
> -       Status = gBS-
> >UninstallMultipleProtocolInterfaces (
> -                       DriverBinding-
> >DriverBindingHandle,
> -                       &gEfiDriverBindingProtocolGuid,
> DriverBinding,
> -                       &gEfiComponentNameProtocolGuid,
> ComponentName,
> -
> &gEfiComponentName2ProtocolGuid, ComponentName2,
> -                       NULL
> -                       );
> -    }
> -  }
> -
> -  //
> -  // ASSERT if the call to
> UninstallMultipleProtocolInterfaces() failed
> -  //
> -  ASSERT_EFI_ERROR (Status);
> -
> -  return Status;
> +  return EfiLibProcessDriverBindingComponentName2 (
> +           NULL,
> +           DriverBinding,
> +           NULL,
> +           FALSE,
> +           ComponentName,
> +           ComponentName2
> +           );
>  }
> 
> 
> @@ -557,724 +607,18 @@ EfiLibInstallAllDriverProtocols2
> (
>    IN CONST EFI_DRIVER_DIAGNOSTICS2_PROTOCOL
> *DriverDiagnostics2    OPTIONAL
>    )
>  {
> -  EFI_STATUS  Status;
> -
> -  ASSERT (DriverBinding != NULL);
> -
> -  //
> -  // Update the ImageHandle and DriverBindingHandle
> fields of the Driver Binding Protocol
> -  //
> -  DriverBinding->ImageHandle         = ImageHandle;
> -  DriverBinding->DriverBindingHandle =
> DriverBindingHandle;
> -
> -  if (DriverConfiguration2 == NULL) {
> -    if (DriverConfiguration == NULL) {
> -      if (DriverDiagnostics == NULL ||
> FeaturePcdGet(PcdDriverDiagnosticsDisable)) {
> -        if (DriverDiagnostics2 == NULL ||
> FeaturePcdGet(PcdDriverDiagnostics2Disable)) {
> -          if (ComponentName == NULL ||
> FeaturePcdGet(PcdComponentNameDisable)) {
> -            if (ComponentName2 == NULL ||
> FeaturePcdGet(PcdComponentName2Disable)) {
> -              Status = gBS-
> >InstallMultipleProtocolInterfaces (
> -                              &DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid, DriverBinding,
> -                              NULL
> -                              );
> -            } else {
> -              Status = gBS-
> >InstallMultipleProtocolInterfaces (
> -                              &DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid, DriverBinding,
> -
> &gEfiComponentName2ProtocolGuid, ComponentName2,
> -                              NULL
> -                              );
> -            }
> -          } else {
> -            if (ComponentName2 == NULL ||
> FeaturePcdGet(PcdComponentName2Disable)) {
> -              Status = gBS-
> >InstallMultipleProtocolInterfaces (
> -                              &DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid, DriverBinding,
> -
> &gEfiComponentNameProtocolGuid, ComponentName,
> -                              NULL
> -                              );
> -            } else {
> -              Status = gBS-
> >InstallMultipleProtocolInterfaces (
> -                              &DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid, DriverBinding,
> -
> &gEfiComponentNameProtocolGuid, ComponentName,
> -
> &gEfiComponentName2ProtocolGuid, ComponentName2,
> -                              NULL
> -                              );
> -            }
> -          }
> -        } else {
> -          if (ComponentName == NULL ||
> FeaturePcdGet(PcdComponentNameDisable)) {
> -            if (ComponentName2 == NULL ||
> FeaturePcdGet(PcdComponentName2Disable)) {
> -              Status = gBS-
> >InstallMultipleProtocolInterfaces (
> -                              &DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid, DriverBinding,
> -
> &gEfiDriverDiagnostics2ProtocolGuid,
> DriverDiagnostics2,
> -                              NULL
> -                              );
> -            } else {
> -              Status = gBS-
> >InstallMultipleProtocolInterfaces (
> -                              &DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid, DriverBinding,
> -
> &gEfiComponentName2ProtocolGuid, ComponentName2,
> -
> &gEfiDriverDiagnostics2ProtocolGuid,
> DriverDiagnostics2,
> -                              NULL
> -                              );
> -            }
> -          } else {
> -            if (ComponentName2 == NULL ||
> FeaturePcdGet(PcdComponentName2Disable)) {
> -              Status = gBS-
> >InstallMultipleProtocolInterfaces (
> -                              &DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid, DriverBinding,
> -
> &gEfiComponentNameProtocolGuid, ComponentName,
> -
> &gEfiDriverDiagnostics2ProtocolGuid,
> DriverDiagnostics2,
> -                              NULL
> -                              );
> -            } else {
> -              Status = gBS-
> >InstallMultipleProtocolInterfaces (
> -                              &DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid, DriverBinding,
> -
> &gEfiComponentNameProtocolGuid, ComponentName,
> -
> &gEfiComponentName2ProtocolGuid, ComponentName2,
> -
> &gEfiDriverDiagnostics2ProtocolGuid,
> DriverDiagnostics2,
> -                              NULL
> -                              );
> -            }
> -          }
> -        }
> -      } else {
> -        if (DriverDiagnostics2 == NULL ||
> FeaturePcdGet(PcdDriverDiagnostics2Disable)) {
> -          if (ComponentName == NULL ||
> FeaturePcdGet(PcdComponentNameDisable)) {
> -            if (ComponentName2 == NULL ||
> FeaturePcdGet(PcdComponentName2Disable)) {
> -              Status = gBS-
> >InstallMultipleProtocolInterfaces (
> -                              &DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid, DriverBinding,
> -
> &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
> -                              NULL
> -                              );
> -            } else {
> -              Status = gBS-
> >InstallMultipleProtocolInterfaces (
> -                              &DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid, DriverBinding,
> -
> &gEfiComponentName2ProtocolGuid, ComponentName2,
> -
> &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
> -                              NULL
> -                              );
> -            }
> -          } else {
> -            if (ComponentName2 == NULL ||
> FeaturePcdGet(PcdComponentName2Disable)) {
> -              Status = gBS-
> >InstallMultipleProtocolInterfaces (
> -                              &DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid, DriverBinding,
> -
> &gEfiComponentNameProtocolGuid, ComponentName,
> -
> &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
> -                              NULL
> -                              );
> -            } else {
> -              Status = gBS-
> >InstallMultipleProtocolInterfaces (
> -                              &DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid, DriverBinding,
> -
> &gEfiComponentNameProtocolGuid, ComponentName,
> -
> &gEfiComponentName2ProtocolGuid, ComponentName2,
> -
> &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
> -                              NULL
> -                              );
> -            }
> -          }
> -        } else {
> -          if (ComponentName == NULL ||
> FeaturePcdGet(PcdComponentNameDisable)) {
> -            if (ComponentName2 == NULL ||
> FeaturePcdGet(PcdComponentName2Disable)) {
> -              Status = gBS-
> >InstallMultipleProtocolInterfaces (
> -                              &DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid, DriverBinding,
> -
> &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
> -
> &gEfiDriverDiagnostics2ProtocolGuid,
> DriverDiagnostics2,
> -                              NULL
> -                              );
> -            } else {
> -              Status = gBS-
> >InstallMultipleProtocolInterfaces (
> -                              &DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid, DriverBinding,
> -
> &gEfiComponentName2ProtocolGuid, ComponentName2,
> -
> &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
> -
> &gEfiDriverDiagnostics2ProtocolGuid,
> DriverDiagnostics2,
> -                              NULL
> -                              );
> -            }
> -          } else {
> -            if (ComponentName2 == NULL ||
> FeaturePcdGet(PcdComponentName2Disable)) {
> -              Status = gBS-
> >InstallMultipleProtocolInterfaces (
> -                              &DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid, DriverBinding,
> -
> &gEfiComponentNameProtocolGuid, ComponentName,
> -
> &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
> -
> &gEfiDriverDiagnostics2ProtocolGuid,
> DriverDiagnostics2,
> -                              NULL
> -                              );
> -            } else {
> -              Status = gBS-
> >InstallMultipleProtocolInterfaces (
> -                              &DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid, DriverBinding,
> -
> &gEfiComponentNameProtocolGuid, ComponentName,
> -
> &gEfiComponentName2ProtocolGuid, ComponentName2,
> -
> &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
> -
> &gEfiDriverDiagnostics2ProtocolGuid,
> DriverDiagnostics2,
> -                              NULL
> -                              );
> -            }
> -          }
> -        }
> -      }
> -    } else {
> -      if (DriverDiagnostics == NULL ||
> FeaturePcdGet(PcdDriverDiagnosticsDisable)) {
> -        if (DriverDiagnostics2 == NULL ||
> FeaturePcdGet(PcdDriverDiagnostics2Disable)) {
> -          if (ComponentName == NULL ||
> FeaturePcdGet(PcdComponentNameDisable)) {
> -            if (ComponentName2 == NULL ||
> FeaturePcdGet(PcdComponentName2Disable)) {
> -              Status = gBS-
> >InstallMultipleProtocolInterfaces (
> -                              &DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid, DriverBinding,
> -
> &gEfiDriverConfigurationProtocolGuid,
> DriverConfiguration,
> -                              NULL
> -                              );
> -            } else {
> -              Status = gBS-
> >InstallMultipleProtocolInterfaces (
> -                              &DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid, DriverBinding,
> -
> &gEfiComponentName2ProtocolGuid, ComponentName2,
> -
> &gEfiDriverConfigurationProtocolGuid,
> DriverConfiguration,
> -                              NULL
> -                              );
> -            }
> -          } else {
> -            if (ComponentName2 == NULL ||
> FeaturePcdGet(PcdComponentName2Disable)) {
> -              Status = gBS-
> >InstallMultipleProtocolInterfaces (
> -                              &DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid, DriverBinding,
> -
> &gEfiComponentNameProtocolGuid, ComponentName,
> -
> &gEfiDriverConfigurationProtocolGuid,
> DriverConfiguration,
> -                              NULL
> -                              );
> -            } else {
> -              Status = gBS-
> >InstallMultipleProtocolInterfaces (
> -                              &DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid, DriverBinding,
> -
> &gEfiComponentNameProtocolGuid, ComponentName,
> -
> &gEfiComponentName2ProtocolGuid, ComponentName2,
> -
> &gEfiDriverConfigurationProtocolGuid,
> DriverConfiguration,
> -                              NULL
> -                              );
> -            }
> -          }
> -        } else {
> -          if (ComponentName == NULL ||
> FeaturePcdGet(PcdComponentNameDisable)) {
> -            if (ComponentName2 == NULL ||
> FeaturePcdGet(PcdComponentName2Disable)) {
> -              Status = gBS-
> >InstallMultipleProtocolInterfaces (
> -                              &DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid, DriverBinding,
> -
> &gEfiDriverConfigurationProtocolGuid,
> DriverConfiguration,
> -
> &gEfiDriverDiagnostics2ProtocolGuid,
> DriverDiagnostics2,
> -                              NULL
> -                              );
> -            } else {
> -              Status = gBS-
> >InstallMultipleProtocolInterfaces (
> -                              &DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid, DriverBinding,
> -
> &gEfiComponentName2ProtocolGuid, ComponentName2,
> -
> &gEfiDriverConfigurationProtocolGuid,
> DriverConfiguration,
> -
> &gEfiDriverDiagnostics2ProtocolGuid,
> DriverDiagnostics2,
> -                              NULL
> -                              );
> -            }
> -          } else {
> -            if (ComponentName2 == NULL ||
> FeaturePcdGet(PcdComponentName2Disable)) {
> -              Status = gBS-
> >InstallMultipleProtocolInterfaces (
> -                              &DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid, DriverBinding,
> -
> &gEfiComponentNameProtocolGuid, ComponentName,
> -
> &gEfiDriverConfigurationProtocolGuid,
> DriverConfiguration,
> -
> &gEfiDriverDiagnostics2ProtocolGuid,
> DriverDiagnostics2,
> -                              NULL
> -                              );
> -            } else {
> -              Status = gBS-
> >InstallMultipleProtocolInterfaces (
> -                              &DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid, DriverBinding,
> -
> &gEfiComponentNameProtocolGuid, ComponentName,
> -
> &gEfiComponentName2ProtocolGuid, ComponentName2,
> -
> &gEfiDriverConfigurationProtocolGuid,
> DriverConfiguration,
> -
> &gEfiDriverDiagnostics2ProtocolGuid,
> DriverDiagnostics2,
> -                              NULL
> -                              );
> -            }
> -          }
> -        }
> -      } else {
> -        if (DriverDiagnostics2 == NULL ||
> FeaturePcdGet(PcdDriverDiagnostics2Disable)) {
> -          if (ComponentName == NULL ||
> FeaturePcdGet(PcdComponentNameDisable)) {
> -            if (ComponentName2 == NULL ||
> FeaturePcdGet(PcdComponentName2Disable)) {
> -              Status = gBS-
> >InstallMultipleProtocolInterfaces (
> -                              &DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid, DriverBinding,
> -
> &gEfiDriverConfigurationProtocolGuid,
> DriverConfiguration,
> -
> &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
> -                              NULL
> -                              );
> -            } else {
> -              Status = gBS-
> >InstallMultipleProtocolInterfaces (
> -                              &DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid, DriverBinding,
> -
> &gEfiComponentName2ProtocolGuid, ComponentName2,
> -
> &gEfiDriverConfigurationProtocolGuid,
> DriverConfiguration,
> -
> &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
> -                              NULL
> -                              );
> -            }
> -          } else {
> -            if (ComponentName2 == NULL ||
> FeaturePcdGet(PcdComponentName2Disable)) {
> -              Status = gBS-
> >InstallMultipleProtocolInterfaces (
> -                              &DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid, DriverBinding,
> -
> &gEfiComponentNameProtocolGuid, ComponentName,
> -
> &gEfiDriverConfigurationProtocolGuid,
> DriverConfiguration,
> -
> &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
> -                              NULL
> -                              );
> -            } else {
> -              Status = gBS-
> >InstallMultipleProtocolInterfaces (
> -                              &DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid, DriverBinding,
> -
> &gEfiComponentNameProtocolGuid, ComponentName,
> -
> &gEfiComponentName2ProtocolGuid, ComponentName2,
> -
> &gEfiDriverConfigurationProtocolGuid,
> DriverConfiguration,
> -
> &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
> -                              NULL
> -                              );
> -            }
> -          }
> -        } else {
> -          if (ComponentName == NULL ||
> FeaturePcdGet(PcdComponentNameDisable)) {
> -            if (ComponentName2 == NULL ||
> FeaturePcdGet(PcdComponentName2Disable)) {
> -              Status = gBS-
> >InstallMultipleProtocolInterfaces (
> -                              &DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid, DriverBinding,
> -
> &gEfiDriverConfigurationProtocolGuid,
> DriverConfiguration,
> -
> &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
> -
> &gEfiDriverDiagnostics2ProtocolGuid,
> DriverDiagnostics2,
> -                              NULL
> -                              );
> -            } else {
> -              Status = gBS-
> >InstallMultipleProtocolInterfaces (
> -                              &DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid, DriverBinding,
> -
> &gEfiComponentName2ProtocolGuid, ComponentName2,
> -
> &gEfiDriverConfigurationProtocolGuid,
> DriverConfiguration,
> -
> &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
> -
> &gEfiDriverDiagnostics2ProtocolGuid,
> DriverDiagnostics2,
> -                              NULL
> -                              );
> -            }
> -          } else {
> -            if (ComponentName2 == NULL ||
> FeaturePcdGet(PcdComponentName2Disable)) {
> -              Status = gBS-
> >InstallMultipleProtocolInterfaces (
> -                              &DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid, DriverBinding,
> -
> &gEfiComponentNameProtocolGuid, ComponentName,
> -
> &gEfiDriverConfigurationProtocolGuid,
> DriverConfiguration,
> -
> &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
> -
> &gEfiDriverDiagnostics2ProtocolGuid,
> DriverDiagnostics2,
> -                              NULL
> -                              );
> -            } else {
> -              Status = gBS-
> >InstallMultipleProtocolInterfaces (
> -                              &DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid, DriverBinding,
> -
> &gEfiComponentNameProtocolGuid, ComponentName,
> -
> &gEfiComponentName2ProtocolGuid, ComponentName2,
> -
> &gEfiDriverConfigurationProtocolGuid,
> DriverConfiguration,
> -
> &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
> -
> &gEfiDriverDiagnostics2ProtocolGuid,
> DriverDiagnostics2,
> -                              NULL
> -                              );
> -            }
> -          }
> -        }
> -      }
> -    }
> -  } else {
> -    if (DriverConfiguration == NULL) {
> -      if (DriverDiagnostics == NULL ||
> FeaturePcdGet(PcdDriverDiagnosticsDisable)) {
> -        if (DriverDiagnostics2 == NULL ||
> FeaturePcdGet(PcdDriverDiagnostics2Disable)) {
> -          if (ComponentName == NULL ||
> FeaturePcdGet(PcdComponentNameDisable)) {
> -            if (ComponentName2 == NULL ||
> FeaturePcdGet(PcdComponentName2Disable)) {
> -              Status = gBS-
> >InstallMultipleProtocolInterfaces (
> -                              &DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid, DriverBinding,
> -
> &gEfiDriverConfiguration2ProtocolGuid,
> DriverConfiguration2,
> -                              NULL
> -                              );
> -            } else {
> -              Status = gBS-
> >InstallMultipleProtocolInterfaces (
> -                              &DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid, DriverBinding,
> -
> &gEfiComponentName2ProtocolGuid, ComponentName2,
> -
> &gEfiDriverConfiguration2ProtocolGuid,
> DriverConfiguration2,
> -                              NULL
> -                              );
> -            }
> -          } else {
> -            if (ComponentName2 == NULL ||
> FeaturePcdGet(PcdComponentName2Disable)) {
> -              Status = gBS-
> >InstallMultipleProtocolInterfaces (
> -                              &DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid, DriverBinding,
> -
> &gEfiComponentNameProtocolGuid, ComponentName,
> -
> &gEfiDriverConfiguration2ProtocolGuid,
> DriverConfiguration2,
> -                              NULL
> -                              );
> -            } else {
> -              Status = gBS-
> >InstallMultipleProtocolInterfaces (
> -                              &DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid, DriverBinding,
> -
> &gEfiComponentNameProtocolGuid, ComponentName,
> -
> &gEfiComponentName2ProtocolGuid, ComponentName2,
> -
> &gEfiDriverConfiguration2ProtocolGuid,
> DriverConfiguration2,
> -                              NULL
> -                              );
> -            }
> -          }
> -        } else {
> -          if (ComponentName == NULL ||
> FeaturePcdGet(PcdComponentNameDisable)) {
> -            if (ComponentName2 == NULL ||
> FeaturePcdGet(PcdComponentName2Disable)) {
> -              Status = gBS-
> >InstallMultipleProtocolInterfaces (
> -                              &DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid, DriverBinding,
> -
> &gEfiDriverDiagnostics2ProtocolGuid,
> DriverDiagnostics2,
> -
> &gEfiDriverConfiguration2ProtocolGuid,
> DriverConfiguration2,
> -                              NULL
> -                              );
> -            } else {
> -              Status = gBS-
> >InstallMultipleProtocolInterfaces (
> -                              &DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid, DriverBinding,
> -
> &gEfiComponentName2ProtocolGuid, ComponentName2,
> -
> &gEfiDriverConfiguration2ProtocolGuid,
> DriverConfiguration2,
> -
> &gEfiDriverDiagnostics2ProtocolGuid,
> DriverDiagnostics2,
> -                              NULL
> -                              );
> -            }
> -          } else {
> -            if (ComponentName2 == NULL ||
> FeaturePcdGet(PcdComponentName2Disable)) {
> -              Status = gBS-
> >InstallMultipleProtocolInterfaces (
> -                              &DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid, DriverBinding,
> -
> &gEfiComponentNameProtocolGuid, ComponentName,
> -
> &gEfiDriverConfiguration2ProtocolGuid,
> DriverConfiguration2,
> -
> &gEfiDriverDiagnostics2ProtocolGuid,
> DriverDiagnostics2,
> -                              NULL
> -                              );
> -            } else {
> -              Status = gBS-
> >InstallMultipleProtocolInterfaces (
> -                              &DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid, DriverBinding,
> -
> &gEfiComponentNameProtocolGuid, ComponentName,
> -
> &gEfiComponentName2ProtocolGuid, ComponentName2,
> -
> &gEfiDriverConfiguration2ProtocolGuid,
> DriverConfiguration2,
> -
> &gEfiDriverDiagnostics2ProtocolGuid,
> DriverDiagnostics2,
> -                              NULL
> -                              );
> -            }
> -          }
> -        }
> -      } else {
> -        if (DriverDiagnostics2 == NULL ||
> FeaturePcdGet(PcdDriverDiagnostics2Disable)) {
> -          if (ComponentName == NULL ||
> FeaturePcdGet(PcdComponentNameDisable)) {
> -            if (ComponentName2 == NULL ||
> FeaturePcdGet(PcdComponentName2Disable)) {
> -              Status = gBS-
> >InstallMultipleProtocolInterfaces (
> -                              &DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid, DriverBinding,
> -
> &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
> -
> &gEfiDriverConfiguration2ProtocolGuid,
> DriverConfiguration2,
> -                              NULL
> -                              );
> -            } else {
> -              Status = gBS-
> >InstallMultipleProtocolInterfaces (
> -                              &DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid, DriverBinding,
> -
> &gEfiComponentName2ProtocolGuid, ComponentName2,
> -
> &gEfiDriverConfiguration2ProtocolGuid,
> DriverConfiguration2,
> -
> &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
> -                              NULL
> -                              );
> -            }
> -          } else {
> -            if (ComponentName2 == NULL ||
> FeaturePcdGet(PcdComponentName2Disable)) {
> -              Status = gBS-
> >InstallMultipleProtocolInterfaces (
> -                              &DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid, DriverBinding,
> -
> &gEfiComponentNameProtocolGuid, ComponentName,
> -
> &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
> -
> &gEfiDriverConfiguration2ProtocolGuid,
> DriverConfiguration2,
> -                              NULL
> -                              );
> -            } else {
> -              Status = gBS-
> >InstallMultipleProtocolInterfaces (
> -                              &DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid, DriverBinding,
> -
> &gEfiComponentNameProtocolGuid, ComponentName,
> -
> &gEfiComponentName2ProtocolGuid, ComponentName2,
> -
> &gEfiDriverConfiguration2ProtocolGuid,
> DriverConfiguration2,
> -
> &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
> -                              NULL
> -                              );
> -            }
> -          }
> -        } else {
> -          if (ComponentName == NULL ||
> FeaturePcdGet(PcdComponentNameDisable)) {
> -            if (ComponentName2 == NULL ||
> FeaturePcdGet(PcdComponentName2Disable)) {
> -              Status = gBS-
> >InstallMultipleProtocolInterfaces (
> -                              &DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid, DriverBinding,
> -
> &gEfiDriverConfiguration2ProtocolGuid,
> DriverConfiguration2,
> -
> &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
> -
> &gEfiDriverDiagnostics2ProtocolGuid,
> DriverDiagnostics2,
> -                              NULL
> -                              );
> -            } else {
> -              Status = gBS-
> >InstallMultipleProtocolInterfaces (
> -                              &DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid, DriverBinding,
> -
> &gEfiComponentName2ProtocolGuid, ComponentName2,
> -
> &gEfiDriverConfiguration2ProtocolGuid,
> DriverConfiguration2,
> -
> &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
> -
> &gEfiDriverDiagnostics2ProtocolGuid,
> DriverDiagnostics2,
> -                              NULL
> -                              );
> -            }
> -          } else {
> -            if (ComponentName2 == NULL ||
> FeaturePcdGet(PcdComponentName2Disable)) {
> -              Status = gBS-
> >InstallMultipleProtocolInterfaces (
> -                              &DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid, DriverBinding,
> -
> &gEfiComponentNameProtocolGuid, ComponentName,
> -
> &gEfiDriverConfiguration2ProtocolGuid,
> DriverConfiguration2,
> -
> &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
> -
> &gEfiDriverDiagnostics2ProtocolGuid,
> DriverDiagnostics2,
> -                              NULL
> -                              );
> -            } else {
> -              Status = gBS-
> >InstallMultipleProtocolInterfaces (
> -                              &DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid, DriverBinding,
> -
> &gEfiComponentNameProtocolGuid, ComponentName,
> -
> &gEfiComponentName2ProtocolGuid, ComponentName2,
> -
> &gEfiDriverConfiguration2ProtocolGuid,
> DriverConfiguration2,
> -
> &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
> -
> &gEfiDriverDiagnostics2ProtocolGuid,
> DriverDiagnostics2,
> -                              NULL
> -                              );
> -            }
> -          }
> -        }
> -      }
> -    } else {
> -      if (DriverDiagnostics == NULL ||
> FeaturePcdGet(PcdDriverDiagnosticsDisable)) {
> -        if (DriverDiagnostics2 == NULL ||
> FeaturePcdGet(PcdDriverDiagnostics2Disable)) {
> -          if (ComponentName == NULL ||
> FeaturePcdGet(PcdComponentNameDisable)) {
> -            if (ComponentName2 == NULL ||
> FeaturePcdGet(PcdComponentName2Disable)) {
> -              Status = gBS-
> >InstallMultipleProtocolInterfaces (
> -                              &DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid, DriverBinding,
> -
> &gEfiDriverConfigurationProtocolGuid,
> DriverConfiguration,
> -
> &gEfiDriverConfiguration2ProtocolGuid,
> DriverConfiguration2,
> -                              NULL
> -                              );
> -            } else {
> -              Status = gBS-
> >InstallMultipleProtocolInterfaces (
> -                              &DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid, DriverBinding,
> -
> &gEfiComponentName2ProtocolGuid, ComponentName2,
> -
> &gEfiDriverConfigurationProtocolGuid,
> DriverConfiguration,
> -
> &gEfiDriverConfiguration2ProtocolGuid,
> DriverConfiguration2,
> -                              NULL
> -                              );
> -            }
> -          } else {
> -            if (ComponentName2 == NULL ||
> FeaturePcdGet(PcdComponentName2Disable)) {
> -              Status = gBS-
> >InstallMultipleProtocolInterfaces (
> -                              &DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid, DriverBinding,
> -
> &gEfiComponentNameProtocolGuid, ComponentName,
> -
> &gEfiDriverConfigurationProtocolGuid,
> DriverConfiguration,
> -
> &gEfiDriverConfiguration2ProtocolGuid,
> DriverConfiguration2,
> -                              NULL
> -                              );
> -            } else {
> -              Status = gBS-
> >InstallMultipleProtocolInterfaces (
> -                              &DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid, DriverBinding,
> -
> &gEfiComponentNameProtocolGuid, ComponentName,
> -
> &gEfiComponentName2ProtocolGuid, ComponentName2,
> -
> &gEfiDriverConfigurationProtocolGuid,
> DriverConfiguration,
> -
> &gEfiDriverConfiguration2ProtocolGuid,
> DriverConfiguration2,
> -                              NULL
> -                              );
> -            }
> -          }
> -        } else {
> -          if (ComponentName == NULL ||
> FeaturePcdGet(PcdComponentNameDisable)) {
> -            if (ComponentName2 == NULL ||
> FeaturePcdGet(PcdComponentName2Disable)) {
> -              Status = gBS-
> >InstallMultipleProtocolInterfaces (
> -                              &DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid, DriverBinding,
> -
> &gEfiDriverConfigurationProtocolGuid,
> DriverConfiguration,
> -
> &gEfiDriverConfiguration2ProtocolGuid,
> DriverConfiguration2,
> -
> &gEfiDriverDiagnostics2ProtocolGuid,
> DriverDiagnostics2,
> -                              NULL
> -                              );
> -            } else {
> -              Status = gBS-
> >InstallMultipleProtocolInterfaces (
> -                              &DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid, DriverBinding,
> -
> &gEfiComponentName2ProtocolGuid, ComponentName2,
> -
> &gEfiDriverConfigurationProtocolGuid,
> DriverConfiguration,
> -
> &gEfiDriverConfiguration2ProtocolGuid,
> DriverConfiguration2,
> -
> &gEfiDriverDiagnostics2ProtocolGuid,
> DriverDiagnostics2,
> -                              NULL
> -                              );
> -            }
> -          } else {
> -            if (ComponentName2 == NULL ||
> FeaturePcdGet(PcdComponentName2Disable)) {
> -              Status = gBS-
> >InstallMultipleProtocolInterfaces (
> -                              &DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid, DriverBinding,
> -
> &gEfiComponentNameProtocolGuid, ComponentName,
> -
> &gEfiDriverConfigurationProtocolGuid,
> DriverConfiguration,
> -
> &gEfiDriverConfiguration2ProtocolGuid,
> DriverConfiguration2,
> -
> &gEfiDriverDiagnostics2ProtocolGuid,
> DriverDiagnostics2,
> -                              NULL
> -                              );
> -            } else {
> -              Status = gBS-
> >InstallMultipleProtocolInterfaces (
> -                              &DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid, DriverBinding,
> -
> &gEfiComponentNameProtocolGuid, ComponentName,
> -
> &gEfiComponentName2ProtocolGuid, ComponentName2,
> -
> &gEfiDriverConfigurationProtocolGuid,
> DriverConfiguration,
> -
> &gEfiDriverConfiguration2ProtocolGuid,
> DriverConfiguration2,
> -
> &gEfiDriverDiagnostics2ProtocolGuid,
> DriverDiagnostics2,
> -                              NULL
> -                              );
> -            }
> -          }
> -        }
> -      } else {
> -        if (DriverDiagnostics2 == NULL ||
> FeaturePcdGet(PcdDriverDiagnostics2Disable)) {
> -          if (ComponentName == NULL ||
> FeaturePcdGet(PcdComponentNameDisable)) {
> -            if (ComponentName2 == NULL ||
> FeaturePcdGet(PcdComponentName2Disable)) {
> -              Status = gBS-
> >InstallMultipleProtocolInterfaces (
> -                              &DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid, DriverBinding,
> -
> &gEfiDriverConfigurationProtocolGuid,
> DriverConfiguration,
> -
> &gEfiDriverConfiguration2ProtocolGuid,
> DriverConfiguration2,
> -
> &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
> -                              NULL
> -                              );
> -            } else {
> -              Status = gBS-
> >InstallMultipleProtocolInterfaces (
> -                              &DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid, DriverBinding,
> -
> &gEfiComponentName2ProtocolGuid, ComponentName2,
> -
> &gEfiDriverConfigurationProtocolGuid,
> DriverConfiguration,
> -
> &gEfiDriverConfiguration2ProtocolGuid,
> DriverConfiguration2,
> -
> &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
> -                              NULL
> -                              );
> -            }
> -          } else {
> -            if (ComponentName2 == NULL ||
> FeaturePcdGet(PcdComponentName2Disable)) {
> -              Status = gBS-
> >InstallMultipleProtocolInterfaces (
> -                              &DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid, DriverBinding,
> -
> &gEfiComponentNameProtocolGuid, ComponentName,
> -
> &gEfiDriverConfigurationProtocolGuid,
> DriverConfiguration,
> -
> &gEfiDriverConfiguration2ProtocolGuid,
> DriverConfiguration2,
> -
> &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
> -                              NULL
> -                              );
> -            } else {
> -              Status = gBS-
> >InstallMultipleProtocolInterfaces (
> -                              &DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid, DriverBinding,
> -
> &gEfiComponentNameProtocolGuid, ComponentName,
> -
> &gEfiComponentName2ProtocolGuid, ComponentName2,
> -
> &gEfiDriverConfigurationProtocolGuid,
> DriverConfiguration,
> -
> &gEfiDriverConfiguration2ProtocolGuid,
> DriverConfiguration2,
> -
> &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
> -                              NULL
> -                              );
> -            }
> -          }
> -        } else {
> -          if (ComponentName == NULL ||
> FeaturePcdGet(PcdComponentNameDisable)) {
> -            if (ComponentName2 == NULL ||
> FeaturePcdGet(PcdComponentName2Disable)) {
> -              Status = gBS-
> >InstallMultipleProtocolInterfaces (
> -                              &DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid, DriverBinding,
> -
> &gEfiDriverConfigurationProtocolGuid,
> DriverConfiguration,
> -
> &gEfiDriverConfiguration2ProtocolGuid,
> DriverConfiguration2,
> -
> &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
> -
> &gEfiDriverDiagnostics2ProtocolGuid,
> DriverDiagnostics2,
> -                              NULL
> -                              );
> -            } else {
> -              Status = gBS-
> >InstallMultipleProtocolInterfaces (
> -                              &DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid, DriverBinding,
> -
> &gEfiComponentName2ProtocolGuid, ComponentName2,
> -
> &gEfiDriverConfigurationProtocolGuid,
> DriverConfiguration,
> -
> &gEfiDriverConfiguration2ProtocolGuid,
> DriverConfiguration2,
> -
> &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
> -
> &gEfiDriverDiagnostics2ProtocolGuid,
> DriverDiagnostics2,
> -                              NULL
> -                              );
> -            }
> -          } else {
> -            if (ComponentName2 == NULL ||
> FeaturePcdGet(PcdComponentName2Disable)) {
> -              Status = gBS-
> >InstallMultipleProtocolInterfaces (
> -                              &DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid, DriverBinding,
> -
> &gEfiComponentNameProtocolGuid, ComponentName,
> -
> &gEfiDriverConfigurationProtocolGuid,
> DriverConfiguration,
> -
> &gEfiDriverConfiguration2ProtocolGuid,
> DriverConfiguration2,
> -
> &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
> -
> &gEfiDriverDiagnostics2ProtocolGuid,
> DriverDiagnostics2,
> -                              NULL
> -                              );
> -            } else {
> -              Status = gBS-
> >InstallMultipleProtocolInterfaces (
> -                              &DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid, DriverBinding,
> -
> &gEfiComponentNameProtocolGuid, ComponentName,
> -
> &gEfiComponentName2ProtocolGuid, ComponentName2,
> -
> &gEfiDriverConfigurationProtocolGuid,
> DriverConfiguration,
> -
> &gEfiDriverConfiguration2ProtocolGuid,
> DriverConfiguration2,
> -
> &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
> -
> &gEfiDriverDiagnostics2ProtocolGuid,
> DriverDiagnostics2,
> -                              NULL
> -                              );
> -            }
> -          }
> -        }
> -      }
> -    }
> -  }
> -
> -  //
> -  // ASSERT if the call to
> InstallMultipleProtocolInterfaces() failed
> -  //
> -  ASSERT_EFI_ERROR (Status);
> -
> -  return Status;
> +  return EfiLibProcessAllDriverProtocols2 (
> +           ImageHandle,
> +           DriverBinding,
> +           DriverBindingHandle,
> +           TRUE,
> +           ComponentName,
> +           ComponentName2,
> +           DriverConfiguration,
> +           DriverConfiguration2,
> +           DriverDiagnostics,
> +           DriverDiagnostics2
> +           );
>  }
> 
> 
> @@ -1311,716 +655,16 @@
> EfiLibUninstallAllDriverProtocols2 (
>    IN CONST EFI_DRIVER_DIAGNOSTICS2_PROTOCOL
> *DriverDiagnostics2    OPTIONAL
>    )
>  {
> -  EFI_STATUS  Status;
> -
> -  ASSERT (DriverBinding != NULL);
> -
> -  if (DriverConfiguration2 == NULL) {
> -    if (DriverConfiguration == NULL) {
> -      if (DriverDiagnostics == NULL ||
> FeaturePcdGet(PcdDriverDiagnosticsDisable)) {
> -        if (DriverDiagnostics2 == NULL ||
> FeaturePcdGet(PcdDriverDiagnostics2Disable)) {
> -          if (ComponentName == NULL ||
> FeaturePcdGet(PcdComponentNameDisable)) {
> -            if (ComponentName2 == NULL ||
> FeaturePcdGet(PcdComponentName2Disable)) {
> -              Status = gBS-
> >UninstallMultipleProtocolInterfaces (
> -                              DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid, DriverBinding,
> -                              NULL
> -                              );
> -            } else {
> -              Status = gBS-
> >UninstallMultipleProtocolInterfaces (
> -                              DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid, DriverBinding,
> -
> &gEfiComponentName2ProtocolGuid, ComponentName2,
> -                              NULL
> -                              );
> -            }
> -          } else {
> -            if (ComponentName2 == NULL ||
> FeaturePcdGet(PcdComponentName2Disable)) {
> -              Status = gBS-
> >UninstallMultipleProtocolInterfaces (
> -                              DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid, DriverBinding,
> -
> &gEfiComponentNameProtocolGuid, ComponentName,
> -                              NULL
> -                              );
> -            } else {
> -              Status = gBS-
> >UninstallMultipleProtocolInterfaces (
> -                              DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid, DriverBinding,
> -
> &gEfiComponentNameProtocolGuid, ComponentName,
> -
> &gEfiComponentName2ProtocolGuid, ComponentName2,
> -                              NULL
> -                              );
> -            }
> -          }
> -        } else {
> -          if (ComponentName == NULL ||
> FeaturePcdGet(PcdComponentNameDisable)) {
> -            if (ComponentName2 == NULL ||
> FeaturePcdGet(PcdComponentName2Disable)) {
> -              Status = gBS-
> >UninstallMultipleProtocolInterfaces (
> -                              DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid, DriverBinding,
> -
> &gEfiDriverDiagnostics2ProtocolGuid,
> DriverDiagnostics2,
> -                              NULL
> -                              );
> -            } else {
> -              Status = gBS-
> >UninstallMultipleProtocolInterfaces (
> -                              DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid, DriverBinding,
> -
> &gEfiComponentName2ProtocolGuid, ComponentName2,
> -
> &gEfiDriverDiagnostics2ProtocolGuid,
> DriverDiagnostics2,
> -                              NULL
> -                              );
> -            }
> -          } else {
> -            if (ComponentName2 == NULL ||
> FeaturePcdGet(PcdComponentName2Disable)) {
> -              Status = gBS-
> >UninstallMultipleProtocolInterfaces (
> -                              DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid, DriverBinding,
> -
> &gEfiComponentNameProtocolGuid, ComponentName,
> -
> &gEfiDriverDiagnostics2ProtocolGuid,
> DriverDiagnostics2,
> -                              NULL
> -                              );
> -            } else {
> -              Status = gBS-
> >UninstallMultipleProtocolInterfaces (
> -                              DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid, DriverBinding,
> -
> &gEfiComponentNameProtocolGuid, ComponentName,
> -
> &gEfiComponentName2ProtocolGuid, ComponentName2,
> -
> &gEfiDriverDiagnostics2ProtocolGuid,
> DriverDiagnostics2,
> -                              NULL
> -                              );
> -            }
> -          }
> -        }
> -      } else {
> -        if (DriverDiagnostics2 == NULL ||
> FeaturePcdGet(PcdDriverDiagnostics2Disable)) {
> -          if (ComponentName == NULL ||
> FeaturePcdGet(PcdComponentNameDisable)) {
> -            if (ComponentName2 == NULL ||
> FeaturePcdGet(PcdComponentName2Disable)) {
> -              Status = gBS-
> >UninstallMultipleProtocolInterfaces (
> -                              DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid, DriverBinding,
> -
> &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
> -                              NULL
> -                              );
> -            } else {
> -              Status = gBS-
> >UninstallMultipleProtocolInterfaces (
> -                              DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid, DriverBinding,
> -
> &gEfiComponentName2ProtocolGuid, ComponentName2,
> -
> &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
> -                              NULL
> -                              );
> -            }
> -          } else {
> -            if (ComponentName2 == NULL ||
> FeaturePcdGet(PcdComponentName2Disable)) {
> -              Status = gBS-
> >UninstallMultipleProtocolInterfaces (
> -                              DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid, DriverBinding,
> -
> &gEfiComponentNameProtocolGuid, ComponentName,
> -
> &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
> -                              NULL
> -                              );
> -            } else {
> -              Status = gBS-
> >UninstallMultipleProtocolInterfaces (
> -                              DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid, DriverBinding,
> -
> &gEfiComponentNameProtocolGuid, ComponentName,
> -
> &gEfiComponentName2ProtocolGuid, ComponentName2,
> -
> &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
> -                              NULL
> -                              );
> -            }
> -          }
> -        } else {
> -          if (ComponentName == NULL ||
> FeaturePcdGet(PcdComponentNameDisable)) {
> -            if (ComponentName2 == NULL ||
> FeaturePcdGet(PcdComponentName2Disable)) {
> -              Status = gBS-
> >UninstallMultipleProtocolInterfaces (
> -                              DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid, DriverBinding,
> -
> &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
> -
> &gEfiDriverDiagnostics2ProtocolGuid,
> DriverDiagnostics2,
> -                              NULL
> -                              );
> -            } else {
> -              Status = gBS-
> >UninstallMultipleProtocolInterfaces (
> -                              DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid, DriverBinding,
> -
> &gEfiComponentName2ProtocolGuid, ComponentName2,
> -
> &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
> -
> &gEfiDriverDiagnostics2ProtocolGuid,
> DriverDiagnostics2,
> -                              NULL
> -                              );
> -            }
> -          } else {
> -            if (ComponentName2 == NULL ||
> FeaturePcdGet(PcdComponentName2Disable)) {
> -              Status = gBS-
> >UninstallMultipleProtocolInterfaces (
> -                              DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid, DriverBinding,
> -
> &gEfiComponentNameProtocolGuid, ComponentName,
> -
> &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
> -
> &gEfiDriverDiagnostics2ProtocolGuid,
> DriverDiagnostics2,
> -                              NULL
> -                              );
> -            } else {
> -              Status = gBS-
> >UninstallMultipleProtocolInterfaces (
> -                              DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid, DriverBinding,
> -
> &gEfiComponentNameProtocolGuid, ComponentName,
> -
> &gEfiComponentName2ProtocolGuid, ComponentName2,
> -
> &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
> -
> &gEfiDriverDiagnostics2ProtocolGuid,
> DriverDiagnostics2,
> -                              NULL
> -                              );
> -            }
> -          }
> -        }
> -      }
> -    } else {
> -      if (DriverDiagnostics == NULL ||
> FeaturePcdGet(PcdDriverDiagnosticsDisable)) {
> -        if (DriverDiagnostics2 == NULL ||
> FeaturePcdGet(PcdDriverDiagnostics2Disable)) {
> -          if (ComponentName == NULL ||
> FeaturePcdGet(PcdComponentNameDisable)) {
> -            if (ComponentName2 == NULL ||
> FeaturePcdGet(PcdComponentName2Disable)) {
> -              Status = gBS-
> >UninstallMultipleProtocolInterfaces (
> -                              DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid, DriverBinding,
> -
> &gEfiDriverConfigurationProtocolGuid,
> DriverConfiguration,
> -                              NULL
> -                              );
> -            } else {
> -              Status = gBS-
> >UninstallMultipleProtocolInterfaces (
> -                              DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid, DriverBinding,
> -
> &gEfiComponentName2ProtocolGuid, ComponentName2,
> -
> &gEfiDriverConfigurationProtocolGuid,
> DriverConfiguration,
> -                              NULL
> -                              );
> -            }
> -          } else {
> -            if (ComponentName2 == NULL ||
> FeaturePcdGet(PcdComponentName2Disable)) {
> -              Status = gBS-
> >UninstallMultipleProtocolInterfaces (
> -                              DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid, DriverBinding,
> -
> &gEfiComponentNameProtocolGuid, ComponentName,
> -
> &gEfiDriverConfigurationProtocolGuid,
> DriverConfiguration,
> -                              NULL
> -                              );
> -            } else {
> -              Status = gBS-
> >UninstallMultipleProtocolInterfaces (
> -                              DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid, DriverBinding,
> -
> &gEfiComponentNameProtocolGuid, ComponentName,
> -
> &gEfiComponentName2ProtocolGuid, ComponentName2,
> -
> &gEfiDriverConfigurationProtocolGuid,
> DriverConfiguration,
> -                              NULL
> -                              );
> -            }
> -          }
> -        } else {
> -          if (ComponentName == NULL ||
> FeaturePcdGet(PcdComponentNameDisable)) {
> -            if (ComponentName2 == NULL ||
> FeaturePcdGet(PcdComponentName2Disable)) {
> -              Status = gBS-
> >UninstallMultipleProtocolInterfaces (
> -                              DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid, DriverBinding,
> -
> &gEfiDriverConfigurationProtocolGuid,
> DriverConfiguration,
> -
> &gEfiDriverDiagnostics2ProtocolGuid,
> DriverDiagnostics2,
> -                              NULL
> -                              );
> -            } else {
> -              Status = gBS-
> >UninstallMultipleProtocolInterfaces (
> -                              DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid, DriverBinding,
> -
> &gEfiComponentName2ProtocolGuid, ComponentName2,
> -
> &gEfiDriverConfigurationProtocolGuid,
> DriverConfiguration,
> -
> &gEfiDriverDiagnostics2ProtocolGuid,
> DriverDiagnostics2,
> -                              NULL
> -                              );
> -            }
> -          } else {
> -            if (ComponentName2 == NULL ||
> FeaturePcdGet(PcdComponentName2Disable)) {
> -              Status = gBS-
> >UninstallMultipleProtocolInterfaces (
> -                              DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid, DriverBinding,
> -
> &gEfiComponentNameProtocolGuid, ComponentName,
> -
> &gEfiDriverConfigurationProtocolGuid,
> DriverConfiguration,
> -
> &gEfiDriverDiagnostics2ProtocolGuid,
> DriverDiagnostics2,
> -                              NULL
> -                              );
> -            } else {
> -              Status = gBS-
> >UninstallMultipleProtocolInterfaces (
> -                              DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid, DriverBinding,
> -
> &gEfiComponentNameProtocolGuid, ComponentName,
> -
> &gEfiComponentName2ProtocolGuid, ComponentName2,
> -
> &gEfiDriverConfigurationProtocolGuid,
> DriverConfiguration,
> -
> &gEfiDriverDiagnostics2ProtocolGuid,
> DriverDiagnostics2,
> -                              NULL
> -                              );
> -            }
> -          }
> -        }
> -      } else {
> -        if (DriverDiagnostics2 == NULL ||
> FeaturePcdGet(PcdDriverDiagnostics2Disable)) {
> -          if (ComponentName == NULL ||
> FeaturePcdGet(PcdComponentNameDisable)) {
> -            if (ComponentName2 == NULL ||
> FeaturePcdGet(PcdComponentName2Disable)) {
> -              Status = gBS-
> >UninstallMultipleProtocolInterfaces (
> -                              DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid, DriverBinding,
> -
> &gEfiDriverConfigurationProtocolGuid,
> DriverConfiguration,
> -
> &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
> -                              NULL
> -                              );
> -            } else {
> -              Status = gBS-
> >UninstallMultipleProtocolInterfaces (
> -                              DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid, DriverBinding,
> -
> &gEfiComponentName2ProtocolGuid, ComponentName2,
> -
> &gEfiDriverConfigurationProtocolGuid,
> DriverConfiguration,
> -
> &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
> -                              NULL
> -                              );
> -            }
> -          } else {
> -            if (ComponentName2 == NULL ||
> FeaturePcdGet(PcdComponentName2Disable)) {
> -              Status = gBS-
> >UninstallMultipleProtocolInterfaces (
> -                              DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid, DriverBinding,
> -
> &gEfiComponentNameProtocolGuid, ComponentName,
> -
> &gEfiDriverConfigurationProtocolGuid,
> DriverConfiguration,
> -
> &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
> -                              NULL
> -                              );
> -            } else {
> -              Status = gBS-
> >UninstallMultipleProtocolInterfaces (
> -                              DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid, DriverBinding,
> -
> &gEfiComponentNameProtocolGuid, ComponentName,
> -
> &gEfiComponentName2ProtocolGuid, ComponentName2,
> -
> &gEfiDriverConfigurationProtocolGuid,
> DriverConfiguration,
> -
> &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
> -                              NULL
> -                              );
> -            }
> -          }
> -        } else {
> -          if (ComponentName == NULL ||
> FeaturePcdGet(PcdComponentNameDisable)) {
> -            if (ComponentName2 == NULL ||
> FeaturePcdGet(PcdComponentName2Disable)) {
> -              Status = gBS-
> >UninstallMultipleProtocolInterfaces (
> -                              DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid, DriverBinding,
> -
> &gEfiDriverConfigurationProtocolGuid,
> DriverConfiguration,
> -
> &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
> -
> &gEfiDriverDiagnostics2ProtocolGuid,
> DriverDiagnostics2,
> -                              NULL
> -                              );
> -            } else {
> -              Status = gBS-
> >UninstallMultipleProtocolInterfaces (
> -                              DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid, DriverBinding,
> -
> &gEfiComponentName2ProtocolGuid, ComponentName2,
> -
> &gEfiDriverConfigurationProtocolGuid,
> DriverConfiguration,
> -
> &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
> -
> &gEfiDriverDiagnostics2ProtocolGuid,
> DriverDiagnostics2,
> -                              NULL
> -                              );
> -            }
> -          } else {
> -            if (ComponentName2 == NULL ||
> FeaturePcdGet(PcdComponentName2Disable)) {
> -              Status = gBS-
> >UninstallMultipleProtocolInterfaces (
> -                              DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid, DriverBinding,
> -
> &gEfiComponentNameProtocolGuid, ComponentName,
> -
> &gEfiDriverConfigurationProtocolGuid,
> DriverConfiguration,
> -
> &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
> -
> &gEfiDriverDiagnostics2ProtocolGuid,
> DriverDiagnostics2,
> -                              NULL
> -                              );
> -            } else {
> -              Status = gBS-
> >UninstallMultipleProtocolInterfaces (
> -                              DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid, DriverBinding,
> -
> &gEfiComponentNameProtocolGuid, ComponentName,
> -
> &gEfiComponentName2ProtocolGuid, ComponentName2,
> -
> &gEfiDriverConfigurationProtocolGuid,
> DriverConfiguration,
> -
> &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
> -
> &gEfiDriverDiagnostics2ProtocolGuid,
> DriverDiagnostics2,
> -                              NULL
> -                              );
> -            }
> -          }
> -        }
> -      }
> -    }
> -  } else {
> -    if (DriverConfiguration == NULL) {
> -      if (DriverDiagnostics == NULL ||
> FeaturePcdGet(PcdDriverDiagnosticsDisable)) {
> -        if (DriverDiagnostics2 == NULL ||
> FeaturePcdGet(PcdDriverDiagnostics2Disable)) {
> -          if (ComponentName == NULL ||
> FeaturePcdGet(PcdComponentNameDisable)) {
> -            if (ComponentName2 == NULL ||
> FeaturePcdGet(PcdComponentName2Disable)) {
> -              Status = gBS-
> >UninstallMultipleProtocolInterfaces (
> -                              DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid, DriverBinding,
> -
> &gEfiDriverConfiguration2ProtocolGuid,
> DriverConfiguration2,
> -                              NULL
> -                              );
> -            } else {
> -              Status = gBS-
> >UninstallMultipleProtocolInterfaces (
> -                              DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid, DriverBinding,
> -
> &gEfiComponentName2ProtocolGuid, ComponentName2,
> -
> &gEfiDriverConfiguration2ProtocolGuid,
> DriverConfiguration2,
> -                              NULL
> -                              );
> -            }
> -          } else {
> -            if (ComponentName2 == NULL ||
> FeaturePcdGet(PcdComponentName2Disable)) {
> -              Status = gBS-
> >UninstallMultipleProtocolInterfaces (
> -                              DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid, DriverBinding,
> -
> &gEfiComponentNameProtocolGuid, ComponentName,
> -
> &gEfiDriverConfiguration2ProtocolGuid,
> DriverConfiguration2,
> -                              NULL
> -                              );
> -            } else {
> -              Status = gBS-
> >UninstallMultipleProtocolInterfaces (
> -                              DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid, DriverBinding,
> -
> &gEfiComponentNameProtocolGuid, ComponentName,
> -
> &gEfiComponentName2ProtocolGuid, ComponentName2,
> -
> &gEfiDriverConfiguration2ProtocolGuid,
> DriverConfiguration2,
> -                              NULL
> -                              );
> -            }
> -          }
> -        } else {
> -          if (ComponentName == NULL ||
> FeaturePcdGet(PcdComponentNameDisable)) {
> -            if (ComponentName2 == NULL ||
> FeaturePcdGet(PcdComponentName2Disable)) {
> -              Status = gBS-
> >UninstallMultipleProtocolInterfaces (
> -                              DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid, DriverBinding,
> -
> &gEfiDriverDiagnostics2ProtocolGuid,
> DriverDiagnostics2,
> -
> &gEfiDriverConfiguration2ProtocolGuid,
> DriverConfiguration2,
> -                              NULL
> -                              );
> -            } else {
> -              Status = gBS-
> >UninstallMultipleProtocolInterfaces (
> -                              DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid, DriverBinding,
> -
> &gEfiComponentName2ProtocolGuid, ComponentName2,
> -
> &gEfiDriverConfiguration2ProtocolGuid,
> DriverConfiguration2,
> -
> &gEfiDriverDiagnostics2ProtocolGuid,
> DriverDiagnostics2,
> -                              NULL
> -                              );
> -            }
> -          } else {
> -            if (ComponentName2 == NULL ||
> FeaturePcdGet(PcdComponentName2Disable)) {
> -              Status = gBS-
> >UninstallMultipleProtocolInterfaces (
> -                              DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid, DriverBinding,
> -
> &gEfiComponentNameProtocolGuid, ComponentName,
> -
> &gEfiDriverConfiguration2ProtocolGuid,
> DriverConfiguration2,
> -
> &gEfiDriverDiagnostics2ProtocolGuid,
> DriverDiagnostics2,
> -                              NULL
> -                              );
> -            } else {
> -              Status = gBS-
> >UninstallMultipleProtocolInterfaces (
> -                              DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid, DriverBinding,
> -
> &gEfiComponentNameProtocolGuid, ComponentName,
> -
> &gEfiComponentName2ProtocolGuid, ComponentName2,
> -
> &gEfiDriverConfiguration2ProtocolGuid,
> DriverConfiguration2,
> -
> &gEfiDriverDiagnostics2ProtocolGuid,
> DriverDiagnostics2,
> -                              NULL
> -                              );
> -            }
> -          }
> -        }
> -      } else {
> -        if (DriverDiagnostics2 == NULL ||
> FeaturePcdGet(PcdDriverDiagnostics2Disable)) {
> -          if (ComponentName == NULL ||
> FeaturePcdGet(PcdComponentNameDisable)) {
> -            if (ComponentName2 == NULL ||
> FeaturePcdGet(PcdComponentName2Disable)) {
> -              Status = gBS-
> >UninstallMultipleProtocolInterfaces (
> -                              DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid, DriverBinding,
> -
> &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
> -
> &gEfiDriverConfiguration2ProtocolGuid,
> DriverConfiguration2,
> -                              NULL
> -                              );
> -            } else {
> -              Status = gBS-
> >UninstallMultipleProtocolInterfaces (
> -                              DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid, DriverBinding,
> -
> &gEfiComponentName2ProtocolGuid, ComponentName2,
> -
> &gEfiDriverConfiguration2ProtocolGuid,
> DriverConfiguration2,
> -
> &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
> -                              NULL
> -                              );
> -            }
> -          } else {
> -            if (ComponentName2 == NULL ||
> FeaturePcdGet(PcdComponentName2Disable)) {
> -              Status = gBS-
> >UninstallMultipleProtocolInterfaces (
> -                              DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid, DriverBinding,
> -
> &gEfiComponentNameProtocolGuid, ComponentName,
> -
> &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
> -
> &gEfiDriverConfiguration2ProtocolGuid,
> DriverConfiguration2,
> -                              NULL
> -                              );
> -            } else {
> -              Status = gBS-
> >UninstallMultipleProtocolInterfaces (
> -                              DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid, DriverBinding,
> -
> &gEfiComponentNameProtocolGuid, ComponentName,
> -
> &gEfiComponentName2ProtocolGuid, ComponentName2,
> -
> &gEfiDriverConfiguration2ProtocolGuid,
> DriverConfiguration2,
> -
> &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
> -                              NULL
> -                              );
> -            }
> -          }
> -        } else {
> -          if (ComponentName == NULL ||
> FeaturePcdGet(PcdComponentNameDisable)) {
> -            if (ComponentName2 == NULL ||
> FeaturePcdGet(PcdComponentName2Disable)) {
> -              Status = gBS-
> >UninstallMultipleProtocolInterfaces (
> -                              DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid, DriverBinding,
> -
> &gEfiDriverConfiguration2ProtocolGuid,
> DriverConfiguration2,
> -
> &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
> -
> &gEfiDriverDiagnostics2ProtocolGuid,
> DriverDiagnostics2,
> -                              NULL
> -                              );
> -            } else {
> -              Status = gBS-
> >UninstallMultipleProtocolInterfaces (
> -                              DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid, DriverBinding,
> -
> &gEfiComponentName2ProtocolGuid, ComponentName2,
> -
> &gEfiDriverConfiguration2ProtocolGuid,
> DriverConfiguration2,
> -
> &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
> -
> &gEfiDriverDiagnostics2ProtocolGuid,
> DriverDiagnostics2,
> -                              NULL
> -                              );
> -            }
> -          } else {
> -            if (ComponentName2 == NULL ||
> FeaturePcdGet(PcdComponentName2Disable)) {
> -              Status = gBS-
> >UninstallMultipleProtocolInterfaces (
> -                              DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid, DriverBinding,
> -
> &gEfiComponentNameProtocolGuid, ComponentName,
> -
> &gEfiDriverConfiguration2ProtocolGuid,
> DriverConfiguration2,
> -
> &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
> -
> &gEfiDriverDiagnostics2ProtocolGuid,
> DriverDiagnostics2,
> -                              NULL
> -                              );
> -            } else {
> -              Status = gBS-
> >UninstallMultipleProtocolInterfaces (
> -                              DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid, DriverBinding,
> -
> &gEfiComponentNameProtocolGuid, ComponentName,
> -
> &gEfiComponentName2ProtocolGuid, ComponentName2,
> -
> &gEfiDriverConfiguration2ProtocolGuid,
> DriverConfiguration2,
> -
> &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
> -
> &gEfiDriverDiagnostics2ProtocolGuid,
> DriverDiagnostics2,
> -                              NULL
> -                              );
> -            }
> -          }
> -        }
> -      }
> -    } else {
> -      if (DriverDiagnostics == NULL ||
> FeaturePcdGet(PcdDriverDiagnosticsDisable)) {
> -        if (DriverDiagnostics2 == NULL ||
> FeaturePcdGet(PcdDriverDiagnostics2Disable)) {
> -          if (ComponentName == NULL ||
> FeaturePcdGet(PcdComponentNameDisable)) {
> -            if (ComponentName2 == NULL ||
> FeaturePcdGet(PcdComponentName2Disable)) {
> -              Status = gBS-
> >UninstallMultipleProtocolInterfaces (
> -                              DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid, DriverBinding,
> -
> &gEfiDriverConfigurationProtocolGuid,
> DriverConfiguration,
> -
> &gEfiDriverConfiguration2ProtocolGuid,
> DriverConfiguration2,
> -                              NULL
> -                              );
> -            } else {
> -              Status = gBS-
> >UninstallMultipleProtocolInterfaces (
> -                              DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid, DriverBinding,
> -
> &gEfiComponentName2ProtocolGuid, ComponentName2,
> -
> &gEfiDriverConfigurationProtocolGuid,
> DriverConfiguration,
> -
> &gEfiDriverConfiguration2ProtocolGuid,
> DriverConfiguration2,
> -                              NULL
> -                              );
> -            }
> -          } else {
> -            if (ComponentName2 == NULL ||
> FeaturePcdGet(PcdComponentName2Disable)) {
> -              Status = gBS-
> >UninstallMultipleProtocolInterfaces (
> -                              DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid, DriverBinding,
> -
> &gEfiComponentNameProtocolGuid, ComponentName,
> -
> &gEfiDriverConfigurationProtocolGuid,
> DriverConfiguration,
> -
> &gEfiDriverConfiguration2ProtocolGuid,
> DriverConfiguration2,
> -                              NULL
> -                              );
> -            } else {
> -              Status = gBS-
> >UninstallMultipleProtocolInterfaces (
> -                              DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid, DriverBinding,
> -
> &gEfiComponentNameProtocolGuid, ComponentName,
> -
> &gEfiComponentName2ProtocolGuid, ComponentName2,
> -
> &gEfiDriverConfigurationProtocolGuid,
> DriverConfiguration,
> -
> &gEfiDriverConfiguration2ProtocolGuid,
> DriverConfiguration2,
> -                              NULL
> -                              );
> -            }
> -          }
> -        } else {
> -          if (ComponentName == NULL ||
> FeaturePcdGet(PcdComponentNameDisable)) {
> -            if (ComponentName2 == NULL ||
> FeaturePcdGet(PcdComponentName2Disable)) {
> -              Status = gBS-
> >UninstallMultipleProtocolInterfaces (
> -                              DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid, DriverBinding,
> -
> &gEfiDriverConfigurationProtocolGuid,
> DriverConfiguration,
> -
> &gEfiDriverConfiguration2ProtocolGuid,
> DriverConfiguration2,
> -
> &gEfiDriverDiagnostics2ProtocolGuid,
> DriverDiagnostics2,
> -                              NULL
> -                              );
> -            } else {
> -              Status = gBS-
> >UninstallMultipleProtocolInterfaces (
> -                              DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid, DriverBinding,
> -
> &gEfiComponentName2ProtocolGuid, ComponentName2,
> -
> &gEfiDriverConfigurationProtocolGuid,
> DriverConfiguration,
> -
> &gEfiDriverConfiguration2ProtocolGuid,
> DriverConfiguration2,
> -
> &gEfiDriverDiagnostics2ProtocolGuid,
> DriverDiagnostics2,
> -                              NULL
> -                              );
> -            }
> -          } else {
> -            if (ComponentName2 == NULL ||
> FeaturePcdGet(PcdComponentName2Disable)) {
> -              Status = gBS-
> >UninstallMultipleProtocolInterfaces (
> -                              DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid, DriverBinding,
> -
> &gEfiComponentNameProtocolGuid, ComponentName,
> -
> &gEfiDriverConfigurationProtocolGuid,
> DriverConfiguration,
> -
> &gEfiDriverConfiguration2ProtocolGuid,
> DriverConfiguration2,
> -
> &gEfiDriverDiagnostics2ProtocolGuid,
> DriverDiagnostics2,
> -                              NULL
> -                              );
> -            } else {
> -              Status = gBS-
> >UninstallMultipleProtocolInterfaces (
> -                              DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid, DriverBinding,
> -
> &gEfiComponentNameProtocolGuid, ComponentName,
> -
> &gEfiComponentName2ProtocolGuid, ComponentName2,
> -
> &gEfiDriverConfigurationProtocolGuid,
> DriverConfiguration,
> -
> &gEfiDriverConfiguration2ProtocolGuid,
> DriverConfiguration2,
> -
> &gEfiDriverDiagnostics2ProtocolGuid,
> DriverDiagnostics2,
> -                              NULL
> -                              );
> -            }
> -          }
> -        }
> -      } else {
> -        if (DriverDiagnostics2 == NULL ||
> FeaturePcdGet(PcdDriverDiagnostics2Disable)) {
> -          if (ComponentName == NULL ||
> FeaturePcdGet(PcdComponentNameDisable)) {
> -            if (ComponentName2 == NULL ||
> FeaturePcdGet(PcdComponentName2Disable)) {
> -              Status = gBS-
> >UninstallMultipleProtocolInterfaces (
> -                              DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid, DriverBinding,
> -
> &gEfiDriverConfigurationProtocolGuid,
> DriverConfiguration,
> -
> &gEfiDriverConfiguration2ProtocolGuid,
> DriverConfiguration2,
> -
> &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
> -                              NULL
> -                              );
> -            } else {
> -              Status = gBS-
> >UninstallMultipleProtocolInterfaces (
> -                              DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid, DriverBinding,
> -
> &gEfiComponentName2ProtocolGuid, ComponentName2,
> -
> &gEfiDriverConfigurationProtocolGuid,
> DriverConfiguration,
> -
> &gEfiDriverConfiguration2ProtocolGuid,
> DriverConfiguration2,
> -
> &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
> -                              NULL
> -                              );
> -            }
> -          } else {
> -            if (ComponentName2 == NULL ||
> FeaturePcdGet(PcdComponentName2Disable)) {
> -              Status = gBS-
> >UninstallMultipleProtocolInterfaces (
> -                              DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid, DriverBinding,
> -
> &gEfiComponentNameProtocolGuid, ComponentName,
> -
> &gEfiDriverConfigurationProtocolGuid,
> DriverConfiguration,
> -
> &gEfiDriverConfiguration2ProtocolGuid,
> DriverConfiguration2,
> -
> &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
> -                              NULL
> -                              );
> -            } else {
> -              Status = gBS-
> >UninstallMultipleProtocolInterfaces (
> -                              DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid, DriverBinding,
> -
> &gEfiComponentNameProtocolGuid, ComponentName,
> -
> &gEfiComponentName2ProtocolGuid, ComponentName2,
> -
> &gEfiDriverConfigurationProtocolGuid,
> DriverConfiguration,
> -
> &gEfiDriverConfiguration2ProtocolGuid,
> DriverConfiguration2,
> -
> &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
> -                              NULL
> -                              );
> -            }
> -          }
> -        } else {
> -          if (ComponentName == NULL ||
> FeaturePcdGet(PcdComponentNameDisable)) {
> -            if (ComponentName2 == NULL ||
> FeaturePcdGet(PcdComponentName2Disable)) {
> -              Status = gBS-
> >UninstallMultipleProtocolInterfaces (
> -                              DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid, DriverBinding,
> -
> &gEfiDriverConfigurationProtocolGuid,
> DriverConfiguration,
> -
> &gEfiDriverConfiguration2ProtocolGuid,
> DriverConfiguration2,
> -
> &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
> -
> &gEfiDriverDiagnostics2ProtocolGuid,
> DriverDiagnostics2,
> -                              NULL
> -                              );
> -            } else {
> -              Status = gBS-
> >UninstallMultipleProtocolInterfaces (
> -                              DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid, DriverBinding,
> -
> &gEfiComponentName2ProtocolGuid, ComponentName2,
> -
> &gEfiDriverConfigurationProtocolGuid,
> DriverConfiguration,
> -
> &gEfiDriverConfiguration2ProtocolGuid,
> DriverConfiguration2,
> -
> &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
> -
> &gEfiDriverDiagnostics2ProtocolGuid,
> DriverDiagnostics2,
> -                              NULL
> -                              );
> -            }
> -          } else {
> -            if (ComponentName2 == NULL ||
> FeaturePcdGet(PcdComponentName2Disable)) {
> -              Status = gBS-
> >UninstallMultipleProtocolInterfaces (
> -                              DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid, DriverBinding,
> -
> &gEfiComponentNameProtocolGuid, ComponentName,
> -
> &gEfiDriverConfigurationProtocolGuid,
> DriverConfiguration,
> -
> &gEfiDriverConfiguration2ProtocolGuid,
> DriverConfiguration2,
> -
> &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
> -
> &gEfiDriverDiagnostics2ProtocolGuid,
> DriverDiagnostics2,
> -                              NULL
> -                              );
> -            } else {
> -              Status = gBS-
> >UninstallMultipleProtocolInterfaces (
> -                              DriverBinding-
> >DriverBindingHandle,
> -
> &gEfiDriverBindingProtocolGuid, DriverBinding,
> -
> &gEfiComponentNameProtocolGuid, ComponentName,
> -
> &gEfiComponentName2ProtocolGuid, ComponentName2,
> -
> &gEfiDriverConfigurationProtocolGuid,
> DriverConfiguration,
> -
> &gEfiDriverConfiguration2ProtocolGuid,
> DriverConfiguration2,
> -
> &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
> -
> &gEfiDriverDiagnostics2ProtocolGuid,
> DriverDiagnostics2,
> -                              NULL
> -                              );
> -            }
> -          }
> -        }
> -      }
> -    }
> -  }
> -
> -  //
> -  // ASSERT if the call to
> UninstallMultipleProtocolInterfaces() failed
> -  //
> -  ASSERT_EFI_ERROR (Status);
> -
> -  return Status;
> +  return EfiLibProcessAllDriverProtocols2 (
> +           NULL,
> +           DriverBinding,
> +           NULL,
> +           FALSE,
> +           ComponentName,
> +           ComponentName2,
> +           DriverConfiguration,
> +           DriverConfiguration2,
> +           DriverDiagnostics,
> +           DriverDiagnostics2
> +           );
>  }
> --
> 2.7.4
> 
> -------------------------------------------------------
> ----------------------------
> This email message is for the sole use of the intended
> recipient(s) and may contain
> confidential information.  Any unauthorized review,
> use, disclosure or distribution
> is prohibited.  If you are not the intended recipient,
> please contact the sender by
> reply email and destroy all copies of the original
> message.
> -------------------------------------------------------
> ----------------------------
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to