]> glassweightruler.freedombox.rocks Git - Ventoy.git/blobdiff - Ventoy2Disk/Ventoy2Disk/Ventoy2Disk.h
1.0.53 release
[Ventoy.git] / Ventoy2Disk / Ventoy2Disk / Ventoy2Disk.h
index 8407ae1420c4c4d0cf38b4c8c2c902c4e154a558..72c9a363a3996519de3dc1e784e0a28602c7fee4 100644 (file)
@@ -148,7 +148,7 @@ typedef struct PHY_DRIVE_INFO
     STORAGE_BUS_TYPE BusType;\r
 \r
     CHAR DriveLetters[64];\r
-\r
+   \r
     CHAR VentoyVersion[32];\r
 \r
     BOOL SecureBootSupport;\r
@@ -183,6 +183,7 @@ extern int g_ForceOperation;
 extern HWND g_ProgressBarHwnd;\r
 extern HFONT g_language_normal_font;\r
 extern HFONT g_language_bold_font;\r
+extern int g_FilterUSB;\r
 \r
 void Log(const char *Fmt, ...);\r
 BOOL IsPathExist(BOOL Dir, const char *Fmt, ...);\r
@@ -220,6 +221,7 @@ int INIT unxz(unsigned char *in, int in_size,
 void disk_io_set_param(HANDLE Handle, UINT64 SectorCount);\r
 INT_PTR CALLBACK PartDialogProc(HWND hWnd, UINT Message, WPARAM wParam, LPARAM lParam);\r
 int GetReservedSpaceInMB(void);\r
+int IsPartNeed4KBAlign(void);\r
 int FindProcessOccupyDisk(HANDLE hDrive, PHY_DRIVE_INFO *pPhyDrive);\r
 int VentoyFillMBRLocation(UINT64 DiskSizeInBytes, UINT32 StartSectorId, UINT32 SectorCount, PART_TABLE *Table);\r
 int ClearVentoyFromPhyDrive(HWND hWnd, PHY_DRIVE_INFO *pPhyDrive, char *pDrvLetter);\r
@@ -229,5 +231,67 @@ UINT32 VentoyCrc32(void *Buffer, UINT32 Length);
     liCurrentPosition.QuadPart = pos; \\r
     SetFilePointerEx(hDrive, liCurrentPosition, &liCurrentPosition, FILE_BEGIN)\\r
 \r
+#define SECURE_ICON_STRING _UICON(UNICODE_LOCK)\r
+\r
+extern int g_WriteImage;\r
+\r
+#define VTSI_IMG_MAGIC 0x0000594F544E4556ULL  // "VENTOY\0\0"\r
+\r
+#pragma pack(1)\r
+\r
+/*\r
+ +---------------------------------\r
+ + sector 0 ~ sector N-1\r
+ +     data area\r
+ +---------------------------------\r
+ + sector N ~ \r
+ +     segment[0]\r
+ +     segment[1]\r
+ +     segment[2]\r
+ +      ......\r
+ +     segment[M-1]\r
+ +     align data (aligned with 512)\r
+ +---------------------------------\r
+ +     footer\r
+ +---------------------------------\r
+ *\r
+ * All the integers are in little endian\r
+ * The sector size is fixed 512 for ventoy image file.\r
+ *\r
+ */\r
+\r
+#define VTSI_IMG_MAX_SEG   128\r
+\r
+typedef struct {\r
+    UINT64 disk_start_sector;\r
+    UINT64 sector_num;\r
+    UINT64 data_offset;\r
+}VTSI_SEGMENT;\r
+\r
+typedef struct {\r
+    UINT64 magic;\r
+    UINT32 version;\r
+    UINT64 disk_size;\r
+    UINT32 disk_signature;\r
+    UINT32 foot_chksum;\r
+\r
+    UINT32 segment_num;\r
+    UINT32 segment_chksum;\r
+    UINT64 segment_offset;\r
+\r
+    UINT8  reserved[512 - 44];\r
+}VTSI_FOOTER;\r
+#pragma pack()\r
+extern int __static_assert__[sizeof(VTSI_FOOTER) == 512 ? 1 : -1];\r
+\r
+\r
+#define SAFE_FREE(ptr) if (ptr) { free(ptr); (ptr) = NULL; }\r
+int InstallVentoy2FileImage(PHY_DRIVE_INFO *pPhyDrive, int PartStyle);\r
+void disk_io_set_imghook(FILE *fp, VTSI_SEGMENT *segment, int maxseg, UINT64 data_offset);\r
+void disk_io_reset_imghook(int *psegnum, UINT64 *pDataOffset);\r
+\r
+\r
+#define VTSI_SUPPORT 1\r
+\r
 \r
 #endif\r