From: Ashish Singhal <ashishsingha@nvidia.com>
To: "Gao, Liming" <liming.gao@intel.com>,
"edk2-devel@lists.01.org" <edk2-devel@lists.01.org>
Subject: Re: [PATCH v2 3/4] MdePkg/UefiLib: Simplify protocol un/installation abstraction
Date: Mon, 7 Jan 2019 03:00:01 +0000 [thread overview]
Message-ID: <BYAPR12MB274387FD35DC31FCEE4A57A1BA890@BYAPR12MB2743.namprd12.prod.outlook.com> (raw)
In-Reply-To: <4A89E2EF3DFEDB4C8BFDE51014F606A14E3ACA33@SHSMSX152.ccr.corp.intel.com>
Hello Liming,
I am not touching APIs for Install and am OK keeping Uninstall API same as what I had in patch 1/4. I thought it would be easier for the developer to keep the interface similar to install but I do not have a strong preference either way. If you are OK with the Uninstall API as in patch 1/4, I am OK submitting a new patch where I can squash 1/4 and 3/4 together into a single commit and keep API as in 1/4.
Thanks
Ashish
-----Original Message-----
From: Gao, Liming <liming.gao@intel.com>
Sent: Sunday, January 6, 2019 5:33 PM
To: Ashish Singhal <ashishsingha@nvidia.com>; edk2-devel@lists.01.org
Subject: RE: [edk2] [PATCH v2 3/4] MdePkg/UefiLib: Simplify protocol un/installation abstraction
Ashish:
UefiLib implementation simplification doesn't require to change library APIs. UninstallApi() interfaces are not required to be updated. Below Install API can still be kept. I don't think we need to keep the same interfaces for Install and Uninstall APIs.
EfiLibUninstallAllDriverProtocols2 (
IN EFI_DRIVER_BINDING_PROTOCOL *DriverBinding,
IN CONST EFI_COMPONENT_NAME_PROTOCOL *ComponentName, OPTIONAL
IN CONST EFI_COMPONENT_NAME2_PROTOCOL *ComponentName2, OPTIONAL
IN CONST EFI_DRIVER_CONFIGURATION_PROTOCOL *DriverConfiguration, OPTIONAL
IN CONST EFI_DRIVER_CONFIGURATION2_PROTOCOL *DriverConfiguration2, OPTIONAL
IN CONST EFI_DRIVER_DIAGNOSTICS_PROTOCOL *DriverDiagnostics, OPTIONAL
IN CONST EFI_DRIVER_DIAGNOSTICS2_PROTOCOL *DriverDiagnostics2 OPTIONAL
);
Thanks
Liming
>-----Original Message-----
>From: edk2-devel [mailto:edk2-devel-bounces@lists.01.org] On Behalf Of
>Ashish Singhal
>Sent: Saturday, January 05, 2019 7:07 AM
>To: edk2-devel@lists.01.org
>Cc: Ashish Singhal <ashishsingha@nvidia.com>
>Subject: [edk2] [PATCH v2 3/4] MdePkg/UefiLib: Simplify protocol
>un/installation abstraction
>
>Add a helper function 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 <ashishsingha@nvidia.com>
>---
> MdePkg/Include/Library/UefiLib.h | 26 +-
> MdePkg/Library/UefiLib/UefiDriverModel.c | 1980 ++++--------------------------
> 2 files changed, 270 insertions(+), 1736 deletions(-)
>
>diff --git a/MdePkg/Include/Library/UefiLib.h
>b/MdePkg/Include/Library/UefiLib.h
>index 08222d4..fbc9739 100644
>--- a/MdePkg/Include/Library/UefiLib.h
>+++ b/MdePkg/Include/Library/UefiLib.h
>@@ -1323,7 +1323,10 @@ EfiLibInstallDriverBinding (
> If DriverBinding is NULL, then ASSERT().
> If DriverBinding can not be uninstalled, then ASSERT().
>
>+ @param ImageHandle The image handle of the driver.
>+ @param SystemTable The EFI System Table that was passed to the
>driver's entry point.
> @param DriverBinding A Driver Binding Protocol instance that this driver
>produced.
>+ @param DriverBindingHandle The handle that DriverBinding is to be
>installed onto.
>
> @retval EFI_SUCCESS The protocol uninstallation successfully
>completed.
> @retval Others Status from gBS-
>>UninstallMultipleProtocolInterfaces().
>@@ -1332,7 +1335,10 @@ EfiLibInstallDriverBinding (
> EFI_STATUS
> EFIAPI
> EfiLibUninstallDriverBinding (
>- IN EFI_DRIVER_BINDING_PROTOCOL *DriverBinding
>+ IN CONST EFI_HANDLE ImageHandle,
>+ IN CONST EFI_SYSTEM_TABLE *SystemTable,
>+ IN EFI_DRIVER_BINDING_PROTOCOL *DriverBinding,
>+ IN EFI_HANDLE DriverBindingHandle
> );
>
>
>@@ -1382,7 +1388,10 @@ EfiLibInstallAllDriverProtocols (
> If DriverBinding is NULL, then ASSERT().
> If the uninstallation fails, then ASSERT().
>
>+ @param ImageHandle The image handle of the driver.
>+ @param SystemTable The EFI System Table that was passed to the
>driver's entry point.
> @param DriverBinding A Driver Binding Protocol instance that this driver
>produced.
>+ @param DriverBindingHandle The handle that DriverBinding is to be
>installed onto.
> @param ComponentName A Component Name Protocol instance that
>this driver produced.
> @param DriverConfiguration A Driver Configuration Protocol instance that
>this driver produced.
> @param DriverDiagnostics A Driver Diagnostics Protocol instance that this
>driver produced.
>@@ -1394,7 +1403,10 @@ EfiLibInstallAllDriverProtocols (
> EFI_STATUS
> EFIAPI
> EfiLibUninstallAllDriverProtocols (
>+ IN CONST EFI_HANDLE ImageHandle,
>+ IN CONST EFI_SYSTEM_TABLE *SystemTable,
> IN EFI_DRIVER_BINDING_PROTOCOL *DriverBinding,
>+ IN EFI_HANDLE DriverBindingHandle,
> IN CONST EFI_COMPONENT_NAME_PROTOCOL *ComponentName,
>OPTIONAL
> IN CONST EFI_DRIVER_CONFIGURATION_PROTOCOL *DriverConfiguration,
>OPTIONAL
> IN CONST EFI_DRIVER_DIAGNOSTICS_PROTOCOL *DriverDiagnostics
>OPTIONAL
>@@ -1442,7 +1454,10 @@ EfiLibInstallDriverBindingComponentName2 (
> If DriverBinding is NULL, then ASSERT().
> If the uninstallation fails, then ASSERT().
>
>+ @param ImageHandle The image handle of the driver.
>+ @param SystemTable The EFI System Table that was passed to the
>driver's entry point.
> @param DriverBinding A Driver Binding Protocol instance that this driver
>produced.
>+ @param DriverBindingHandle The handle that DriverBinding is to be
>installed onto.
> @param ComponentName A Component Name Protocol instance that
>this driver produced.
> @param ComponentName2 A Component Name 2 Protocol instance that
>this driver produced.
>
>@@ -1453,7 +1468,10 @@ EfiLibInstallDriverBindingComponentName2 (
> EFI_STATUS
> EFIAPI
> EfiLibUninstallDriverBindingComponentName2 (
>+ IN CONST EFI_HANDLE ImageHandle,
>+ IN CONST EFI_SYSTEM_TABLE *SystemTable,
> IN EFI_DRIVER_BINDING_PROTOCOL *DriverBinding,
>+ IN EFI_HANDLE DriverBindingHandle,
> IN CONST EFI_COMPONENT_NAME_PROTOCOL *ComponentName,
>OPTIONAL
> IN CONST EFI_COMPONENT_NAME2_PROTOCOL *ComponentName2
>OPTIONAL
> );
>@@ -1512,7 +1530,10 @@ EfiLibInstallAllDriverProtocols2 (
> If the installation fails, then ASSERT().
>
>
>+ @param ImageHandle The image handle of the driver.
>+ @param SystemTable The EFI System Table that was passed to the
>driver's entry point.
> @param DriverBinding A Driver Binding Protocol instance that this driver
>produced.
>+ @param DriverBindingHandle The handle that DriverBinding is to be
>installed onto.
> @param ComponentName A Component Name Protocol instance that
>this driver produced.
> @param ComponentName2 A Component Name 2 Protocol instance
>that this driver produced.
> @param DriverConfiguration A Driver Configuration Protocol instance that
>this driver produced.
>@@ -1527,7 +1548,10 @@ EfiLibInstallAllDriverProtocols2 (
> EFI_STATUS
> EFIAPI
> EfiLibUninstallAllDriverProtocols2 (
>+ IN CONST EFI_HANDLE ImageHandle,
>+ IN CONST EFI_SYSTEM_TABLE *SystemTable,
> IN EFI_DRIVER_BINDING_PROTOCOL *DriverBinding,
>+ IN EFI_HANDLE DriverBindingHandle,
> IN CONST EFI_COMPONENT_NAME_PROTOCOL *ComponentName,
>OPTIONAL
> IN CONST EFI_COMPONENT_NAME2_PROTOCOL *ComponentName2,
>OPTIONAL
> IN CONST EFI_DRIVER_CONFIGURATION_PROTOCOL *DriverConfiguration,
>OPTIONAL
>diff --git a/MdePkg/Library/UefiLib/UefiDriverModel.c
>b/MdePkg/Library/UefiLib/UefiDriverModel.c
>index 262d8bc..600a2be 100644
>--- a/MdePkg/Library/UefiLib/UefiDriverModel.c
>+++ b/MdePkg/Library/UefiLib/UefiDriverModel.c
>@@ -17,6 +17,130 @@
>
> #include "UefiLibInternal.h"
>
>+
>+#define MAX_SUPPORTED_PROTOCOLS 7
>+typedef struct {
>+ EFI_GUID *Guid;
>+ VOID *Interface;
>+} EFI_PROCESS_PROTOCOL;
>+
>+
>+static
>+EFI_STATUS
>+EFIAPI
>+EfiLibProcessProtocol (
>+ 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++;
>+ }
>+
>+ if (Install) {
>+ //
>+ // Update the ImageHandle and DriverBindingHandle fields of the Driver
>Binding Protocol
>+ //
>+ DriverBinding->ImageHandle = ImageHandle;
>+ DriverBinding->DriverBindingHandle = DriverBindingHandle;
>+
>+ Status = 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 {
>+ Status = 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
>+ );
>+ }
>+
>+ //
>+ // 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.
>
>@@ -48,27 +172,18 @@ EfiLibInstallDriverBinding (
> IN EFI_HANDLE DriverBindingHandle
> )
> {
>- EFI_STATUS Status;
>-
>- ASSERT (DriverBinding != NULL);
>-
>- //
>- // Update the ImageHandle and DriverBindingHandle fields of the Driver
>Binding Protocol
>- //
>- DriverBinding->ImageHandle = ImageHandle;
>- DriverBinding->DriverBindingHandle = DriverBindingHandle;
>-
>- Status = gBS->InstallMultipleProtocolInterfaces (
>- &DriverBinding->DriverBindingHandle,
>- &gEfiDriverBindingProtocolGuid, DriverBinding,
>- NULL
>- );
>- //
>- // ASSERT if the call to InstallMultipleProtocolInterfaces() failed
>- //
>- ASSERT_EFI_ERROR (Status);
>-
>- return Status;
>+ return EfiLibProcessProtocol (
>+ ImageHandle,
>+ DriverBinding,
>+ DriverBindingHandle,
>+ TRUE,
>+ NULL,
>+ NULL,
>+ NULL,
>+ NULL,
>+ NULL,
>+ NULL
>+ );
> }
>
>
>@@ -79,7 +194,10 @@ EfiLibInstallDriverBinding (
> If DriverBinding is NULL, then ASSERT().
> If DriverBinding can not be uninstalled, then ASSERT().
>
>+ @param ImageHandle The image handle of the driver.
>+ @param SystemTable The EFI System Table that was passed to the
>driver's entry point.
> @param DriverBinding A Driver Binding Protocol instance that this driver
>produced.
>+ @param DriverBindingHandle The handle that DriverBinding is to be
>installed onto.
>
> @retval EFI_SUCCESS The protocol uninstallation successfully
>completed.
> @retval Others Status from gBS-
>>UninstallMultipleProtocolInterfaces().
>@@ -88,24 +206,24 @@ EfiLibInstallDriverBinding (
> EFI_STATUS
> EFIAPI
> EfiLibUninstallDriverBinding (
>- IN EFI_DRIVER_BINDING_PROTOCOL *DriverBinding
>+ IN CONST EFI_HANDLE ImageHandle,
>+ IN CONST EFI_SYSTEM_TABLE *SystemTable,
>+ IN EFI_DRIVER_BINDING_PROTOCOL *DriverBinding,
>+ IN EFI_HANDLE DriverBindingHandle
> )
> {
>- EFI_STATUS Status;
>-
>- ASSERT (DriverBinding != NULL);
>-
>- Status = gBS->UninstallMultipleProtocolInterfaces (
>- DriverBinding->DriverBindingHandle,
>- &gEfiDriverBindingProtocolGuid, DriverBinding,
>- NULL
>- );
>- //
>- // ASSERT if the call to UninstallMultipleProtocolInterfaces() failed
>- //
>- ASSERT_EFI_ERROR (Status);
>-
>- return Status;
>+ return EfiLibProcessProtocol (
>+ ImageHandle,
>+ DriverBinding,
>+ DriverBindingHandle,
>+ FALSE,
>+ NULL,
>+ NULL,
>+ NULL,
>+ NULL,
>+ NULL,
>+ NULL
>+ );
> }
>
>
>@@ -148,96 +266,18 @@ 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 EfiLibProcessProtocol (
>+ ImageHandle,
>+ DriverBinding,
>+ DriverBindingHandle,
>+ TRUE,
>+ ComponentName,
>+ NULL,
>+ DriverConfiguration,
>+ NULL,
>+ DriverDiagnostics,
>+ NULL
>+ );
> }
>
>
>@@ -249,7 +289,10 @@ EfiLibInstallAllDriverProtocols (
> If DriverBinding is NULL, then ASSERT().
> If the uninstallation fails, then ASSERT().
>
>+ @param ImageHandle The image handle of the driver.
>+ @param SystemTable The EFI System Table that was passed to the
>driver's entry point.
> @param DriverBinding A Driver Binding Protocol instance that this driver
>produced.
>+ @param DriverBindingHandle The handle that DriverBinding is to be
>installed onto.
> @param ComponentName A Component Name Protocol instance that
>this driver produced.
> @param DriverConfiguration A Driver Configuration Protocol instance that
>this driver produced.
> @param DriverDiagnostics A Driver Diagnostics Protocol instance that this
>driver produced.
>@@ -261,96 +304,27 @@ EfiLibInstallAllDriverProtocols (
> EFI_STATUS
> EFIAPI
> EfiLibUninstallAllDriverProtocols (
>+ IN CONST EFI_HANDLE ImageHandle,
>+ IN CONST EFI_SYSTEM_TABLE *SystemTable,
> IN EFI_DRIVER_BINDING_PROTOCOL *DriverBinding,
>+ IN EFI_HANDLE DriverBindingHandle,
> IN CONST EFI_COMPONENT_NAME_PROTOCOL *ComponentName,
>OPTIONAL
> IN CONST EFI_DRIVER_CONFIGURATION_PROTOCOL *DriverConfiguration,
>OPTIONAL
> 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 EfiLibProcessProtocol (
>+ ImageHandle,
>+ DriverBinding,
>+ DriverBindingHandle,
>+ FALSE,
>+ ComponentName,
>+ NULL,
>+ DriverConfiguration,
>+ NULL,
>+ DriverDiagnostics,
>+ NULL
>+ );
> }
>
>
>@@ -389,56 +363,18 @@ 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 EfiLibProcessProtocol (
>+ ImageHandle,
>+ DriverBinding,
>+ DriverBindingHandle,
>+ TRUE,
>+ ComponentName,
>+ ComponentName2,
>+ NULL,
>+ NULL,
>+ NULL,
>+ NULL
>+ );
> }
>
>
>@@ -449,7 +385,10 @@ EfiLibInstallDriverBindingComponentName2 (
> If DriverBinding is NULL, then ASSERT().
> If the uninstallation fails, then ASSERT().
>
>+ @param ImageHandle The image handle of the driver.
>+ @param SystemTable The EFI System Table that was passed to the
>driver's entry point.
> @param DriverBinding A Driver Binding Protocol instance that this driver
>produced.
>+ @param DriverBindingHandle The handle that DriverBinding is to be
>installed onto.
> @param ComponentName A Component Name Protocol instance that
>this driver produced.
> @param ComponentName2 A Component Name 2 Protocol instance that
>this driver produced.
>
>@@ -460,55 +399,26 @@ EfiLibInstallDriverBindingComponentName2 (
> EFI_STATUS
> EFIAPI
> EfiLibUninstallDriverBindingComponentName2 (
>+ IN CONST EFI_HANDLE ImageHandle,
>+ IN CONST EFI_SYSTEM_TABLE *SystemTable,
> IN EFI_DRIVER_BINDING_PROTOCOL *DriverBinding,
>+ IN EFI_HANDLE DriverBindingHandle,
> IN CONST EFI_COMPONENT_NAME_PROTOCOL *ComponentName,
>OPTIONAL
> 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 EfiLibProcessProtocol (
>+ ImageHandle,
>+ DriverBinding,
>+ DriverBindingHandle,
>+ FALSE,
>+ ComponentName,
>+ ComponentName2,
>+ NULL,
>+ NULL,
>+ NULL,
>+ NULL
>+ );
> }
>
>
>@@ -557,724 +467,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 EfiLibProcessProtocol (
>+ ImageHandle,
>+ DriverBinding,
>+ DriverBindingHandle,
>+ TRUE,
>+ ComponentName,
>+ ComponentName2,
>+ DriverConfiguration,
>+ DriverConfiguration2,
>+ DriverDiagnostics,
>+ DriverDiagnostics2
>+ );
> }
>
>
>@@ -1287,7 +491,10 @@ EfiLibInstallAllDriverProtocols2 (
> If the installation fails, then ASSERT().
>
>
>+ @param ImageHandle The image handle of the driver.
>+ @param SystemTable The EFI System Table that was passed to the
>driver's entry point.
> @param DriverBinding A Driver Binding Protocol instance that this driver
>produced.
>+ @param DriverBindingHandle The handle that DriverBinding is to be
>installed onto.
> @param ComponentName A Component Name Protocol instance that
>this driver produced.
> @param ComponentName2 A Component Name 2 Protocol instance
>that this driver produced.
> @param DriverConfiguration A Driver Configuration Protocol instance that
>this driver produced.
>@@ -1302,7 +509,10 @@ EfiLibInstallAllDriverProtocols2 (
> EFI_STATUS
> EFIAPI
> EfiLibUninstallAllDriverProtocols2 (
>+ IN CONST EFI_HANDLE ImageHandle,
>+ IN CONST EFI_SYSTEM_TABLE *SystemTable,
> IN EFI_DRIVER_BINDING_PROTOCOL *DriverBinding,
>+ IN EFI_HANDLE DriverBindingHandle,
> IN CONST EFI_COMPONENT_NAME_PROTOCOL *ComponentName,
>OPTIONAL
> IN CONST EFI_COMPONENT_NAME2_PROTOCOL *ComponentName2,
>OPTIONAL
> IN CONST EFI_DRIVER_CONFIGURATION_PROTOCOL *DriverConfiguration,
>OPTIONAL
>@@ -1311,716 +521,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 EfiLibProcessProtocol (
>+ ImageHandle,
>+ DriverBinding,
>+ DriverBindingHandle,
>+ FALSE,
>+ ComponentName,
>+ ComponentName2,
>+ DriverConfiguration,
>+ DriverConfiguration2,
>+ DriverDiagnostics,
>+ DriverDiagnostics2
>+ );
> }
>--
>2.7.4
>
>_______________________________________________
>edk2-devel mailing list
>edk2-devel@lists.01.org
>https://lists.01.org/mailman/listinfo/edk2-devel
-----------------------------------------------------------------------------------
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.
-----------------------------------------------------------------------------------
next prev parent reply other threads:[~2019-01-07 3:00 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-01-04 23:06 [PATCH v2 0/4] Provide UEFILib functions for protocol uninstallation Ashish Singhal
2019-01-04 23:06 ` [PATCH v2 1/4] MdePkg/UefiLib: Abstract driver model " Ashish Singhal
2019-01-04 23:06 ` [PATCH v2 2/4] NetworkPkg/IScsiDxe: Use UEFILib APIs to uninstall protocols Ashish Singhal
2019-01-07 1:21 ` Fu, Siyuan
2019-01-04 23:06 ` [PATCH v2 3/4] MdePkg/UefiLib: Simplify protocol un/installation abstraction Ashish Singhal
2019-01-07 0:32 ` Gao, Liming
2019-01-07 3:00 ` Ashish Singhal [this message]
2019-01-04 23:06 ` [PATCH v2 4/4] NetworkPkg/IScsiDxe: Update UEFILib Usage Ashish Singhal
2019-01-07 1:21 ` Fu, Siyuan
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-list from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=BYAPR12MB274387FD35DC31FCEE4A57A1BA890@BYAPR12MB2743.namprd12.prod.outlook.com \
--to=devel@edk2.groups.io \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox