]> glassweightruler.freedombox.rocks Git - Ventoy.git/commitdiff
Support drag resize dialog window width.
authorlongpanda <admin@ventoy.net>
Tue, 22 Aug 2023 03:21:17 +0000 (11:21 +0800)
committerlongpanda <admin@ventoy.net>
Tue, 22 Aug 2023 03:21:17 +0000 (11:21 +0800)
IMG/cpio/ventoy/hook/debian/antix-disk.sh
INSTALL/Ventoy2Disk.exe
INSTALL/Ventoy2Disk_ARM.exe
INSTALL/Ventoy2Disk_ARM64.exe
INSTALL/Ventoy2Disk_X64.exe
Ventoy2Disk/Ventoy2Disk/PartDialog.c
Ventoy2Disk/Ventoy2Disk/PhyDrive.c
Ventoy2Disk/Ventoy2Disk/Ventoy2Disk.h
Ventoy2Disk/Ventoy2Disk/Ventoy2Disk.rc
Ventoy2Disk/Ventoy2Disk/WinDialog.c
Ventoy2Disk/Ventoy2Disk/resource.h

index fc11c53b626837cfe80c469acc9f7670554e4ad6..e515fd282886f36e403e1fce164b68d7f2031ec9 100644 (file)
@@ -40,13 +40,13 @@ ventoy_os_install_dmsetup_by_unsquashfs() {
     
     dmModPath="/usr/lib/modules/$vtKerVer/kernel/drivers/md/dm-mod.$vtKoPo"
     echo $dmModPath > $VTOY_PATH/fsextract
     
     dmModPath="/usr/lib/modules/$vtKerVer/kernel/drivers/md/dm-mod.$vtKoPo"
     echo $dmModPath > $VTOY_PATH/fsextract
-    vtoy_unsquashfs -d $VTOY_PATH/sqfs -n -q -e $VTOY_PATH/fsextract $VTOY_PATH/fsdisk
+    vtoy_unsquashfs -d $VTOY_PATH/sqfs -n -q -e $VTOY_PATH/fsextract $VTOY_PATH/fsdisk 2>>$VTLOG
 
     if ! [ -e $VTOY_PATH/sqfs${dmModPath} ]; then
         rm -rf $VTOY_PATH/sqfs
         dmModPath="/lib/modules/$vtKerVer/kernel/drivers/md/dm-mod.$vtKoPo"
         echo $dmModPath > $VTOY_PATH/fsextract
 
     if ! [ -e $VTOY_PATH/sqfs${dmModPath} ]; then
         rm -rf $VTOY_PATH/sqfs
         dmModPath="/lib/modules/$vtKerVer/kernel/drivers/md/dm-mod.$vtKoPo"
         echo $dmModPath > $VTOY_PATH/fsextract
-        vtoy_unsquashfs -d $VTOY_PATH/sqfs -n -q -e $VTOY_PATH/fsextract $VTOY_PATH/fsdisk
+        vtoy_unsquashfs -d $VTOY_PATH/sqfs -n -q -e $VTOY_PATH/fsextract $VTOY_PATH/fsdisk 2>>$VTLOG
     fi
     
     if [ -e $VTOY_PATH/sqfs${dmModPath} ]; then
     fi
     
     if [ -e $VTOY_PATH/sqfs${dmModPath} ]; then
index 29154563e6da9949a19a87d1cf4cc6450b0e2a57..aa91ecf75a5b7105f7ab78360979a4836adf5c4d 100644 (file)
Binary files a/INSTALL/Ventoy2Disk.exe and b/INSTALL/Ventoy2Disk.exe differ
index f027ec9969d3b49607716e75efe2a3ca51c19b99..9acbd964f04a3c77f2732c54f0a42b97dcfd46c1 100644 (file)
Binary files a/INSTALL/Ventoy2Disk_ARM.exe and b/INSTALL/Ventoy2Disk_ARM.exe differ
index 47d324ba744dbe7151e2eb6cabccee4793ae79e5..c53d0e013549a826706425e11f140c1069433a19 100644 (file)
Binary files a/INSTALL/Ventoy2Disk_ARM64.exe and b/INSTALL/Ventoy2Disk_ARM64.exe differ
index f4f1c1760d7905f11f865f20786898c629e5fd3b..155e465af06ca7a397aebe0be54f71b748919b05 100644 (file)
Binary files a/INSTALL/Ventoy2Disk_X64.exe and b/INSTALL/Ventoy2Disk_X64.exe differ
index eb4aa0d926418f9d728d035f7b9c734208aaa5c2..317b6b75e4915f3a1713a1e6ca4a548a8d6320fa 100644 (file)
Binary files a/Ventoy2Disk/Ventoy2Disk/PartDialog.c and b/Ventoy2Disk/Ventoy2Disk/PartDialog.c differ
index c0cc8063d1889fcf2c04b2a5a661ea9915a09f73..d64916e5989771d09ec108151331ea28217b6c58 100644 (file)
@@ -544,6 +544,199 @@ int GetAllPhysicalDriveInfo(PHY_DRIVE_INFO *pDriveList, DWORD *pDriveCount)
     return 0;\r
 }\r
 \r
     return 0;\r
 }\r
 \r
