/** @file * * Copyright (c) 2011-2015, ARM Limited. All rights reserved. * * SPDX-License-Identifier: BSD-2-Clause-Patent * **/ #include "BdsInternal.h" /** Connect all DXE drivers @retval EFI_SUCCESS All drivers have been connected @retval EFI_NOT_FOUND No handles match the search. @retval EFI_OUT_OF_RESOURCES There is not resource pool memory to store the matching results. **/ EFI_STATUS BdsConnectAllDrivers ( VOID ) { UINTN HandleCount, Index; EFI_HANDLE *HandleBuffer; EFI_STATUS Status; do { // Locate all the driver handles Status = gBS->LocateHandleBuffer ( AllHandles, NULL, NULL, &HandleCount, &HandleBuffer ); if (EFI_ERROR (Status)) { break; } // Connect every handles for (Index = 0; Index < HandleCount; Index++) { gBS->ConnectController (HandleBuffer[Index], NULL, NULL, TRUE); } if (HandleBuffer != NULL) { FreePool (HandleBuffer); } // Check if new handles have been created after the start of the previous handles Status = gDS->Dispatch (); } while (!EFI_ERROR(Status)); return EFI_SUCCESS; }