391 #include <inttypes.h>
398 #define WIMLIB_MAJOR_VERSION 1
401 #define WIMLIB_MINOR_VERSION 9
404 #define WIMLIB_PATCH_VERSION 2
414 #ifndef WIMLIB_WIMSTRUCT_DECLARED
416 #define WIMLIB_WIMSTRUCT_DECLARED
429 # define WIMLIB_WIM_PATH_SEPARATOR '\\'
430 # define WIMLIB_WIM_PATH_SEPARATOR_STRING L"\\"
434 # define WIMLIB_WIM_PATH_SEPARATOR '/'
435 # define WIMLIB_WIM_PATH_SEPARATOR_STRING "/"
440 #define WIMLIB_WIM_ROOT_PATH WIMLIB_WIM_PATH_SEPARATOR_STRING
444 #define WIMLIB_IS_WIM_ROOT_PATH(path) \
445 ((path)[0] == WIMLIB_WIM_PATH_SEPARATOR && \
449 #define WIMLIB_GUID_LEN 16
995 const wimlib_tchar *
to;
1244 #define WIMLIB_CHANGE_READONLY_FLAG 0x00000001
1248 #define WIMLIB_CHANGE_GUID 0x00000002
1252 #define WIMLIB_CHANGE_BOOT_INDEX 0x00000004
1260 #define WIMLIB_CHANGE_RPFIX_FLAG 0x00000008
1503 #define WIMLIB_FILE_ATTRIBUTE_READONLY 0x00000001
1504 #define WIMLIB_FILE_ATTRIBUTE_HIDDEN 0x00000002
1505 #define WIMLIB_FILE_ATTRIBUTE_SYSTEM 0x00000004
1506 #define WIMLIB_FILE_ATTRIBUTE_DIRECTORY 0x00000010
1507 #define WIMLIB_FILE_ATTRIBUTE_ARCHIVE 0x00000020
1508 #define WIMLIB_FILE_ATTRIBUTE_DEVICE 0x00000040
1509 #define WIMLIB_FILE_ATTRIBUTE_NORMAL 0x00000080
1510 #define WIMLIB_FILE_ATTRIBUTE_TEMPORARY 0x00000100
1511 #define WIMLIB_FILE_ATTRIBUTE_SPARSE_FILE 0x00000200
1512 #define WIMLIB_FILE_ATTRIBUTE_REPARSE_POINT 0x00000400
1513 #define WIMLIB_FILE_ATTRIBUTE_COMPRESSED 0x00000800
1514 #define WIMLIB_FILE_ATTRIBUTE_OFFLINE 0x00001000
1515 #define WIMLIB_FILE_ATTRIBUTE_NOT_CONTENT_INDEXED 0x00002000
1516 #define WIMLIB_FILE_ATTRIBUTE_ENCRYPTED 0x00004000
1517 #define WIMLIB_FILE_ATTRIBUTE_VIRTUAL 0x00010000
1524 #define WIMLIB_REPARSE_TAG_RESERVED_ZERO 0x00000000
1525 #define WIMLIB_REPARSE_TAG_RESERVED_ONE 0x00000001
1526 #define WIMLIB_REPARSE_TAG_MOUNT_POINT 0xA0000003
1527 #define WIMLIB_REPARSE_TAG_HSM 0xC0000004
1528 #define WIMLIB_REPARSE_TAG_HSM2 0x80000006
1529 #define WIMLIB_REPARSE_TAG_DRIVER_EXTENDER 0x80000005
1530 #define WIMLIB_REPARSE_TAG_SIS 0x80000007
1531 #define WIMLIB_REPARSE_TAG_DFS 0x8000000A
1532 #define WIMLIB_REPARSE_TAG_DFSR 0x80000012
1533 #define WIMLIB_REPARSE_TAG_FILTER_MANAGER 0x8000000B
1534 #define WIMLIB_REPARSE_TAG_WOF 0x80000017
1535 #define WIMLIB_REPARSE_TAG_SYMLINK 0xA000000C
1631 #define WIMLIB_ITERATE_DIR_TREE_FLAG_RECURSIVE 0x00000001
1635 #define WIMLIB_ITERATE_DIR_TREE_FLAG_CHILDREN 0x00000002
1642 #define WIMLIB_ITERATE_DIR_TREE_FLAG_RESOURCES_NEEDED 0x00000004
1658 #define WIMLIB_ADD_FLAG_NTFS 0x00000001
1662 #define WIMLIB_ADD_FLAG_DEREFERENCE 0x00000002
1667 #define WIMLIB_ADD_FLAG_VERBOSE 0x00000004
1677 #define WIMLIB_ADD_FLAG_BOOT 0x00000008
1683 #define WIMLIB_ADD_FLAG_UNIX_DATA 0x00000010
1687 #define WIMLIB_ADD_FLAG_NO_ACLS 0x00000020
1694 #define WIMLIB_ADD_FLAG_STRICT_ACLS 0x00000040
1700 #define WIMLIB_ADD_FLAG_EXCLUDE_VERBOSE 0x00000080
1709 #define WIMLIB_ADD_FLAG_RPFIX 0x00000100
1712 #define WIMLIB_ADD_FLAG_NORPFIX 0x00000200
1718 #define WIMLIB_ADD_FLAG_NO_UNSUPPORTED_EXCLUDE 0x00000400
1735 #define WIMLIB_ADD_FLAG_WINCONFIG 0x00000800
1765 #define WIMLIB_ADD_FLAG_WIMBOOT 0x00001000
1773 #define WIMLIB_ADD_FLAG_NO_REPLACE 0x00002000
1782 #define WIMLIB_ADD_FLAG_TEST_FILE_EXCLUSION 0x00004000
1794 #define WIMLIB_ADD_FLAG_SNAPSHOT 0x00008000
1804 #define WIMLIB_ADD_FLAG_FILE_PATHS_UNNEEDED 0x00010000
1811 #define WIMLIB_DELETE_FLAG_FORCE 0x00000001
1815 #define WIMLIB_DELETE_FLAG_RECURSIVE 0x00000002
1827 #define WIMLIB_EXPORT_FLAG_BOOT 0x00000001
1832 #define WIMLIB_EXPORT_FLAG_NO_NAMES 0x00000002
1835 #define WIMLIB_EXPORT_FLAG_NO_DESCRIPTIONS 0x00000004
1840 #define WIMLIB_EXPORT_FLAG_GIFT 0x00000008
1857 #define WIMLIB_EXPORT_FLAG_WIMBOOT 0x00000010
1872 #define WIMLIB_EXTRACT_FLAG_NTFS 0x00000001
1877 #define WIMLIB_EXTRACT_FLAG_UNIX_DATA 0x00000020
1881 #define WIMLIB_EXTRACT_FLAG_NO_ACLS 0x00000040
1892 #define WIMLIB_EXTRACT_FLAG_STRICT_ACLS 0x00000080
1902 #define WIMLIB_EXTRACT_FLAG_RPFIX 0x00000100
1907 #define WIMLIB_EXTRACT_FLAG_NORPFIX 0x00000200
1911 #define WIMLIB_EXTRACT_FLAG_TO_STDOUT 0x00000400
1922 #define WIMLIB_EXTRACT_FLAG_REPLACE_INVALID_FILENAMES 0x00000800
1932 #define WIMLIB_EXTRACT_FLAG_ALL_CASE_CONFLICTS 0x00001000
1937 #define WIMLIB_EXTRACT_FLAG_STRICT_TIMESTAMPS 0x00002000
1941 #define WIMLIB_EXTRACT_FLAG_STRICT_SHORT_NAMES 0x00004000
1947 #define WIMLIB_EXTRACT_FLAG_STRICT_SYMLINKS 0x00008000
1962 #define WIMLIB_EXTRACT_FLAG_GLOB_PATHS 0x00040000
1967 #define WIMLIB_EXTRACT_FLAG_STRICT_GLOB 0x00080000
1974 #define WIMLIB_EXTRACT_FLAG_NO_ATTRIBUTES 0x00100000
1982 #define WIMLIB_EXTRACT_FLAG_NO_PRESERVE_DIR_STRUCTURE 0x00200000
1990 #define WIMLIB_EXTRACT_FLAG_WIMBOOT 0x00400000
2000 #define WIMLIB_EXTRACT_FLAG_COMPACT_XPRESS4K 0x01000000
2004 #define WIMLIB_EXTRACT_FLAG_COMPACT_XPRESS8K 0x02000000
2008 #define WIMLIB_EXTRACT_FLAG_COMPACT_XPRESS16K 0x04000000
2012 #define WIMLIB_EXTRACT_FLAG_COMPACT_LZX 0x08000000
2019 #define WIMLIB_MOUNT_FLAG_READWRITE 0x00000001
2022 #define WIMLIB_MOUNT_FLAG_DEBUG 0x00000002
2025 #define WIMLIB_MOUNT_FLAG_STREAM_INTERFACE_NONE 0x00000004
2030 #define WIMLIB_MOUNT_FLAG_STREAM_INTERFACE_XATTR 0x00000008
2034 #define WIMLIB_MOUNT_FLAG_STREAM_INTERFACE_WINDOWS 0x00000010
2038 #define WIMLIB_MOUNT_FLAG_UNIX_DATA 0x00000020
2042 #define WIMLIB_MOUNT_FLAG_ALLOW_OTHER 0x00000040
2054 #define WIMLIB_OPEN_FLAG_CHECK_INTEGRITY 0x00000001
2059 #define WIMLIB_OPEN_FLAG_ERROR_IF_SPLIT 0x00000002
2069 #define WIMLIB_OPEN_FLAG_WRITE_ACCESS 0x00000004
2077 #define WIMLIB_UNMOUNT_FLAG_CHECK_INTEGRITY 0x00000001
2081 #define WIMLIB_UNMOUNT_FLAG_COMMIT 0x00000002
2085 #define WIMLIB_UNMOUNT_FLAG_REBUILD 0x00000004
2089 #define WIMLIB_UNMOUNT_FLAG_RECOMPRESS 0x00000008
2099 #define WIMLIB_UNMOUNT_FLAG_FORCE 0x00000010
2105 #define WIMLIB_UNMOUNT_FLAG_NEW_IMAGE 0x00000020
2113 #define WIMLIB_UPDATE_FLAG_SEND_PROGRESS 0x00000001
2127 #define WIMLIB_WRITE_FLAG_CHECK_INTEGRITY 0x00000001
2134 #define WIMLIB_WRITE_FLAG_NO_CHECK_INTEGRITY 0x00000002
2148 #define WIMLIB_WRITE_FLAG_PIPABLE 0x00000004
2154 #define WIMLIB_WRITE_FLAG_NOT_PIPABLE 0x00000008
2181 #define WIMLIB_WRITE_FLAG_RECOMPRESS 0x00000010
2196 #define WIMLIB_WRITE_FLAG_FSYNC 0x00000020
2210 #define WIMLIB_WRITE_FLAG_REBUILD 0x00000040
2221 #define WIMLIB_WRITE_FLAG_SOFT_DELETE 0x00000080
2232 #define WIMLIB_WRITE_FLAG_IGNORE_READONLY_FLAG 0x00000100
2240 #define WIMLIB_WRITE_FLAG_SKIP_EXTERNAL_WIMS 0x00000200
2243 #define WIMLIB_WRITE_FLAG_STREAMS_OK 0x00000400
2251 #define WIMLIB_WRITE_FLAG_RETAIN_GUID 0x00000800
2288 #define WIMLIB_WRITE_FLAG_SOLID 0x00001000
2295 #define WIMLIB_WRITE_FLAG_SEND_DONE_WITH_FILE_MESSAGES 0x00002000
2302 #define WIMLIB_WRITE_FLAG_NO_SOLID_SORT 0x00004000
2320 #define WIMLIB_WRITE_FLAG_UNSAFE_COMPACT 0x00008000
2329 #define WIMLIB_INIT_FLAG_ASSUME_UTF8 0x00000001
2339 #define WIMLIB_INIT_FLAG_DONT_ACQUIRE_PRIVILEGES 0x00000002
2346 #define WIMLIB_INIT_FLAG_STRICT_CAPTURE_PRIVILEGES 0x00000004
2353 #define WIMLIB_INIT_FLAG_STRICT_APPLY_PRIVILEGES 0x00000008
2357 #define WIMLIB_INIT_FLAG_DEFAULT_CASE_SENSITIVE 0x00000010
2361 #define WIMLIB_INIT_FLAG_DEFAULT_CASE_INSENSITIVE 0x00000020
2369 #define WIMLIB_REF_FLAG_GLOB_ENABLE 0x00000001
2378 #define WIMLIB_REF_FLAG_GLOB_ERR_ON_NOMATCH 0x00000002
2545 #define WIMLIB_NO_IMAGE 0
2548 #define WIMLIB_ALL_IMAGES (-1)
2582 const wimlib_tchar *name,
2638 const wimlib_tchar *source,
2639 const wimlib_tchar *name,
2640 const wimlib_tchar *config_file,
2657 const wimlib_tchar *name,
2658 const wimlib_tchar *config_file,
2672 const wimlib_tchar *fs_source_path,
2747 const wimlib_tchar *path,
int delete_flags);
2820 const wimlib_tchar *dest_name,
2821 const wimlib_tchar *dest_description,
2938 const wimlib_tchar *target,
int extract_flags);
2980 const wimlib_tchar *image_num_or_name,
2981 const wimlib_tchar *target,
int extract_flags);
2994 const wimlib_tchar *image_num_or_name,
2995 const wimlib_tchar *target,
3018 const wimlib_tchar *target,
3019 const wimlib_tchar *path_list_file,
3094 const wimlib_tchar *target,
3095 const wimlib_tchar *
const *paths,
3144 extern const wimlib_tchar *
3160 extern const wimlib_tchar *
3169 extern const wimlib_tchar *
3180 extern const wimlib_tchar *
3211 extern const wimlib_tchar *
3213 const wimlib_tchar *property_name);
3448 const wimlib_tchar *output_path,
3450 int wim_write_flags);
3466 const wimlib_tchar *output_path,
3468 int wim_write_flags,
3551 const wimlib_tchar *dir,
3553 const wimlib_tchar *staging_dir);
3783 const wimlib_tchar *
const *resource_wimfiles_or_globs,
3810 unsigned num_resource_wims,
int ref_flags);
3876 WIMStruct *template_wim,
int template_image,
3910 const wimlib_tchar *source_path,
const wimlib_tchar *dest_path);
3944 const wimlib_tchar *image_name_or_num);
3995 const wimlib_tchar *description);
4055 const wimlib_tchar *property_name,
4056 const wimlib_tchar *property_value);
4088 void (*free_func)(
void *),
4089 void *(*realloc_func)(
void *,
size_t));
4253 const wimlib_tchar *swm_name,
4507 const wimlib_tchar *path,
4510 unsigned num_threads);
4537 unsigned num_threads);
4556 struct wimlib_compressor;
4559 struct wimlib_decompressor;
4603 size_t max_block_size,
4604 unsigned int compression_level);
4606 #define WIMLIB_COMPRESSOR_FLAG_DESTRUCTIVE 0x80000000
4678 size_t max_block_size,
4679 unsigned int compression_level,
4680 struct wimlib_compressor **compressor_ret);
4703 wimlib_compress(
const void *uncompressed_data,
size_t uncompressed_size,
4704 void *compressed_data,
size_t compressed_size_avail,
4705 struct wimlib_compressor *compressor);
4751 size_t max_block_size,
4752 struct wimlib_decompressor **decompressor_ret);
4783 void *uncompressed_data,
size_t uncompressed_size,
4784 struct wimlib_decompressor *decompressor);