|
@@ -300,24 +300,24 @@ TryRemovableDevice (
|
|
|
return Status;
|
|
|
}
|
|
|
|
|
|
-STATIC
|
|
|
+STATIC
|
|
|
EFI_STATUS
|
|
|
-BdsConnectAndUpdateDevicePath (
|
|
|
- IN OUT EFI_DEVICE_PATH_PROTOCOL **DevicePath,
|
|
|
- OUT EFI_HANDLE *Handle,
|
|
|
- OUT EFI_DEVICE_PATH_PROTOCOL **RemainingDevicePath
|
|
|
+BdsConnectAndUpdateDevicePath (
|
|
|
+ IN OUT EFI_DEVICE_PATH_PROTOCOL **DevicePath,
|
|
|
+ OUT EFI_HANDLE *Handle,
|
|
|
+ OUT EFI_DEVICE_PATH_PROTOCOL **RemainingDevicePath
|
|
|
)
|
|
|
{
|
|
|
EFI_DEVICE_PATH* Remaining;
|
|
|
EFI_DEVICE_PATH* NewDevicePath;
|
|
|
EFI_STATUS Status;
|
|
|
|
|
|
- if ((DevicePath == NULL) || (*DevicePath == NULL) || (Handle == NULL)) {
|
|
|
+ if ((DevicePath == NULL) || (*DevicePath == NULL) || (Handle == NULL)) {
|
|
|
return EFI_INVALID_PARAMETER;
|
|
|
}
|
|
|
|
|
|
do {
|
|
|
- Remaining = *DevicePath;
|
|
|
+ Remaining = *DevicePath;
|
|
|
// The LocateDevicePath() function locates all devices on DevicePath that support Protocol and returns
|
|
|
// the handle to the device that is closest to DevicePath. On output, the device path pointer is modified
|
|
|
// to point to the remaining part of the device path
|
|
@@ -337,7 +337,7 @@ BdsConnectAndUpdateDevicePath (
|
|
|
if (!EFI_ERROR (Status)) {
|
|
|
// Now, we have got the whole Device Path connected, call again ConnectController to ensure all the supported Driver
|
|
|
// Binding Protocol are connected (such as DiskIo and SimpleFileSystem)
|
|
|
- Remaining = *DevicePath;
|
|
|
+ Remaining = *DevicePath;
|
|
|
Status = gBS->LocateDevicePath (&gEfiDevicePathProtocolGuid, &Remaining, Handle);
|
|
|
if (!EFI_ERROR (Status)) {
|
|
|
Status = gBS->ConnectController (*Handle, NULL, Remaining, FALSE);
|
|
@@ -360,11 +360,11 @@ BdsConnectAndUpdateDevicePath (
|
|
|
//TODO: Should we just return success and leave the caller decide if it is the expected RemainingPath
|
|
|
Status = EFI_SUCCESS;
|
|
|
} else {
|
|
|
- Status = TryRemovableDevice (*DevicePath, Handle, &NewDevicePath);
|
|
|
+ Status = TryRemovableDevice (*DevicePath, Handle, &NewDevicePath);
|
|
|
if (!EFI_ERROR (Status)) {
|
|
|
- Status = BdsConnectAndUpdateDevicePath (&NewDevicePath, Handle, RemainingDevicePath);
|
|
|
- *DevicePath = NewDevicePath;
|
|
|
- return Status;
|
|
|
+ Status = BdsConnectAndUpdateDevicePath (&NewDevicePath, Handle, RemainingDevicePath);
|
|
|
+ *DevicePath = NewDevicePath;
|
|
|
+ return Status;
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -375,28 +375,28 @@ BdsConnectAndUpdateDevicePath (
|
|
|
return Status;
|
|
|
}
|
|
|
|
|
|
-/**
|
|
|
- Connect a Device Path and return the handle of the driver that support this DevicePath
|
|
|
-
|
|
|
- @param DevicePath Device Path of the File to connect
|
|
|
- @param Handle Handle of the driver that support this DevicePath
|
|
|
- @param RemainingDevicePath Remaining DevicePath nodes that do not match the driver DevicePath
|
|
|
-
|
|
|
- @retval EFI_SUCCESS A driver that matches the Device Path has been found
|
|
|
- @retval EFI_NOT_FOUND No handles match the search.
|
|
|
- @retval EFI_INVALID_PARAMETER DevicePath or Handle is NULL
|
|
|
-
|
|
|
+/**
|
|
|
+ Connect a Device Path and return the handle of the driver that support this DevicePath
|
|
|
+
|
|
|
+ @param DevicePath Device Path of the File to connect
|
|
|
+ @param Handle Handle of the driver that support this DevicePath
|
|
|
+ @param RemainingDevicePath Remaining DevicePath nodes that do not match the driver DevicePath
|
|
|
+
|
|
|
+ @retval EFI_SUCCESS A driver that matches the Device Path has been found
|
|
|
+ @retval EFI_NOT_FOUND No handles match the search.
|
|
|
+ @retval EFI_INVALID_PARAMETER DevicePath or Handle is NULL
|
|
|
+
|
|
|
**/
|
|
|
-EFI_STATUS
|
|
|
-BdsConnectDevicePath (
|
|
|
- IN EFI_DEVICE_PATH_PROTOCOL* DevicePath,
|
|
|
- OUT EFI_HANDLE *Handle,
|
|
|
- OUT EFI_DEVICE_PATH_PROTOCOL **RemainingDevicePath
|
|
|
- )
|
|
|
-{
|
|
|
- return BdsConnectAndUpdateDevicePath (&DevicePath, Handle, RemainingDevicePath);
|
|
|
-}
|
|
|
-
|
|
|
+EFI_STATUS
|
|
|
+BdsConnectDevicePath (
|
|
|
+ IN EFI_DEVICE_PATH_PROTOCOL* DevicePath,
|
|
|
+ OUT EFI_HANDLE *Handle,
|
|
|
+ OUT EFI_DEVICE_PATH_PROTOCOL **RemainingDevicePath
|
|
|
+ )
|
|
|
+{
|
|
|
+ return BdsConnectAndUpdateDevicePath (&DevicePath, Handle, RemainingDevicePath);
|
|
|
+}
|
|
|
+
|
|
|
BOOLEAN
|
|
|
BdsFileSystemSupport (
|
|
|
IN EFI_DEVICE_PATH *DevicePath,
|
|
@@ -926,8 +926,8 @@ BDS_FILE_LOADER FileLoaders[] = {
|
|
|
};
|
|
|
|
|
|
EFI_STATUS
|
|
|
-BdsLoadImageAndUpdateDevicePath (
|
|
|
- IN OUT EFI_DEVICE_PATH **DevicePath,
|
|
|
+BdsLoadImageAndUpdateDevicePath (
|
|
|
+ IN OUT EFI_DEVICE_PATH **DevicePath,
|
|
|
IN EFI_ALLOCATE_TYPE Type,
|
|
|
IN OUT EFI_PHYSICAL_ADDRESS* Image,
|
|
|
OUT UINTN *FileSize
|
|
@@ -938,15 +938,15 @@ BdsLoadImageAndUpdateDevicePath (
|
|
|
EFI_DEVICE_PATH *RemainingDevicePath;
|
|
|
BDS_FILE_LOADER* FileLoader;
|
|
|
|
|
|
- Status = BdsConnectAndUpdateDevicePath (DevicePath, &Handle, &RemainingDevicePath);
|
|
|
+ Status = BdsConnectAndUpdateDevicePath (DevicePath, &Handle, &RemainingDevicePath);
|
|
|
if (EFI_ERROR (Status)) {
|
|
|
return Status;
|
|
|
}
|
|
|
|
|
|
FileLoader = FileLoaders;
|
|
|
while (FileLoader->Support != NULL) {
|
|
|
- if (FileLoader->Support (*DevicePath, Handle, RemainingDevicePath)) {
|
|
|
- return FileLoader->LoadImage (*DevicePath, Handle, RemainingDevicePath, Type, Image, FileSize);
|
|
|
+ if (FileLoader->Support (*DevicePath, Handle, RemainingDevicePath)) {
|
|
|
+ return FileLoader->LoadImage (*DevicePath, Handle, RemainingDevicePath, Type, Image, FileSize);
|
|
|
}
|
|
|
FileLoader++;
|
|
|
}
|
|
@@ -955,16 +955,16 @@ BdsLoadImageAndUpdateDevicePath (
|
|
|
}
|
|
|
|
|
|
EFI_STATUS
|
|
|
-BdsLoadImage (
|
|
|
- IN EFI_DEVICE_PATH *DevicePath,
|
|
|
- IN EFI_ALLOCATE_TYPE Type,
|
|
|
- IN OUT EFI_PHYSICAL_ADDRESS* Image,
|
|
|
- OUT UINTN *FileSize
|
|
|
- )
|
|
|
-{
|
|
|
- return BdsLoadImageAndUpdateDevicePath (&DevicePath, Type, Image, FileSize);
|
|
|
-}
|
|
|
-
|
|
|
+BdsLoadImage (
|
|
|
+ IN EFI_DEVICE_PATH *DevicePath,
|
|
|
+ IN EFI_ALLOCATE_TYPE Type,
|
|
|
+ IN OUT EFI_PHYSICAL_ADDRESS* Image,
|
|
|
+ OUT UINTN *FileSize
|
|
|
+ )
|
|
|
+{
|
|
|
+ return BdsLoadImageAndUpdateDevicePath (&DevicePath, Type, Image, FileSize);
|
|
|
+}
|
|
|
+
|
|
|
/**
|
|
|
Start an EFI Application from a Device Path
|
|
|
|
|
@@ -991,7 +991,7 @@ BdsStartEfiApplication (
|
|
|
EFI_LOADED_IMAGE_PROTOCOL* LoadedImage;
|
|
|
|
|
|
// Find the nearest supported file loader
|
|
|
- Status = BdsLoadImageAndUpdateDevicePath (&DevicePath, AllocateAnyPages, &BinaryBuffer, &BinarySize);
|
|
|
+ Status = BdsLoadImageAndUpdateDevicePath (&DevicePath, AllocateAnyPages, &BinaryBuffer, &BinarySize);
|
|
|
if (EFI_ERROR (Status)) {
|
|
|
return Status;
|
|
|
}
|