IN CHAR8 **Argv\r
);\r
\r
+/**\r
+ Connect all DXE drivers\r
+\r
+ @retval EFI_SUCCESS All drivers have been connected\r
+ @retval EFI_NOT_FOUND No handles match the search.\r
+ @retval EFI_OUT_OF_RESOURCES There is not resource pool memory to store the matching results.\r
+\r
+**/\r
+STATIC\r
+EFI_STATUS\r
+ConnectAllDrivers (\r
+ VOID\r
+ )\r
+{\r
+ UINTN HandleCount, Index;\r
+ EFI_HANDLE *HandleBuffer;\r
+ EFI_STATUS Status;\r
+\r
+ do {\r
+ // Locate all the driver handles\r
+ Status = gBS->LocateHandleBuffer (\r
+ AllHandles,\r
+ NULL,\r
+ NULL,\r
+ &HandleCount,\r
+ &HandleBuffer\r
+ );\r
+ if (EFI_ERROR (Status)) {\r
+ break;\r
+ }\r
+\r
+ // Connect every handles\r
+ for (Index = 0; Index < HandleCount; Index++) {\r
+ gBS->ConnectController (HandleBuffer[Index], NULL, NULL, TRUE);\r
+ }\r
+\r
+ if (HandleBuffer != NULL) {\r
+ FreePool (HandleBuffer);\r
+ }\r
+\r
+ // Check if new handles have been created after the start of the previous handles\r
+ Status = gDS->Dispatch ();\r
+ } while (!EFI_ERROR(Status));\r
+\r
+ return EFI_SUCCESS;\r
+}\r
+\r
/**\r
Simple arm disassembler via a library\r
\r
EFI_DEVICE_PATH_PROTOCOL* DevicePathProtocol;\r
EFI_DEVICE_PATH_TO_TEXT_PROTOCOL* DevicePathToTextProtocol;\r
\r
- BdsConnectAllDrivers();\r
+ ConnectAllDrivers();\r
\r
Status = gBS->LocateProtocol(&gEfiDevicePathToTextProtocolGuid, NULL, (VOID **)&DevicePathToTextProtocol);\r
if (EFI_ERROR (Status)) {\r