+BOOL VentoyPhydriveMatch(PHY_DRIVE_INFO* pPhyDrive)\r
+{\r
+    BOOL  bRet = FALSE;\r
+    DWORD dwBytes;\r
+    HANDLE Handle = INVALID_HANDLE_VALUE;\r
+    CHAR PhyDrive[128];\r
+    GET_LENGTH_INFORMATION LengthInfo;\r
+    STORAGE_PROPERTY_QUERY Query;\r
+    STORAGE_DESCRIPTOR_HEADER DevDescHeader;\r
+    STORAGE_DEVICE_DESCRIPTOR* pDevDesc = NULL;\r
+    STORAGE_ACCESS_ALIGNMENT_DESCRIPTOR diskAlignment;\r
+    CHAR VendorId[128] = { 0 };\r
+    CHAR ProductId[128] = { 0 };\r
+    CHAR ProductRev[128] = { 0 };\r
+    CHAR SerialNumber[128] = { 0 };\r
+\r
+\r
+    safe_sprintf(PhyDrive, "\\\\.\\PhysicalDrive%d", pPhyDrive->PhyDrive);\r
+    Handle = CreateFileA(PhyDrive, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL);\r
+    if (Handle == INVALID_HANDLE_VALUE)\r
+    {\r
+        Log("Create file Handle:%p %s status:%u", Handle, PhyDrive, LASTERR);\r
+        return FALSE;\r
+    }\r
+\r
+    bRet = DeviceIoControl(Handle,\r
+        IOCTL_DISK_GET_LENGTH_INFO, NULL,\r
+        0,\r
+        &LengthInfo,\r
+        sizeof(LengthInfo),\r
+        &dwBytes,\r
+        NULL);\r
+    if (!bRet)\r
+    {\r
+        Log("DeviceIoControl IOCTL_DISK_GET_LENGTH_INFO failed error:%u", LASTERR);\r
+        return FALSE;\r
+    }\r
+\r
+    if (pPhyDrive->SizeInBytes != (ULONGLONG)LengthInfo.Length.QuadPart)\r
+    {\r
+        Log("PHYSICALDRIVE%d size not match %llu %llu", pPhyDrive->PhyDrive, (ULONGLONG)LengthInfo.Length.QuadPart,\r
+            (ULONGLONG)pPhyDrive->SizeInBytes);\r
+        CHECK_CLOSE_HANDLE(Handle);\r
+        return FALSE;\r
+    }\r
+\r
+    Query.PropertyId = StorageDeviceProperty;\r
+    Query.QueryType = PropertyStandardQuery;\r
+\r
+    bRet = DeviceIoControl(Handle,\r
+        IOCTL_STORAGE_QUERY_PROPERTY,\r
+        &Query,\r
+        sizeof(Query),\r
+        &DevDescHeader,\r
+        sizeof(STORAGE_DESCRIPTOR_HEADER),\r
+        &dwBytes,\r
+        NULL);\r
+    if (!bRet)\r
+    {\r
+        Log("DeviceIoControl1 error:%u dwBytes:%u", LASTERR, dwBytes);\r
+        CHECK_CLOSE_HANDLE(Handle);\r
+        return FALSE;\r
+    }\r
+\r
+    if (DevDescHeader.Size < sizeof(STORAGE_DEVICE_DESCRIPTOR))\r
+    {\r
+        Log("Invalid DevDescHeader.Size:%u", DevDescHeader.Size);\r
+        CHECK_CLOSE_HANDLE(Handle);\r
+        return FALSE;\r
+    }\r
+\r
+    pDevDesc = (STORAGE_DEVICE_DESCRIPTOR*)malloc(DevDescHeader.Size);\r
+    if (!pDevDesc)\r
+    {\r
+        Log("failed to malloc error:%u len:%u", LASTERR, DevDescHeader.Size);\r
+        CHECK_CLOSE_HANDLE(Handle);\r
+        return FALSE;\r
+    }\r
+\r
+    bRet = DeviceIoControl(Handle,\r
+        IOCTL_STORAGE_QUERY_PROPERTY,\r
+        &Query,\r
+        sizeof(Query),\r
+        pDevDesc,\r
+        DevDescHeader.Size,\r
+        &dwBytes,\r
+        NULL);\r
+    if (!bRet)\r
+    {\r
+        Log("DeviceIoControl2 error:%u dwBytes:%u", LASTERR, dwBytes);\r
+        free(pDevDesc);\r
+        goto out;\r
+    }\r
+\r
+\r
+\r
+    memset(&Query, 0, sizeof(STORAGE_PROPERTY_QUERY));\r
+    Query.PropertyId = StorageAccessAlignmentProperty;\r
+    Query.QueryType = PropertyStandardQuery;\r
+    memset(&diskAlignment, 0, sizeof(STORAGE_ACCESS_ALIGNMENT_DESCRIPTOR));\r
+\r
+    bRet = DeviceIoControl(Handle,\r
+        IOCTL_STORAGE_QUERY_PROPERTY,\r
+        &Query,\r
+        sizeof(STORAGE_PROPERTY_QUERY),\r
+        &diskAlignment,\r
+        sizeof(STORAGE_ACCESS_ALIGNMENT_DESCRIPTOR),\r
+        &dwBytes,\r
+        NULL);\r
+    if (!bRet)\r
+    {\r
+        Log("DeviceIoControl3 error:%u dwBytes:%u", LASTERR, dwBytes);\r
+    }\r
+\r
+    if (pPhyDrive->DeviceType != pDevDesc->DeviceType ||\r
+        pPhyDrive->RemovableMedia != pDevDesc->RemovableMedia ||\r
+        pPhyDrive->BusType != pDevDesc->BusType ||\r
+        pPhyDrive->BytesPerLogicalSector != diskAlignment.BytesPerLogicalSector ||\r
+        pPhyDrive->BytesPerPhysicalSector != diskAlignment.BytesPerPhysicalSector\r
+        )\r
+    {\r
+        Log("Some properties not match DeviceType[%u %u] Removable[%u %u] BusType[%u %u] LogSec[%u %u] PhySec[%u %u]", \r
+            pPhyDrive->DeviceType, pDevDesc->DeviceType,\r
+            pPhyDrive->RemovableMedia, pDevDesc->RemovableMedia,\r
+            pPhyDrive->BusType, pDevDesc->BusType,\r
+            pPhyDrive->BytesPerLogicalSector, diskAlignment.BytesPerLogicalSector,\r
+            pPhyDrive->BytesPerPhysicalSector, diskAlignment.BytesPerPhysicalSector\r
+            );\r
+        goto out;\r
+    }\r
+\r
+    if (pDevDesc->VendorIdOffset)\r
+    {\r
+        safe_strcpy(VendorId, (char*)pDevDesc + pDevDesc->VendorIdOffset);\r
+        TrimString(VendorId);\r
+\r
+        if (strcmp(pPhyDrive->VendorId, VendorId))\r
+        {\r
+            Log("VendorId not match <%s %s>", pPhyDrive->VendorId, VendorId);\r
+            goto out;\r
+        }\r
+    }\r
+\r
+    if (pDevDesc->ProductIdOffset)\r
+    {\r
+        safe_strcpy(ProductId, (char*)pDevDesc + pDevDesc->ProductIdOffset);\r
+        TrimString(ProductId);\r
+\r
+        if (strcmp(pPhyDrive->ProductId, ProductId))\r
+        {\r
+            Log("ProductId not match <%s %s>", pPhyDrive->ProductId, ProductId);\r
+            goto out;\r
+        }\r
+    }\r
+\r
+    if (pDevDesc->ProductRevisionOffset)\r
+    {\r
+        safe_strcpy(ProductRev, (char*)pDevDesc + pDevDesc->ProductRevisionOffset);\r
+        TrimString(ProductRev);\r
+\r
+        if (strcmp(pPhyDrive->ProductRev, ProductRev))\r
+        {\r
+            Log("ProductRev not match <%s %s>", pPhyDrive->ProductRev, ProductRev);\r
+            goto out;\r
+        }\r
+    }\r
+\r
+    if (pDevDesc->SerialNumberOffset)\r
+    {\r
+        safe_strcpy(SerialNumber, (char*)pDevDesc + pDevDesc->SerialNumberOffset);\r
+        TrimString(SerialNumber);\r
+\r
+        if (strcmp(pPhyDrive->SerialNumber, SerialNumber))\r
+        {\r
+            Log("ProductRev not match <%s %s>", pPhyDrive->SerialNumber, SerialNumber);\r
+            goto out;\r
+        }\r
+    }\r
+\r
+    Log("PhyDrive%d ALL match, now continue", pPhyDrive->PhyDrive);\r
+\r
+    bRet = TRUE;\r
+\r
+out:\r
+    if (pDevDesc)\r
+    {\r
+        free(pDevDesc);\r
+    }\r
+\r
+    CHECK_CLOSE_HANDLE(Handle);\r
+\r
+    return bRet;\r
+}\r
 \r
 static HANDLE g_FatPhyDrive;\r
 static UINT64 g_Part2StartSec;\r
 \r
 static HANDLE g_FatPhyDrive;\r
 static UINT64 g_Part2StartSec;\r
