ventoy_fs_ext, /* 2: ext2/ext3/ext4 */
ventoy_fs_xfs, /* 3: XFS */
ventoy_fs_udf, /* 4: UDF */
+ ventoy_fs_fat, /* 5: FAT */
ventoy_fs_max
}ventoy_fs_type;
+typedef enum ventoy_chain_type
+{
+ ventoy_chain_linux = 0, /* 0: linux */
+ ventoy_chain_windows, /* 1: windows */
+ ventoy_chain_wim, /* 2: wim */
+
+ ventoy_chain_max
+}ventoy_chain_type;
+
#pragma pack(1)
typedef struct ventoy_guid
{
ventoy_guid guid;
- /* image sector size, currently this value is always 2048 */
+ /* image sector size, 2048/512 */
grub_uint32_t image_sector_size;
/* disk sector size, normally the value is 512 */
*
* vtoy_reserved[0]: vtoy_break_level
* vtoy_reserved[1]: vtoy_debug_level
+ * vtoy_reserved[2]: vtoy_chain_type 0:Linux 1:Windows 2:wimfile
+ * vtoy_reserved[3]: vtoy_iso_format 0:iso9660 1:udf
+ * vtoy_reserved[4]: vtoy_windows_cd_prompt
*
*/
grub_uint8_t vtoy_reserved[32]; // Internal use by ventoy
- grub_uint8_t reserved[31];
+ grub_uint8_t vtoy_disk_signature[4];
+
+ grub_uint8_t reserved[27];
}ventoy_os_param;
typedef struct ventoy_windows_data
{
char auto_install_script[384];
- grub_uint8_t reserved[128];
+ char injection_archive[384];
+ grub_uint8_t reserved[256];
}ventoy_windows_data;
#define ventoy_filt_register grub_file_filter_register
-typedef const char * (*grub_env_get_pf)(const char *name);
-
#pragma pack(1)
#define GRUB_FILE_REPLACE_MAGIC 0x1258BEEF
+typedef const char * (*grub_env_get_pf)(const char *name);
+typedef int (*grub_env_set_pf)(const char *name, const char *val);
+typedef int (*grub_env_printf_pf)(const char *fmt, ...);
+
typedef struct ventoy_grub_param_file_replace
{
grub_uint32_t magic;
typedef struct ventoy_grub_param
{
grub_env_get_pf grub_env_get;
-
+ grub_env_set_pf grub_env_set;
ventoy_grub_param_file_replace file_replace;
+ grub_env_printf_pf grub_env_printf;
}ventoy_grub_param;
#pragma pack()
-
+int grub_ext_get_file_chunk(grub_uint64_t part_start, grub_file_t file, ventoy_img_chunk_list *chunk_list);
int grub_fat_get_file_chunk(grub_uint64_t part_start, grub_file_t file, ventoy_img_chunk_list *chunk_list);
+void grub_iso9660_set_nojoliet(int nojoliet);
grub_uint64_t grub_iso9660_get_last_read_pos(grub_file_t file);
grub_uint64_t grub_iso9660_get_last_file_dirent_pos(grub_file_t file);
grub_uint64_t grub_udf_get_file_offset(grub_file_t file);