Skip to content

Commit

Permalink
Fix Windows 11 error 0x80070001. (ventoy#3010 ventoy#3029 ventoy#3105)
Browse files Browse the repository at this point in the history
  • Loading branch information
ventoy committed Feb 19, 2025
1 parent 60d88cb commit 4e8d8b2
Show file tree
Hide file tree
Showing 32 changed files with 57 additions and 14 deletions.
Binary file modified INSTALL/Ventoy2Disk.exe
Binary file not shown.
Binary file modified INSTALL/Ventoy2Disk_ARM.exe
Binary file not shown.
Binary file modified INSTALL/Ventoy2Disk_ARM64.exe
Binary file not shown.
Binary file modified INSTALL/Ventoy2Disk_X64.exe
Binary file not shown.
4 changes: 4 additions & 0 deletions INSTALL/tool/VentoyWorker.sh
Original file line number Diff line number Diff line change
Expand Up @@ -625,6 +625,10 @@ else
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."
Expand Down
Binary file modified INSTALL/tool/aarch64/V2DServer
Binary file not shown.
Binary file modified INSTALL/tool/aarch64/Ventoy2Disk.gtk3
Binary file not shown.
Binary file modified INSTALL/tool/aarch64/Ventoy2Disk.qt5
Binary file not shown.
Binary file modified INSTALL/tool/aarch64/vtoycli
Binary file not shown.
Binary file modified INSTALL/tool/i386/V2DServer
Binary file not shown.
Binary file modified INSTALL/tool/i386/Ventoy2Disk.gtk2
Binary file not shown.
Binary file modified INSTALL/tool/i386/Ventoy2Disk.gtk3
Binary file not shown.
Binary file modified INSTALL/tool/i386/Ventoy2Disk.qt5
Binary file not shown.
Binary file modified INSTALL/tool/i386/vtoycli
Binary file not shown.
Binary file modified INSTALL/tool/mips64el/V2DServer
Binary file not shown.
Binary file modified INSTALL/tool/mips64el/Ventoy2Disk.gtk3
Binary file not shown.
Binary file modified INSTALL/tool/mips64el/Ventoy2Disk.qt5
Binary file not shown.
Binary file modified INSTALL/tool/mips64el/vtoycli
Binary file not shown.
1 change: 0 additions & 1 deletion INSTALL/tool/ventoy_lib.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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 \
set 2 hidden on \
quit

sync
Expand Down
Binary file modified INSTALL/tool/x86_64/V2DServer
Binary file not shown.
Binary file modified INSTALL/tool/x86_64/Ventoy2Disk.gtk2
Binary file not shown.
Binary file modified INSTALL/tool/x86_64/Ventoy2Disk.gtk3
Binary file not shown.
Binary file modified INSTALL/tool/x86_64/Ventoy2Disk.qt5
Binary file not shown.
Binary file modified INSTALL/tool/x86_64/vtoycli
Binary file not shown.
2 changes: 1 addition & 1 deletion LinuxGUI/Ventoy2Disk/Core/ventoy_util.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Table[1].Attr = 0xC000000000000001ULL;
Table[1].Attr = 0x8000000000000000ULL;
ventoy_fill_gpt_partname(Table[1].Name, "VTOYEFI");

#if 0
Expand Down
29 changes: 29 additions & 0 deletions LinuxGUI/Ventoy2Disk/Web/ventoy_http.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
VTOY_GPT_INFO *pstGPT = NULL;

vdebug("ventoy_update_thread run ...\n");

Expand Down Expand Up @@ -790,6 +791,34 @@ static void * ventoy_update_thread(void *data)
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");
Expand Down
24 changes: 16 additions & 8 deletions Ventoy2Disk/Ventoy2Disk/PhyDrive.c
Original file line number Diff line number Diff line change
Expand Up @@ -2520,7 +2520,7 @@ int PartitionResizeForVentoy(PHY_DRIVE_INFO *pPhyDrive)

pGPT->PartTbl[1].StartLBA = pGPT->PartTbl[0].LastLBA + 1;
pGPT->PartTbl[1].LastLBA = pGPT->PartTbl[1].StartLBA + VENTOY_EFI_PART_SIZE / 512 - 1;
pGPT->PartTbl[1].Attr = 0xC000000000000001ULL;
pGPT->PartTbl[1].Attr = VENTOY_EFI_PART_ATTR;
memcpy(pGPT->PartTbl[1].Name, L"VTOYEFI", 7 * 2);

//Update CRC
Expand Down Expand Up @@ -2797,6 +2797,7 @@ int UpdateVentoy2PhyDrive(PHY_DRIVE_INFO *pPhyDrive, int TryId)
BOOL CleanDisk = FALSE;
BOOL DelEFI = FALSE;
BOOL bWriteBack = TRUE;
BOOL bUpdateEFIAttr = FALSE;
HANDLE hVolume;
HANDLE hDrive;
DWORD Status;
Expand Down Expand Up @@ -2904,7 +2905,13 @@ int UpdateVentoy2PhyDrive(PHY_DRIVE_INFO *pPhyDrive, int TryId)
if (pPhyDrive->PartStyle == 1)
{
Log("TryId=%d EFI GPT partition type is 0x%llx", TryId, pPhyDrive->Part2GPTAttr);
PROGRESS_BAR_SET_POS(PT_DEL_ALL_PART);
PROGRESS_BAR_SET_POS(PT_DEL_ALL_PART);

if (pGptInfo->PartTbl[1].Attr != VENTOY_EFI_PART_ATTR)
{
bUpdateEFIAttr = TRUE;
}


if (TryId == 1)
{
Expand All @@ -2917,8 +2924,8 @@ int UpdateVentoy2PhyDrive(PHY_DRIVE_INFO *pPhyDrive, int TryId)
}
else if (TryId == 2)
{
Log("Change GPT partition attribute");
if (DISK_ChangeVtoyEFIAttr(pPhyDrive->PhyDrive, StartSector * 512ULL, 0x8000000000000001))
Log("Try2 Change GPT partition attribute to 0x%016llx", VENTOY_EFI_PART_ATTR & 0xFFFFFFFFFFFFFFFEULL);
if (DISK_ChangeVtoyEFIAttr(pPhyDrive->PhyDrive, StartSector * 512ULL, VENTOY_EFI_PART_ATTR & 0xFFFFFFFFFFFFFFFEULL))
{
ChangeAttr = TRUE;
Sleep(2000);
Expand Down Expand Up @@ -3253,15 +3260,16 @@ int UpdateVentoy2PhyDrive(PHY_DRIVE_INFO *pPhyDrive, int TryId)
DISK_ChangeVtoyEFI2Basic(pPhyDrive->PhyDrive, StartSector * 512);
}


if (pPhyDrive->PartStyle == 1)
{
if (ChangeAttr || ((pPhyDrive->Part2GPTAttr >> 56) != 0xC0))
if (ChangeAttr || bUpdateEFIAttr)
{
Log("Change EFI partition attr %u <0x%llx> to <0x%llx>", ChangeAttr, pPhyDrive->Part2GPTAttr, 0xC000000000000001ULL);
if (DISK_ChangeVtoyEFIAttr(pPhyDrive->PhyDrive, StartSector * 512ULL, 0xC000000000000001ULL))
Log("Change EFI partition attr %u <0x%llx> to <0x%llx>", ChangeAttr, pGptInfo->PartTbl[1].Attr, VENTOY_EFI_PART_ATTR);
if (DISK_ChangeVtoyEFIAttr(pPhyDrive->PhyDrive, StartSector * 512ULL, VENTOY_EFI_PART_ATTR))
{
Log("Change EFI partition attr success");
pPhyDrive->Part2GPTAttr = 0xC000000000000001ULL;
pPhyDrive->Part2GPTAttr = VENTOY_EFI_PART_ATTR;
}
else
{
Expand Down
2 changes: 1 addition & 1 deletion Ventoy2Disk/Ventoy2Disk/Utility.c
Original file line number Diff line number Diff line change
Expand Up @@ -982,7 +982,7 @@ int VentoyFillGpt(UINT64 DiskSizeBytes, VTOY_GPT_INFO *pInfo)
CoCreateGuid(&(Table[1].PartGuid));
Table[1].StartLBA = Table[0].LastLBA + 1;
Table[1].LastLBA = Table[1].StartLBA + VENTOY_EFI_PART_SIZE / 512 - 1;
Table[1].Attr = 0xC000000000000001ULL;
Table[1].Attr = VENTOY_EFI_PART_ATTR;
memcpy(Table[1].Name, L"VTOYEFI", 7 * 2);

#if 0
Expand Down
3 changes: 3 additions & 0 deletions Ventoy2Disk/Ventoy2Disk/Ventoy2Disk.h
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,9 @@ typedef enum VTOY_FS

#define FAT32_MAX_LIMIT (32 * 1073741824ULL)

#define VENTOY_EFI_PART_ATTR 0x8000000000000000ULL


#define SIZE_1KB (1024)
#define SIZE_1GB (1024 * 1024 * 1024)
#define SIZE_1TB (1024ULL * 1024ULL * 1024ULL * 1024ULL)
Expand Down
2 changes: 1 addition & 1 deletion vtoycli/partresize.c
Original file line number Diff line number Diff line change
Expand Up @@ -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].Attr = 0xC000000000000001ULL;
PartTbl[1].Attr = VENTOY_EFI_PART_ATTR;
PartTbl[1].Name[0] = 'V';
PartTbl[1].Name[1] = 'T';
PartTbl[1].Name[2] = 'O';
Expand Down
2 changes: 1 addition & 1 deletion vtoycli/vtoycli.h
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
#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)
Expand Down
2 changes: 1 addition & 1 deletion vtoygpt/vtoygpt.c
Original file line number Diff line number Diff line change
Expand Up @@ -244,7 +244,7 @@ int DumpGptInfo(VTOY_GPT_INFO *pGptInfo)
return 0;
}

#define VENTOY_EFI_PART_ATTR 0xC000000000000001ULL
#define VENTOY_EFI_PART_ATTR 0x8000000000000000ULL

int main(int argc, const char **argv)
{
Expand Down

0 comments on commit 4e8d8b2

Please sign in to comment.