diff options
| author | Amlal <amlal.elmahrouss@icloud.com> | 2024-10-28 17:08:45 +0100 |
|---|---|---|
| committer | Amlal <amlal.elmahrouss@icloud.com> | 2024-10-28 17:08:45 +0100 |
| commit | d5c125378d54ceaad7e34e8bac337d9b4665573e (patch) | |
| tree | 1ecc5464f2adb507ca00f87e27a7bddb3ddc8443 /dev | |
| parent | 06c4427923d78c1941cb64dba44e6c3d6e8210fe (diff) | |
IMP: Made the code much cleaner.
Signed-off-by: Amlal <amlal.elmahrouss@icloud.com>
Diffstat (limited to 'dev')
| -rw-r--r-- | dev/ZKAKit/KernelKit/DriveMgr.h | 1 | ||||
| -rw-r--r-- | dev/ZKAKit/src/DriveMgr.cc | 48 |
2 files changed, 31 insertions, 18 deletions
diff --git a/dev/ZKAKit/KernelKit/DriveMgr.h b/dev/ZKAKit/KernelKit/DriveMgr.h index db857a3c..95c0cda4 100644 --- a/dev/ZKAKit/KernelKit/DriveMgr.h +++ b/dev/ZKAKit/KernelKit/DriveMgr.h @@ -39,6 +39,7 @@ namespace Kernel kEPTDrive = 0x12, // ESP w/ EPM partition. kMBRDrive = 0x13, // PC classic partition scheme kGPTDrive = 0x14, // PC new partition scheme + kUnformattedDrive = 0x15, kStorageCount = 9, }; diff --git a/dev/ZKAKit/src/DriveMgr.cc b/dev/ZKAKit/src/DriveMgr.cc index 75aac9aa..8a85780a 100644 --- a/dev/ZKAKit/src/DriveMgr.cc +++ b/dev/ZKAKit/src/DriveMgr.cc @@ -141,32 +141,44 @@ namespace Kernel return trait; } - /// @brief Fetches the main drive. - /// @return the new drive. (returns kEPMDrive if EPM formatted) - DriveTrait io_construct_main_drive() noexcept + namespace Detail { - DriveTrait trait; - - rt_copy_memory((VoidPtr) "\\Mount\\OS:", trait.fName, rt_string_len("\\Mount\\OS:")); + Void ioi_detect_drive(DriveTrait& trait) + { + _BOOT_BLOCK_STRUCT block_struct; - _BOOT_BLOCK_STRUCT block_struct; + trait.fPacket.fLba = kEPMBaseLba; + trait.fPacket.fPacketSize = sizeof(_BOOT_BLOCK_STRUCT); + trait.fPacket.fPacketContent = &block_struct; - trait.fPacket.fLba = kEPMBaseLba; - trait.fPacket.fPacketSize = sizeof(_BOOT_BLOCK_STRUCT); - trait.fPacket.fPacketContent = &block_struct; + io_drv_input(&trait.fPacket); - io_drv_input(&trait.fPacket); + trait.fKind = kMassStorage; - trait.fKind = kMassStorage; + if (rt_string_cmp(block_struct.Magic, kEPMMagic, kEPMMagicLength) == 0) + { + trait.fKind |= kEPMDrive; + } + else + { + trait.fKind |= kUnformattedDrive; + } - if (rt_string_cmp(block_struct.Magic, kEPMMagic, kEPMMagicLength) == 0) - { - trait.fKind |= kEPMDrive; + trait.fPacket.fLba = 0; + trait.fPacket.fPacketSize = 0UL; + trait.fPacket.fPacketContent = nullptr; } + } + + /// @brief Fetches the main drive. + /// @return the new drive. (returns kEPMDrive if EPM formatted) + DriveTrait io_construct_main_drive() noexcept + { + DriveTrait trait; + + rt_copy_memory((VoidPtr) "\\Mount\\OS:", trait.fName, rt_string_len("\\Mount\\OS:")); - trait.fPacket.fLba = 0; - trait.fPacket.fPacketSize = 0UL; - trait.fPacket.fPacketContent = nullptr; + Detail::ioi_detect_drive(trait); trait.fVerify = io_drv_unimplemented; trait.fOutput = io_drv_output; |
