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