index b09472564f65523c8a0c1208eeb79dece1c4c7f3..6106520d52cf3f9d37cfffc1088863cc295e3d0b 100644 (file)
@@ -253,6 +253,7 @@ int VentoyFillGpt(UINT64 DiskSizeBytes, VTOY_GPT_INFO *pInfo);
 BOOL IsVentoyLogicalDrive(CHAR DriveLetter);\r
 int GetRegDwordValue(HKEY Key, LPCSTR SubKey, LPCSTR ValueName, DWORD *pValue);\r
 int GetPhysicalDriveCount(void);\r
 BOOL IsVentoyLogicalDrive(CHAR DriveLetter);\r
 int GetRegDwordValue(HKEY Key, LPCSTR SubKey, LPCSTR ValueName, DWORD *pValue);\r
 int GetPhysicalDriveCount(void);\r
+BOOL VentoyPhydriveMatch(PHY_DRIVE_INFO* pPhyDrive);\r
 int GetAllPhysicalDriveInfo(PHY_DRIVE_INFO *pDriveList, DWORD *pDriveCount);\r
 int GetPhyDriveByLogicalDrive(int DriveLetter, UINT64*Offset);\r
 int GetVentoyVerInPhyDrive(const PHY_DRIVE_INFO *pDriveInfo, UINT64 Part2StartSector, CHAR *VerBuf, size_t BufLen, BOOL *pSecureBoot);\r
 int GetAllPhysicalDriveInfo(PHY_DRIVE_INFO *pDriveList, DWORD *pDriveCount);\r
 int GetPhyDriveByLogicalDrive(int DriveLetter, UINT64*Offset);\r
 int GetVentoyVerInPhyDrive(const PHY_DRIVE_INFO *pDriveInfo, UINT64 Part2StartSector, CHAR *VerBuf, size_t BufLen, BOOL *pSecureBoot);\r
