From b29162841c4a69c287cef7f2f1447c783bce2eb7 Mon Sep 17 00:00:00 2001 From: belliash Date: Sun, 30 Oct 2022 12:21:09 +0100 Subject: [PATCH] Get rid of BlEfiDirectorySeparator() routine and allow GetVolumeDevicePath() to store ARC name --- xtldr/efiutil.c | 32 -------------------------------- xtldr/includes/xtbl.h | 5 ++--- xtldr/volume.c | 9 ++++++++- 3 files changed, 10 insertions(+), 36 deletions(-) diff --git a/xtldr/efiutil.c b/xtldr/efiutil.c index 946deaf..3f06c72 100644 --- a/xtldr/efiutil.c +++ b/xtldr/efiutil.c @@ -162,38 +162,6 @@ BlDbgPrint(IN PUINT16 Format, } } -/** - * Replaces slashes (/) with backslashes (\) in the string containing on-disk path. - * - * @param Path - * A pointer to the string containing an original system path. - * - * @return A pointer to converted string with EFI supported path separators. - * - * @since XT 1.0 - */ -PWCHAR -BlEfiDirectorySeparator(IN PWCHAR Path) -{ - PWCHAR EfiPath = NULL; - - while(*Path) - { - if(*Path == '/') - { - *EfiPath = '\\'; - } - else - { - *EfiPath = *Path; - } - Path++; - EfiPath++; - } - - return EfiPath; -} - /** * This routine allocates a pool memory. * diff --git a/xtldr/includes/xtbl.h b/xtldr/includes/xtbl.h index 6ad4961..c615594 100644 --- a/xtldr/includes/xtbl.h +++ b/xtldr/includes/xtbl.h @@ -51,9 +51,6 @@ VOID BlDbgPrint(IN PUINT16 Format, IN ...); -PWCHAR -BlEfiDirectorySeparator(IN PWCHAR Path); - INT_PTR BlEfiGetSecureBootStatus(); @@ -83,6 +80,7 @@ BlFindVolumeDevicePath(IN PEFI_DEVICE_PATH_PROTOCOL FsHandle, EFI_STATUS BlGetVolumeDevicePath(IN PUCHAR SystemPath, OUT PEFI_DEVICE_PATH_PROTOCOL *DevicePath, + OUT PUCHAR *ArcName, OUT PUCHAR *Path); EFI_STATUS @@ -114,6 +112,7 @@ BlpDiscoverEfiBlockDevices(OUT PLIST_ENTRY BlockDevices); EFI_STATUS BlpDissectVolumeArcPath(IN PUCHAR SystemPath, + OUT PUCHAR *ArcName, OUT PUCHAR *Path, OUT PUSHORT DriveType, OUT PULONG DriveNumber, diff --git a/xtldr/volume.c b/xtldr/volume.c index e303254..4bd2fa3 100644 --- a/xtldr/volume.c +++ b/xtldr/volume.c @@ -295,6 +295,7 @@ BlFindVolumeDevicePath(IN PEFI_DEVICE_PATH_PROTOCOL FsHandle, EFI_STATUS BlGetVolumeDevicePath(IN PUCHAR SystemPath, OUT PEFI_DEVICE_PATH_PROTOCOL *DevicePath, + OUT PUCHAR *ArcName, OUT PUCHAR *Path) { PEFI_BLOCK_DEVICE Device; @@ -349,7 +350,7 @@ BlGetVolumeDevicePath(IN PUCHAR SystemPath, else { /* Defaults to ARC path, dissect it */ - Status = BlpDissectVolumeArcPath(SystemPath, Path, &DriveType, &DriveNumber, &PartNumber); + Status = BlpDissectVolumeArcPath(SystemPath, ArcName, Path, &DriveType, &DriveNumber, &PartNumber); } /* Check if volume path parsed successfully */ @@ -582,6 +583,7 @@ BlpDiscoverEfiBlockDevices(OUT PLIST_ENTRY BlockDevices) */ EFI_STATUS BlpDissectVolumeArcPath(IN PUCHAR SystemPath, + OUT PUCHAR *ArcName, OUT PUCHAR *Path, OUT PUSHORT DriveType, OUT PULONG DriveNumber, @@ -711,6 +713,11 @@ BlpDissectVolumeArcPath(IN PUCHAR SystemPath, *Path = SystemPath + ArcLength; } + if(ArcName) + { + /* TODO: Store ARC path in ArcName */ + } + /* Return success */ return STATUS_EFI_SUCCESS; }