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
+ 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
- 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
+ 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