grub_uint32_t count; /* Number of entries */
}wim_security_header;
+typedef struct wim_stream_entry
+{
+ grub_uint64_t len;
+ grub_uint64_t unused1;
+ wim_hash hash;
+ grub_uint16_t name_len;
+ /* name */
+}wim_stream_entry;
+
/* Directory entry */
typedef struct wim_directory_entry
{
return NULL;
}
+static grub_uint64_t ventoy_get_stream_len(wim_directory_entry *dir)
+{
+ grub_uint16_t i;
+ grub_uint64_t offset = 0;
+ wim_stream_entry *stream = (wim_stream_entry *)((char *)dir + dir->len);
+
+ for (i = 0; i < dir->streams; i++)
+ {
+ offset += stream->len;
+ stream = (wim_stream_entry *)((char *)stream + stream->len);
+ }
+
+ return offset;
+}
+
static int ventoy_update_all_hash(wim_patch *patch, void *meta_data, wim_directory_entry *dir)
{
if ((meta_data == NULL) || (dir == NULL))
{
ventoy_update_all_hash(patch, meta_data, (wim_directory_entry *)((char *)meta_data + dir->subdir));
}
-
- dir = (wim_directory_entry *)((char *)dir + dir->len);
+
+ if (dir->streams)
+ {
+ dir = (wim_directory_entry *)((char *)dir + dir->len + ventoy_get_stream_len(dir));
+ }
+ else
+ {
+ dir = (wim_directory_entry *)((char *)dir + dir->len);
+ }
} while (dir->len >= sizeof(wim_directory_entry));
return 0;
#############################################################
#############################################################
-set VENTOY_VERSION="1.0.39"
+set VENTOY_VERSION="1.0.40"
#ACPI not compatible with Window7/8, so disable by default
set VTOY_PARAM_NO_ACPI=1