]> glassweightruler.freedombox.rocks Git - Ventoy.git/commitdiff
Fix Windows 11 error 0x80070001. (#3010 #3029 #3105)
authorlongpanda <admin@ventoy.net>
Wed, 19 Feb 2025 15:49:03 +0000 (23:49 +0800)
committerlongpanda <admin@ventoy.net>
Wed, 19 Feb 2025 15:49:03 +0000 (23:49 +0800)
32 files changed:
INSTALL/Ventoy2Disk.exe
INSTALL/Ventoy2Disk_ARM.exe
INSTALL/Ventoy2Disk_ARM64.exe
INSTALL/Ventoy2Disk_X64.exe
INSTALL/tool/VentoyWorker.sh
INSTALL/tool/aarch64/V2DServer
INSTALL/tool/aarch64/Ventoy2Disk.gtk3
INSTALL/tool/aarch64/Ventoy2Disk.qt5
INSTALL/tool/aarch64/vtoycli
INSTALL/tool/i386/V2DServer
INSTALL/tool/i386/Ventoy2Disk.gtk2
INSTALL/tool/i386/Ventoy2Disk.gtk3
INSTALL/tool/i386/Ventoy2Disk.qt5
INSTALL/tool/i386/vtoycli
INSTALL/tool/mips64el/V2DServer
INSTALL/tool/mips64el/Ventoy2Disk.gtk3
INSTALL/tool/mips64el/Ventoy2Disk.qt5
INSTALL/tool/mips64el/vtoycli
INSTALL/tool/ventoy_lib.sh
INSTALL/tool/x86_64/V2DServer
INSTALL/tool/x86_64/Ventoy2Disk.gtk2
INSTALL/tool/x86_64/Ventoy2Disk.gtk3
INSTALL/tool/x86_64/Ventoy2Disk.qt5
INSTALL/tool/x86_64/vtoycli
LinuxGUI/Ventoy2Disk/Core/ventoy_util.c
LinuxGUI/Ventoy2Disk/Web/ventoy_http.c
Ventoy2Disk/Ventoy2Disk/PhyDrive.c
Ventoy2Disk/Ventoy2Disk/Utility.c
Ventoy2Disk/Ventoy2Disk/Ventoy2Disk.h
vtoycli/partresize.c
vtoycli/vtoycli.h
vtoygpt/vtoygpt.c

index aa91ecf75a5b7105f7ab78360979a4836adf5c4d..312b7072f4aad63aed1eb371853e8e305746a12e 100644 (file)
Binary files a/INSTALL/Ventoy2Disk.exe and b/INSTALL/Ventoy2Disk.exe differ
index 9acbd964f04a3c77f2732c54f0a42b97dcfd46c1..337f38a76f619bf2e7ce5b92512da5dc611b37ab 100644 (file)
Binary files a/INSTALL/Ventoy2Disk_ARM.exe and b/INSTALL/Ventoy2Disk_ARM.exe differ
index c53d0e013549a826706425e11f140c1069433a19..4b8a28f51de5e5b7fd34d8469f9990806ce2c01e 100644 (file)
Binary files a/INSTALL/Ventoy2Disk_ARM64.exe and b/INSTALL/Ventoy2Disk_ARM64.exe differ
index 155e465af06ca7a397aebe0be54f71b748919b05..a4e6546354c18ed80f64e8ba56dafb7848f139a2 100644 (file)
Binary files a/INSTALL/Ventoy2Disk_X64.exe and b/INSTALL/Ventoy2Disk_X64.exe differ
index e0800d98aec4056986776eff0a6f918383a997de..fa2af33a9c0aa014d77927dcc70fdf8adaad6862 100644 (file)
@@ -625,6 +625,10 @@ else
         check_umount_disk "$DISK"
         vtoycli partresize -s $DISK $part2_start
     fi
         check_umount_disk "$DISK"
         vtoycli partresize -s $DISK $part2_start
     fi
+    
+    vtinfo "update esp partition attribute"
+    vtoycli gpt -f $DISK
+    sync
 
     echo ""
     vtinfo "Update Ventoy on $DISK successfully finished."
 
     echo ""
     vtinfo "Update Ventoy on $DISK successfully finished."
index 53859bc3ff9e43c46099f4604c347747966f5686..64fbbbc4ef05673a75f22997237f6a9b0211eb04 100644 (file)
Binary files a/INSTALL/tool/aarch64/V2DServer and b/INSTALL/tool/aarch64/V2DServer differ
index ce1ae01a989f15ca5a04e76844cae7084b1068df..65f84ec2c83e65ab05e13e3a3d4ac5ddf5503c37 100644 (file)
Binary files a/INSTALL/tool/aarch64/Ventoy2Disk.gtk3 and b/INSTALL/tool/aarch64/Ventoy2Disk.gtk3 differ
index 18ad203c8384194811d028bb315b86eb79b70685..cc7630aea537c25e300fd58819e58d5a966c3d1b 100644 (file)
Binary files a/INSTALL/tool/aarch64/Ventoy2Disk.qt5 and b/INSTALL/tool/aarch64/Ventoy2Disk.qt5 differ
index c6fe074003a5d074ede9225c6b75cd6c3f51fa53..0ce9c93a573400a9823de7e5ec5fba3015b9ebc9 100644 (file)
Binary files a/INSTALL/tool/aarch64/vtoycli and b/INSTALL/tool/aarch64/vtoycli differ
index 5cc85c02c0d7b5c8574ac4cb20b9ac193460a476..1f809e74bec51c82e45cb15061524333c5f79b45 100644 (file)
Binary files a/INSTALL/tool/i386/V2DServer and b/INSTALL/tool/i386/V2DServer differ
index dd18b8f7c2ed59954a6adbebac1c02eeaac3c958..697631b9ee00d906065e98a52584e8972ce6c2d2 100644 (file)
Binary files a/INSTALL/tool/i386/Ventoy2Disk.gtk2 and b/INSTALL/tool/i386/Ventoy2Disk.gtk2 differ
index 4d0d763dcb5e379808132323834c067d487acfbb..7dc3ad7cae20ad071a1ff623bbbf3583642495c7 100644 (file)
Binary files a/INSTALL/tool/i386/Ventoy2Disk.gtk3 and b/INSTALL/tool/i386/Ventoy2Disk.gtk3 differ
index 337b2841bbc788ad50159230653cd5e822ddfe96..3ba83071375b4f9ee0b76d5960d1638c412e3d75 100644 (file)
Binary files a/INSTALL/tool/i386/Ventoy2Disk.qt5 and b/INSTALL/tool/i386/Ventoy2Disk.qt5 differ
index f30deb5addd994b64cbe7b6c33da37aebb1a035e..cbe2d989a3df8bb0c1ce86b0439a362e7554142f 100644 (file)
Binary files a/INSTALL/tool/i386/vtoycli and b/INSTALL/tool/i386/vtoycli differ
index fe1b1ea0cc7bef1b4dd353e25740e0fa3a3bafaf..b4d9fe664168a1fed8f2c7464b15bb281c433362 100644 (file)
Binary files a/INSTALL/tool/mips64el/V2DServer and b/INSTALL/tool/mips64el/V2DServer differ
index 98d6bf26f803af8d03ec3371884718ad5f064e11..e53bb8b7328dbc93f103ffd1aa08f2308e15685b 100644 (file)
Binary files a/INSTALL/tool/mips64el/Ventoy2Disk.gtk3 and b/INSTALL/tool/mips64el/Ventoy2Disk.gtk3 differ
index 7387ae55d3f9fccc9aad38f47f3cebbb59908aea..e919b933a7b2a861519479966a0c21c478eb35d7 100644 (file)
Binary files a/INSTALL/tool/mips64el/Ventoy2Disk.qt5 and b/INSTALL/tool/mips64el/Ventoy2Disk.qt5 differ
index a4c97ea457f482e9d4224cea8e71147945f904b2..4a0e20b10c181ec8b20373c3155e9b659b5047e4 100644 (file)
Binary files a/INSTALL/tool/mips64el/vtoycli and b/INSTALL/tool/mips64el/vtoycli differ
index 0195e8ab341c154afb92c0e63c4dafd2e1af26d9..854881d7a841dd5bcbfaab96141419a10faa9aa8 100644 (file)
@@ -449,7 +449,6 @@ format_ventoy_disk_gpt() {
         mkpart Ventoy ntfs $part1_start_sector $part1_end_sector \
         mkpart VTOYEFI fat16 $part2_start_sector $part2_end_sector \
         $vt_set_efi_type \
         mkpart Ventoy ntfs $part1_start_sector $part1_end_sector \
         mkpart VTOYEFI fat16 $part2_start_sector $part2_end_sector \
         $vt_set_efi_type \
-        set 2 hidden on \
         quit
 
     sync
         quit
 
     sync
index 8703fbf787f5eeca70aa84f312c6a6961e37be1e..bb1235f64469cd96c3f0a036e8ec7ef819c9af92 100644 (file)
Binary files a/INSTALL/tool/x86_64/V2DServer and b/INSTALL/tool/x86_64/V2DServer differ
index c74a2ac91323062547ee382fdaf09eb9bd6faa3e..4eea1035f6dc614c603ed6258e4ff3b1e682fa0e 100644 (file)
Binary files a/INSTALL/tool/x86_64/Ventoy2Disk.gtk2 and b/INSTALL/tool/x86_64/Ventoy2Disk.gtk2 differ
index 089d35c9c930f0f8babb31db9c081f5922f26d91..8e691928cb580469220729e6ea8b14d1480ba5a7 100644 (file)
Binary files a/INSTALL/tool/x86_64/Ventoy2Disk.gtk3 and b/INSTALL/tool/x86_64/Ventoy2Disk.gtk3 differ
index a7616ef259697f5bcdb4693e1b0503c4f233cfb9..e87fe82c4deff9fbcbe3aa85338368f1a32165f2 100644 (file)
Binary files a/INSTALL/tool/x86_64/Ventoy2Disk.qt5 and b/INSTALL/tool/x86_64/Ventoy2Disk.qt5 differ
index a5d792d7de3307936e0aa733c21fdfb48bd497f7..ab36a28239bd6f169bd71623050c919e553fb8c8 100644 (file)
Binary files a/INSTALL/tool/x86_64/vtoycli and b/INSTALL/tool/x86_64/vtoycli differ
index 03d93192f2cef0576ef13797f1d4ffcc81c72531..cbee36a83533aac1e721ad71939fa003b58ca24a 100644 (file)
@@ -442,7 +442,7 @@ int ventoy_fill_gpt(uint64_t size, uint64_t reserve, int align4k, VTOY_GPT_INFO
     ventoy_gen_preudo_uuid(&(Table[1].PartGuid));
     Table[1].StartLBA = Table[0].LastLBA + 1;
     Table[1].LastLBA = Table[1].StartLBA + VTOYEFI_PART_BYTES / 512 - 1;
     ventoy_gen_preudo_uuid(&(Table[1].PartGuid));
     Table[1].StartLBA = Table[0].LastLBA + 1;
     Table[1].LastLBA = Table[1].StartLBA + VTOYEFI_PART_BYTES / 512 - 1;
-    Table[1].Attr = 0xC000000000000001ULL;
+    Table[1].Attr = 0x8000000000000000ULL;
     ventoy_fill_gpt_partname(Table[1].Name, "VTOYEFI");
 
 #if 0
     ventoy_fill_gpt_partname(Table[1].Name, "VTOYEFI");
 
 #if 0
index d221dd390fd983978b02d867877ee32b1e91330e..ec0c3ca908cae8e62a2fc78dcc278c1e04970789 100644 (file)
@@ -727,6 +727,7 @@ static void * ventoy_update_thread(void *data)
     MBR_HEAD MBR;
     ventoy_disk *disk = NULL;
     ventoy_thread_data *thread = (ventoy_thread_data *)data;
     MBR_HEAD MBR;
     ventoy_disk *disk = NULL;
     ventoy_thread_data *thread = (ventoy_thread_data *)data;
+    VTOY_GPT_INFO *pstGPT = NULL;
 
     vdebug("ventoy_update_thread run ...\n");
 
 
     vdebug("ventoy_update_thread run ...\n");
 
@@ -790,6 +791,34 @@ static void * ventoy_update_thread(void *data)
         vlog("No need to update MBR\n");
     }
 
         vlog("No need to update MBR\n");
     }
 
+    
+    if (disk->vtoydata.partition_style)
+    {
+        pstGPT = (VTOY_GPT_INFO *)malloc(sizeof(VTOY_GPT_INFO));
+        memset(pstGPT, 0, sizeof(VTOY_GPT_INFO));
+            
+        offset = lseek(fd, 0, SEEK_SET);
+        len = read(fd, pstGPT, sizeof(VTOY_GPT_INFO));
+        vlog("Read GPT table offset:%llu len:%llu ...\n", (_ull)offset, (_ull)len);
+
+        if (pstGPT->PartTbl[1].Attr != 0x8000000000000000ULL)
+        {
+            vlog("Update EFI part attr from 0x%016llx to 0x%016llx\n", 
+                 pstGPT->PartTbl[1].Attr, 0x8000000000000000ULL);
+
+            pstGPT->PartTbl[1].Attr = 0x8000000000000000ULL;
+            pstGPT->Head.Crc = 0;
+            pstGPT->Head.Crc = ventoy_crc32(&(pstGPT->Head), pstGPT->Head.Length);            
+            ventoy_write_gpt_part_table(fd, disk->size_in_byte, pstGPT);
+        }
+        else
+        {
+            vlog("No need to update EFI part attr\n");
+        }
+        free(pstGPT);
+    }
+    
+
     g_current_progress = PT_SYNC_DATA1;
 
     vlog("fsync data1...\n");
     g_current_progress = PT_SYNC_DATA1;
 
     vlog("fsync data1...\n");
index d64916e5989771d09ec108151331ea28217b6c58..c9ac5b1442a98491713030039dc8ef26897c29e6 100644 (file)
@@ -2520,7 +2520,7 @@ int PartitionResizeForVentoy(PHY_DRIVE_INFO *pPhyDrive)
 \r
                pGPT->PartTbl[1].StartLBA = pGPT->PartTbl[0].LastLBA + 1;\r
                pGPT->PartTbl[1].LastLBA = pGPT->PartTbl[1].StartLBA + VENTOY_EFI_PART_SIZE / 512 - 1;\r
 \r
                pGPT->PartTbl[1].StartLBA = pGPT->PartTbl[0].LastLBA + 1;\r
                pGPT->PartTbl[1].LastLBA = pGPT->PartTbl[1].StartLBA + VENTOY_EFI_PART_SIZE / 512 - 1;\r
-               pGPT->PartTbl[1].Attr = 0xC000000000000001ULL;\r
+               pGPT->PartTbl[1].Attr = VENTOY_EFI_PART_ATTR;\r
                memcpy(pGPT->PartTbl[1].Name, L"VTOYEFI", 7 * 2);\r
 \r
                //Update CRC\r
                memcpy(pGPT->PartTbl[1].Name, L"VTOYEFI", 7 * 2);\r
 \r
                //Update CRC\r
@@ -2797,6 +2797,7 @@ int UpdateVentoy2PhyDrive(PHY_DRIVE_INFO *pPhyDrive, int TryId)
        BOOL CleanDisk = FALSE;\r
        BOOL DelEFI = FALSE;\r
        BOOL bWriteBack = TRUE;\r
        BOOL CleanDisk = FALSE;\r
        BOOL DelEFI = FALSE;\r
        BOOL bWriteBack = TRUE;\r
+       BOOL bUpdateEFIAttr = FALSE;\r
        HANDLE hVolume;\r
        HANDLE hDrive;\r
        DWORD Status;\r
        HANDLE hVolume;\r
        HANDLE hDrive;\r
        DWORD Status;\r
@@ -2904,7 +2905,13 @@ int UpdateVentoy2PhyDrive(PHY_DRIVE_INFO *pPhyDrive, int TryId)
        if (pPhyDrive->PartStyle == 1)\r
        {\r
                Log("TryId=%d EFI GPT partition type is 0x%llx", TryId, pPhyDrive->Part2GPTAttr);\r
        if (pPhyDrive->PartStyle == 1)\r
        {\r
                Log("TryId=%d EFI GPT partition type is 0x%llx", TryId, pPhyDrive->Part2GPTAttr);\r
-               PROGRESS_BAR_SET_POS(PT_DEL_ALL_PART);\r
+               PROGRESS_BAR_SET_POS(PT_DEL_ALL_PART);        \r
+\r
+        if (pGptInfo->PartTbl[1].Attr != VENTOY_EFI_PART_ATTR)\r
+        {\r
+            bUpdateEFIAttr = TRUE;            \r
+        }        \r
+\r
 \r
                if (TryId == 1)\r
                {\r
 \r
                if (TryId == 1)\r
                {\r
@@ -2917,8 +2924,8 @@ int UpdateVentoy2PhyDrive(PHY_DRIVE_INFO *pPhyDrive, int TryId)
                }\r
                else if (TryId == 2)\r
                {\r
                }\r
                else if (TryId == 2)\r
                {\r
-                       Log("Change GPT partition attribute");\r
-                       if (DISK_ChangeVtoyEFIAttr(pPhyDrive->PhyDrive, StartSector * 512ULL, 0x8000000000000001))\r
+                       Log("Try2 Change GPT partition attribute to 0x%016llx", VENTOY_EFI_PART_ATTR & 0xFFFFFFFFFFFFFFFEULL);\r
+                       if (DISK_ChangeVtoyEFIAttr(pPhyDrive->PhyDrive, StartSector * 512ULL, VENTOY_EFI_PART_ATTR & 0xFFFFFFFFFFFFFFFEULL))\r
                        {\r
                                ChangeAttr = TRUE;\r
                                Sleep(2000);\r
                        {\r
                                ChangeAttr = TRUE;\r
                                Sleep(2000);\r
@@ -3253,15 +3260,16 @@ End:
                DISK_ChangeVtoyEFI2Basic(pPhyDrive->PhyDrive, StartSector * 512);\r
     }\r
 \r
                DISK_ChangeVtoyEFI2Basic(pPhyDrive->PhyDrive, StartSector * 512);\r
     }\r
 \r
+\r
        if (pPhyDrive->PartStyle == 1)\r
        {\r
        if (pPhyDrive->PartStyle == 1)\r
        {\r
-               if (ChangeAttr || ((pPhyDrive->Part2GPTAttr >> 56) != 0xC0))\r
+               if (ChangeAttr || bUpdateEFIAttr)\r
                {\r
                {\r
-                       Log("Change EFI partition attr %u <0x%llx> to <0x%llx>", ChangeAttr, pPhyDrive->Part2GPTAttr, 0xC000000000000001ULL);\r
-                       if (DISK_ChangeVtoyEFIAttr(pPhyDrive->PhyDrive, StartSector * 512ULL, 0xC000000000000001ULL))\r
+                       Log("Change EFI partition attr %u <0x%llx> to <0x%llx>", ChangeAttr, pGptInfo->PartTbl[1].Attr, VENTOY_EFI_PART_ATTR);\r
+                       if (DISK_ChangeVtoyEFIAttr(pPhyDrive->PhyDrive, StartSector * 512ULL, VENTOY_EFI_PART_ATTR))\r
                        {\r
                                Log("Change EFI partition attr success");\r
                        {\r
                                Log("Change EFI partition attr success");\r
-                               pPhyDrive->Part2GPTAttr = 0xC000000000000001ULL;\r
+                               pPhyDrive->Part2GPTAttr = VENTOY_EFI_PART_ATTR;\r
                        }\r
                        else\r
                        {\r
                        }\r
                        else\r
                        {\r
index daa6ecf51231f334b69909e356d24320dbd7afd4..8e4c530becd1ac42c4a2e282c232143a29144790 100644 (file)
@@ -982,7 +982,7 @@ int VentoyFillGpt(UINT64 DiskSizeBytes, VTOY_GPT_INFO *pInfo)
     CoCreateGuid(&(Table[1].PartGuid));\r
     Table[1].StartLBA = Table[0].LastLBA + 1;\r
     Table[1].LastLBA = Table[1].StartLBA + VENTOY_EFI_PART_SIZE / 512 - 1;\r
     CoCreateGuid(&(Table[1].PartGuid));\r
     Table[1].StartLBA = Table[0].LastLBA + 1;\r
     Table[1].LastLBA = Table[1].StartLBA + VENTOY_EFI_PART_SIZE / 512 - 1;\r
-    Table[1].Attr = 0xC000000000000001ULL;\r
+    Table[1].Attr = VENTOY_EFI_PART_ATTR;\r
     memcpy(Table[1].Name, L"VTOYEFI", 7 * 2);\r
 \r
 #if 0\r
     memcpy(Table[1].Name, L"VTOYEFI", 7 * 2);\r
 \r
 #if 0\r
index 6106520d52cf3f9d37cfffc1088863cc295e3d0b..e7d5bfc7bdee40849a77213c6bcadd497cda8767 100644 (file)
@@ -34,6 +34,9 @@ typedef enum VTOY_FS
 \r
 #define FAT32_MAX_LIMIT             (32 * 1073741824ULL)\r
 \r
 \r
 #define FAT32_MAX_LIMIT             (32 * 1073741824ULL)\r
 \r
+#define VENTOY_EFI_PART_ATTR        0x8000000000000000ULL\r
+\r
+\r
 #define SIZE_1KB                                       (1024)\r
 #define SIZE_1GB                                       (1024 * 1024 * 1024)\r
 #define SIZE_1TB                                       (1024ULL * 1024ULL * 1024ULL * 1024ULL)\r
 #define SIZE_1KB                                       (1024)\r
 #define SIZE_1GB                                       (1024 * 1024 * 1024)\r
 #define SIZE_1TB                                       (1024ULL * 1024ULL * 1024ULL * 1024ULL)\r
index 6613be738fc1d91fe15637ecfe264cd1ad1c84a9..d47618c963388a1113699f21bef0f16a3d6ac088 100644 (file)
@@ -599,7 +599,7 @@ static int update_part_table(char *disk, UINT64 part2start)
 
         PartTbl[1].StartLBA = PartTbl[0].LastLBA + 1;
                PartTbl[1].LastLBA = PartTbl[1].StartLBA + VENTOY_EFI_PART_SIZE / 512 - 1;
 
         PartTbl[1].StartLBA = PartTbl[0].LastLBA + 1;
                PartTbl[1].LastLBA = PartTbl[1].StartLBA + VENTOY_EFI_PART_SIZE / 512 - 1;
-               PartTbl[1].Attr = 0xC000000000000001ULL;
+               PartTbl[1].Attr = VENTOY_EFI_PART_ATTR;
         PartTbl[1].Name[0] = 'V';
         PartTbl[1].Name[1] = 'T';
         PartTbl[1].Name[2] = 'O';
         PartTbl[1].Name[0] = 'V';
         PartTbl[1].Name[1] = 'T';
         PartTbl[1].Name[2] = 'O';
index 1a6667ffe12d78bdfe7227d2ffd0762c3de9dcac..006e1f30246806e8d90fabb3fa05f88108a0606d 100644 (file)
@@ -21,7 +21,7 @@
 #ifndef __VTOYCLI_H__
 #define __VTOYCLI_H__
 
 #ifndef __VTOYCLI_H__
 #define __VTOYCLI_H__
 
-#define VENTOY_EFI_PART_ATTR   0xC000000000000001ULL
+#define VENTOY_EFI_PART_ATTR   0x8000000000000000ULL
 
 #define SIZE_1MB   (1024 * 1024)
 #define VENTOY_EFI_PART_SIZE   (32 * SIZE_1MB)
 
 #define SIZE_1MB   (1024 * 1024)
 #define VENTOY_EFI_PART_SIZE   (32 * SIZE_1MB)
index 705f750d46b48de73a2ffe39baa3eeca188420d5..cfd99fd59888a2e5216d2d0497b203de0b775659 100644 (file)
@@ -244,7 +244,7 @@ int DumpGptInfo(VTOY_GPT_INFO *pGptInfo)
     return 0;
 }
 
     return 0;
 }
 
-#define VENTOY_EFI_PART_ATTR   0xC000000000000001ULL
+#define VENTOY_EFI_PART_ATTR   0x8000000000000000ULL
 
 int main(int argc, const char **argv)
 {
 
 int main(int argc, const char **argv)
 {