BOOL VDS_CleanDisk(int DriveIndex)\r
{\r
BOOL ret = VDS_DiskCommProc(INTF_ADVANCEDDISK, DriveIndex, VDS_CallBack_CleanDisk, 0);\r
- Log("VDS_CleanDisk %d ret:%d", DriveIndex, ret);\r
+ Log("VDS_CleanDisk %d ret:%d (%s)", DriveIndex, ret, ret ? "SUCCESS" : "FAIL");\r
return ret;\r
}\r
\r
\r
BOOL VDS_DeleteAllPartitions(int DriveIndex)\r
{\r
- BOOL ret = VDS_DiskCommProc(INTF_ADVANCEDDISK, DriveIndex, VDS_CallBack_DeletePartition, 0);\r
- Log("VDS_DeleteAllPartitions %d ret:%d", DriveIndex, ret);\r
+ BOOL ret = VDS_DiskCommProc(INTF_ADVANCEDDISK, DriveIndex, VDS_CallBack_DeletePartition, 0); \r
+ Log("VDS_DeleteAllPartitions %d ret:%d (%s)", DriveIndex, ret, ret ? "SUCCESS" : "FAIL");\r
return ret;\r
}\r
\r
BOOL VDS_DeleteVtoyEFIPartition(int DriveIndex)\r
{\r
BOOL ret = VDS_DiskCommProc(INTF_ADVANCEDDISK, DriveIndex, VDS_CallBack_DeletePartition, 2);\r
- Log("VDS_DeleteVtoyEFIPartition %d ret:%d", DriveIndex, ret);\r
+ Log("VDS_DeleteVtoyEFIPartition %d ret:%d (%s)", DriveIndex, ret, ret ? "SUCCESS" : "FAIL");\r
return ret;\r
}\r
\r
\r
BOOL VDS_ChangeVtoyEFIAttr(int DriveIndex, UINT64 Attr)\r
{\r
- BOOL ret = VDS_DiskCommProc(INTF_ADVANCEDDISK, DriveIndex, VDS_CallBack_ChangeEFIAttr, Attr);\r
- Log("VDS_ChangeVtoyEFIAttr %d ret:%d", DriveIndex, ret);\r
+ BOOL ret = VDS_DiskCommProc(INTF_ADVANCEDDISK, DriveIndex, VDS_CallBack_ChangeEFIAttr, Attr); \r
+ Log("VDS_ChangeVtoyEFIAttr %d ret:%d (%s)", DriveIndex, ret, ret ? "SUCCESS" : "FAIL");\r
return ret;\r
}\r
\r
Para.Offset = Offset;\r
\r
BOOL ret = VDS_DiskCommProc(INTF_ADVANCEDDISK2, DriveIndex, VDS_CallBack_ChangeEFIType, (ULONG)&Para);\r
- Log("VDS_ChangeVtoyEFI2ESP %d ret:%d", DriveIndex, ret);\r
+ Log("VDS_ChangeVtoyEFI2ESP %d ret:%d (%s)", DriveIndex, ret, ret ? "SUCCESS" : "FAIL");\r
return ret;\r
}\r
\r
Para.Offset = Offset;\r
\r
BOOL ret = VDS_DiskCommProc(INTF_ADVANCEDDISK2, DriveIndex, VDS_CallBack_ChangeEFIType, (ULONG)&Para);\r
- Log("VDS_ChangeVtoyEFI2ESP %d ret:%d", DriveIndex, ret);\r
+ Log("VDS_ChangeVtoyEFI2Basic %d ret:%d (%s)", DriveIndex, ret, ret ? "SUCCESS" : "FAIL");\r
return ret;\r
}\r
\r
memcpy(&(Para.Type), &EspPartType, sizeof(GUID));\r
CoCreateGuid(&(Para.Id));\r
\r
- BOOL ret = VDS_DiskCommProc(INTF_CREATEPARTITIONEX, DriveIndex, VDS_CallBack_CreateVtoyEFI, (ULONG)&Para);\r
- Log("VDS_CreateVtoyEFIPart %d ret:%d", DriveIndex, ret);\r
+ BOOL ret = VDS_DiskCommProc(INTF_CREATEPARTITIONEX, DriveIndex, VDS_CallBack_CreateVtoyEFI, (ULONG)&Para); \r
+ Log("VDS_CreateVtoyEFIPart %d ret:%d (%s)", DriveIndex, ret, ret ? "SUCCESS" : "FAIL");\r
return ret; \r
}\r
\r
Para.Offset = Offset;\r
memcpy(Para.Name, L"VTOYEFI", 7 * 2);\r
\r
- BOOL ret = VDS_DiskCommProc(INTF_PARTITIONMF, DriveIndex, VDS_CallBack_FormatVtoyEFI, (ULONG)&Para);\r
- Log("VDS_FormatVtoyEFIPart %d ret:%d", DriveIndex, ret);\r
+ BOOL ret = VDS_DiskCommProc(INTF_PARTITIONMF, DriveIndex, VDS_CallBack_FormatVtoyEFI, (ULONG)&Para); \r
+ Log("VDS_FormatVtoyEFIPart %d ret:%d (%s)", DriveIndex, ret, ret ? "SUCCESS" : "FAIL");\r
return ret;\r
-}
\ No newline at end of file
+}\r
+\r
BOOL Return = FALSE;\r
BOOL ret = FALSE;\r
BYTE *backup = NULL;\r
+ UINT64 offset;\r
HANDLE hDrive = INVALID_HANDLE_VALUE;\r
LARGE_INTEGER liCurPosition;\r
LARGE_INTEGER liNewPosition;\r
+ VTOY_GPT_INFO *pGPT = NULL;\r
\r
Log("BackupDataBeforeCleanDisk %d", PhyDrive);\r
\r
goto out;\r
}\r
\r
+ pGPT = (VTOY_GPT_INFO *)backup;\r
+ offset = pGPT->Head.EfiBackupLBA * 512;\r
+ if (offset >= (DiskSize - SIZE_2MB) && offset < DiskSize)\r
+ {\r
+ Log("EFI partition table check success"); \r
+ }\r
+ else\r
+ {\r
+ Log("Backup EFI LBA not in last 2MB range: %llu", pGPT->Head.EfiBackupLBA);\r
+ goto out;\r
+ }\r
+\r
//read last 2MB\r
liCurPosition.QuadPart = DiskSize - SIZE_2MB;\r
liNewPosition.QuadPart = 0;\r
{\r
bWriteBack = FALSE;\r
}\r
+\r
+ //write the first 2MB except parttable\r
+ if (!WriteBackupDataToDisk(hDrive, 34 * 512, pBackup + 34 * 512, SIZE_2MB - 34 * 512))\r
+ {\r
+ bWriteBack = FALSE;\r
+ }\r
+\r
Status = ERROR_NOT_FOUND;\r
}\r
else if (Esp2Basic)\r
\r
if (CleanDisk)\r
{\r
- if (!WriteBackupDataToDisk(hDrive, 4 * 512, pBackup + 4 * 512, SIZE_2MB - 4 * 512))\r
- {\r
- bWriteBack = FALSE;\r
- }\r
-\r
- if (!WriteBackupDataToDisk(hDrive, 0, pBackup, 4 * 512))\r
+ if (!WriteBackupDataToDisk(hDrive, 0, pBackup, 34 * 512))\r
{\r
bWriteBack = FALSE;\r
}\r
\r
if (bWriteBack)\r
{\r
- Log("Write success, now delete %s", BackBinFile);\r
+ Log("Write backup data success, now delete %s", BackBinFile);\r
DeleteFileA(BackBinFile);\r
}\r
+ else\r
+ {\r
+ Log("Write backup data failed");\r
+ }\r
+\r
+ Sleep(1000);\r
}\r
\r
//Refresh Drive Layout\r