int ret;
struct wim_dentry *dentry;
- if (!wim_info_get_wimboot(ctx->common.wim->wim_info,
- ctx->common.wim->current_image))
+ if (!xml_get_wimboot(ctx->common.wim->xml_info,
+ ctx->common.wim->current_image))
WARNING("The WIM image is not marked as WIMBoot compatible. This usually\n"
" means it is not intended to be used to back a Windows operating\n"
" system. Proceeding anyway.");
ctx->attr.Length = sizeof(ctx->attr);
ctx->attr.RootDirectory = NULL;
ctx->attr.ObjectName = &ctx->target_ntpath;
+
+ /* Don't use FILE_OPEN_REPARSE_POINT here; we want the extraction to
+ * happen at the directory "pointed to" by the reparse point. */
status = (*func_NtCreateFile)(&ctx->h_target,
FILE_TRAVERSE,
&ctx->attr,
FILE_SHARE_VALID_FLAGS,
FILE_OPEN_IF,
FILE_DIRECTORY_FILE |
- FILE_OPEN_REPARSE_POINT |
FILE_OPEN_FOR_BACKUP_INTENT,
NULL,
0);
goto out;
}
- ctx->windows_build_number = wim_info_get_windows_build_number(ctx->common.wim->wim_info,
- ctx->common.wim->current_image);
+ ctx->windows_build_number = xml_get_windows_build_number(ctx->common.wim->xml_info,
+ ctx->common.wim->current_image);
dentry_count = count_dentries(dentry_list);