]> glassweightruler.freedombox.rocks Git - Ventoy.git/commitdiff
update disk sort compare
authorlongpanda <admin@ventoy.net>
Tue, 23 Feb 2021 16:07:44 +0000 (00:07 +0800)
committerlongpanda <admin@ventoy.net>
Tue, 23 Feb 2021 16:07:44 +0000 (00:07 +0800)
Ventoy2Disk/Ventoy2Disk/Ventoy2Disk.c

index 91352d675462fb3f6df59269687115da87ec33ff..43c4ea0c2dff2448e09fdb6bb9d340d0a1c1b22f 100644 (file)
@@ -316,21 +316,40 @@ PHY_DRIVE_INFO * GetPhyDriveInfoById(int Id)
 int SortPhysicalDrive(PHY_DRIVE_INFO *pDriveList, DWORD DriveCount)\r
 {\r
        DWORD i, j;\r
 int SortPhysicalDrive(PHY_DRIVE_INFO *pDriveList, DWORD DriveCount)\r
 {\r
        DWORD i, j;\r
+       BOOL flag;\r
        PHY_DRIVE_INFO TmpDriveInfo;\r
 \r
        for (i = 0; i < DriveCount; i++)\r
        {\r
                for (j = i + 1; j < DriveCount; j++)\r
                {\r
        PHY_DRIVE_INFO TmpDriveInfo;\r
 \r
        for (i = 0; i < DriveCount; i++)\r
        {\r
                for (j = i + 1; j < DriveCount; j++)\r
                {\r
+                       flag = FALSE;\r
+\r
                        if (pDriveList[i].BusType == BusTypeUsb && pDriveList[j].BusType == BusTypeUsb)\r
                        {\r
                                if (pDriveList[i].RemovableMedia == FALSE && pDriveList[j].RemovableMedia == TRUE)\r
                                {\r
                        if (pDriveList[i].BusType == BusTypeUsb && pDriveList[j].BusType == BusTypeUsb)\r
                        {\r
                                if (pDriveList[i].RemovableMedia == FALSE && pDriveList[j].RemovableMedia == TRUE)\r
                                {\r
-                                       memcpy(&TmpDriveInfo, pDriveList + i, sizeof(PHY_DRIVE_INFO));\r
-                                       memcpy(pDriveList + i, pDriveList + j, sizeof(PHY_DRIVE_INFO));\r
-                                       memcpy(pDriveList + j, &TmpDriveInfo, sizeof(PHY_DRIVE_INFO));\r
+                                       flag = TRUE;\r
+                               }\r
+                       }\r
+                       else if (pDriveList[j].BusType == BusTypeUsb)\r
+                       {\r
+                               flag = TRUE;\r
+                       }\r
+                       else\r
+                       {\r
+                               if (pDriveList[j].PhyDrive < pDriveList[i].PhyDrive)\r
+                               {\r
+                                       flag = TRUE;\r
                                }\r
                        }\r
                                }\r
                        }\r
+\r
+                       if (flag)\r
+                       {\r
+                               memcpy(&TmpDriveInfo, pDriveList + i, sizeof(PHY_DRIVE_INFO));\r
+                               memcpy(pDriveList + i, pDriveList + j, sizeof(PHY_DRIVE_INFO));\r
+                               memcpy(pDriveList + j, &TmpDriveInfo, sizeof(PHY_DRIVE_INFO));\r
+                       }\r
                }\r
        }\r
 \r
                }\r
        }\r
 \r