@@ -388,4 +389,11 @@ PHY_DRIVE_INFO* CLI_PhyDrvInfo(void);
 #define VTSI_SUPPORT 1\r
 \r
 \r
 #define VTSI_SUPPORT 1\r
 \r
 \r
+#define WM_OFFSET        (WM_USER + 40)\r
+#define WM_WIDTH_CHANGE  (WM_OFFSET + 1)\r
+\r
+\r
+int ExpandDlg(HWND hParent, UINT uiID, int WidthDelta);\r
+int MoveDlg(HWND hParent, UINT uiID, int WidthDelta);\r
+\r
 #endif\r
 #endif\r
index 67f685fc071f8dabef76e9b029e5f4230d06b76a..0bbba21147ff917f2cf7484ad6d337895a916298 100644 (file)
Binary files a/Ventoy2Disk/Ventoy2Disk/Ventoy2Disk.rc and b/Ventoy2Disk/Ventoy2Disk/Ventoy2Disk.rc differ
index cfebec9cf04d18c14b54171fd5a25dcc7e832240..388b7b03ab628833310fc281cd4d2b7f1567847f 100644 (file)
Binary files a/Ventoy2Disk/Ventoy2Disk/WinDialog.c and b/Ventoy2Disk/Ventoy2Disk/WinDialog.c differ
index 32ec0093d0a7d51751b2b3d345fcb5448947e3bc..58e198fa5cf94e8d0897b381df6f1d7950299598 100644 (file)
Binary files a/Ventoy2Disk/Ventoy2Disk/resource.h and b/Ventoy2Disk/Ventoy2Disk/resource.h differ