]> wimlib.net Git - wimlib/blobdiff - include/wimlib.h
add System Compression support
[wimlib] / include / wimlib.h
index 2dcbd12d3d7e7c545d9b61ebd87eefe644d27d39..63cc3e200c2b0e486a24ec65606019f3d18f7d15 100644 (file)
@@ -11,7 +11,7 @@
 /**
  * @mainpage
  *
- * This is the documentation for the library interface of wimlib 1.8.0, a C
+ * This is the documentation for the library interface of wimlib 1.8.1, a C
  * library for creating, modifying, extracting, and mounting files in the
  * Windows Imaging Format.  This documentation is intended for developers only.
  * If you have installed wimlib and want to know how to use the @b wimlib-imagex
 #define WIMLIB_MINOR_VERSION 8
 
 /** Patch version of the library (for example, the 5 in 1.2.5). */
-#define WIMLIB_PATCH_VERSION 0
+#define WIMLIB_PATCH_VERSION 1
 
 #ifdef __cplusplus
 extern "C" {
@@ -1298,21 +1298,27 @@ struct wimlib_wim_info {
         */
        uint32_t opened_from_file : 1;
 
-       /** 1 iff this WIM file is considered readonly for any reason. */
+       /** 1 iff this WIM file is considered readonly for any reason (e.g. the
+        * "readonly" header flag is set, or this is part of a split WIM, or
+        * filesystem permissions deny writing)  */
        uint32_t is_readonly : 1;
 
-       /** 1 iff reparse-point fixups are enabled for one or more images in
-        * this WIM file.  */
+       /** 1 iff the "reparse point fix" flag is set in this WIM's header  */
        uint32_t has_rpfix : 1;
 
-       /** 1 iff this WIM file is marked read-only in its header.  */
+       /** 1 iff the "readonly" flag is set in this WIM's header  */
        uint32_t is_marked_readonly : 1;
 
-       /** 1 iff this WIM file is part of a spanned set.  */
+       /** 1 iff the "spanned" flag is set in this WIM's header  */
        uint32_t spanned : 1;
 
+       /** 1 iff the "write in progress" flag is set in this WIM's header  */
        uint32_t write_in_progress : 1;
+
+       /** 1 iff the "metadata only" flag is set in this WIM's header  */
        uint32_t metadata_only : 1;
+
+       /** 1 iff the "resource only" flag is set in this WIM's header  */
        uint32_t resource_only : 1;
 
        /** 1 iff this WIM file is pipable (see ::WIMLIB_WRITE_FLAG_PIPABLE).  */
@@ -1938,6 +1944,30 @@ typedef int (*wimlib_iterate_lookup_table_callback_t)(const struct wimlib_resour
  */
 #define WIMLIB_EXTRACT_FLAG_WIMBOOT                    0x00400000
 
+/** EXPERIMENTAL and only works on Windows 10 and later: compress the extracted
+ * files using the System Compression feature (when possible).  System
+ * Compression is only supported by Windows 10 or later.  Several different
+ * compression formats may be used with System Compression; this particular flag
+ * selects the XPRESS compression format with 4096 byte chunks.  <b>This flag is
+ * currently experimental and may be changed or removed in future releases of
+ * wimlib.</b>  */
+#define WIMLIB_EXTRACT_FLAG_COMPACT_XPRESS4K           0x01000000
+
+/** Like ::WIMLIB_EXTRACT_FLAG_COMPACT_XPRESS4K, but use XPRESS compression with
+ * 8192 byte chunks.  <b>This flag is currently experimental and may be changed
+ * or removed in future releases of wimlib.</b>  */
+#define WIMLIB_EXTRACT_FLAG_COMPACT_XPRESS8K           0x02000000
+
+/** Like ::WIMLIB_EXTRACT_FLAG_COMPACT_XPRESS4K, but use XPRESS compression with
+ * 16384 byte chunks.  <b>This flag is currently experimental and may be changed
+ * or removed in future releases of wimlib.</b>  */
+#define WIMLIB_EXTRACT_FLAG_COMPACT_XPRESS16K          0x04000000
+
+/** Like ::WIMLIB_EXTRACT_FLAG_COMPACT_XPRESS4K, but use LZX compression with
+ * 32768 byte chunks.  <b>This flag is currently experimental and may be changed
+ * or removed in future releases of wimlib.</b>  */
+#define WIMLIB_EXTRACT_FLAG_COMPACT_LZX                        0x08000000
+
 /** @} */
 /** @addtogroup G_mounting_wim_images
  * @{ */
@@ -2451,6 +2481,7 @@ enum wimlib_error_code {
        WIMLIB_ERR_NOT_A_MOUNTPOINT                   = 80,
        WIMLIB_ERR_NOT_PERMITTED_TO_UNMOUNT           = 81,
        WIMLIB_ERR_FVE_LOCKED_VOLUME                  = 82,
+       WIMLIB_ERR_UNABLE_TO_READ_CAPTURE_CONFIG      = 83,
 };
 
 
@@ -2826,7 +2857,8 @@ wimlib_export_image(WIMStruct *src_wim, int src_image,
  *     ::WIMLIB_EXTRACT_FLAG_NTFS was not specified in @p extract_flags.
  * @retval ::WIMLIB_ERR_WIMBOOT
  *     ::WIMLIB_EXTRACT_FLAG_WIMBOOT was specified in @p extract_flags, but
- *     there was a problem creating WIMBoot pointer files.
+ *     there was a problem creating WIMBoot pointer files or registering a
+ *     source WIM file with the Windows Overlay Filesystem (WOF) driver.
  * @retval ::WIMLIB_ERR_WRITE
  *     Failed to write data to a file being extracted.
  *
@@ -4244,8 +4276,7 @@ wimlib_unmount_image_with_progress(const wimlib_tchar *dir,
  *     Windows-only: One of the "add" commands attempted to add files from an
  *     encrypted BitLocker volume that hasn't yet been unlocked.
  * @retval ::WIMLIB_ERR_INVALID_CAPTURE_CONFIG
- *     The capture configuration structure specified for an add command was
- *     invalid.
+ *     The contents of a capture configuration file were invalid.
  * @retval ::WIMLIB_ERR_INVALID_IMAGE
  *     @p image did not exist in @p wim.
  * @retval ::WIMLIB_ERR_INVALID_OVERLAY
@@ -4292,6 +4323,8 @@ wimlib_unmount_image_with_progress(const wimlib_tchar *dir,
  * @retval ::WIMLIB_ERR_STAT
  *     While executing an add command, failed to get attributes for a file or
  *     directory.
+ * @retval ::WIMLIB_ERR_UNABLE_TO_READ_CAPTURE_CONFIG
+ *     A capture configuration file could not be read.
  * @retval ::WIMLIB_ERR_UNSUPPORTED
  *     ::WIMLIB_ADD_FLAG_NTFS was specified in the @p add_flags for an update
  *     command, but wimlib was configured with the @c --without-ntfs-3g flag;