]> wimlib.net Git - wimlib/blobdiff - include/wimlib.h
Update NEWS and documentation for WIMBoot
[wimlib] / include / wimlib.h
index d039895e6439e3d4439683c7a6c779f8181d7e5c..31fab04da4b9d5015a9807f2b5d7bd068bf55f5e 100644 (file)
@@ -10,7 +10,7 @@
  */
 
 /*
- * Copyright (C) 2012, 2013 Eric Biggers
+ * Copyright (C) 2012, 2013, 2014 Eric Biggers
  *
  * This file is part of wimlib, a library for working with WIM files.
  *
@@ -33,7 +33,7 @@
  *
  * @section sec_intro Introduction
  *
- * This is the documentation for the library interface of wimlib 1.6.1, a C
+ * This is the documentation for the library interface of wimlib 1.6.2, 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 6
 
 /** Patch version of the library (for example, the 5 in 1.2.5). */
-#define WIMLIB_PATCH_VERSION 1
+#define WIMLIB_PATCH_VERSION 2
 
 #ifdef __cplusplus
 extern "C" {
@@ -517,8 +517,10 @@ enum wimlib_progress_msg {
         * will not be valid. */
        WIMLIB_PROGRESS_MSG_WRITE_METADATA_BEGIN,
 
-       /** Confirms that the metadata resource for each image has successfully
-        * been writen to the WIM.  @p info will not be valid.  */
+       /** Confirms that per-image metadata has been successfully been written
+        * to the WIM file.  @p info will not be valid.  This message is paired
+        * with a preceding ::WIMLIB_PROGRESS_MSG_WRITE_METADATA_BEGIN message.
+        */
        WIMLIB_PROGRESS_MSG_WRITE_METADATA_END,
 
        /** wimlib_overwrite() has successfully renamed the temporary file to
@@ -537,8 +539,8 @@ enum wimlib_progress_msg {
 
        /** An integrity table is being calculated for the WIM being written.
         * @p info will point to ::wimlib_progress_info.integrity.  This message
-        * is only received (and may be received many times) when a WIM is being
-        * written with the flag ::WIMLIB_WRITE_FLAG_CHECK_INTEGRITY.  */
+        * is only received (and may be received many times) when a WIM file is
+        * being written with the flag ::WIMLIB_WRITE_FLAG_CHECK_INTEGRITY.  */
        WIMLIB_PROGRESS_MSG_CALC_INTEGRITY,
 
        /** Reserved.  */
@@ -1225,6 +1227,7 @@ struct wimlib_dir_entry {
 #define WIMLIB_REPARSE_TAG_DFS                 0x8000000A
 #define WIMLIB_REPARSE_TAG_DFSR                        0x80000012
 #define WIMLIB_REPARSE_TAG_FILTER_MANAGER      0x8000000B
+#define WIMLIB_REPARSE_TAG_WOF                 0x80000017
 #define WIMLIB_REPARSE_TAG_SYMLINK             0xA000000C
        /** If the file is a reparse point (FILE_ATTRIBUTE_DIRECTORY set in the
         * attributes), this will give the reparse tag.  This tells you whether
@@ -1379,6 +1382,22 @@ typedef int (*wimlib_iterate_lookup_table_callback_t)(const struct wimlib_resour
  */
 #define WIMLIB_ADD_FLAG_WINCONFIG              0x00000800
 
+/**
+ * Capture image as WIMBoot compatible.
+ *
+ * Note: this will not by itself change the compression type.  Before writing
+ * the WIM file, it's recommended to also do:
+ *
+ * \code
+ *     wimlib_set_output_compression_type(wim, WIMLIB_COMPRESSION_TYPE_XPRESS);
+ *     wimlib_set_output_chunk_size(wim, 4096);
+ * \endcode
+ *
+ * since that makes access to the data faster (at the cost of a worse
+ * compression ratio compared to the 32768-byte LZX chunks usually used).
+ */
+#define WIMLIB_ADD_FLAG_WIMBOOT                        0x00001000
+
 #define WIMLIB_ADD_IMAGE_FLAG_NTFS             WIMLIB_ADD_FLAG_NTFS
 #define WIMLIB_ADD_IMAGE_FLAG_DEREFERENCE      WIMLIB_ADD_FLAG_DEREFERENCE
 #define WIMLIB_ADD_IMAGE_FLAG_VERBOSE          WIMLIB_ADD_FLAG_VERBOSE
@@ -1392,6 +1411,8 @@ typedef int (*wimlib_iterate_lookup_table_callback_t)(const struct wimlib_resour
 #define WIMLIB_ADD_IMAGE_FLAG_NO_UNSUPPORTED_EXCLUDE \
                                                WIMLIB_ADD_FLAG_NO_UNSUPPORTED_EXCLUDE
 #define WIMLIB_ADD_IMAGE_FLAG_WINCONFIG                WIMLIB_ADD_FLAG_WINCONFIG
+#define WIMLIB_ADD_IMAGE_FLAG_WIMBOOT          WIMLIB_ADD_FLAG_WIMBOOT
+
 
 /** @} */
 /** @ingroup G_modifying_wims
@@ -1476,8 +1497,9 @@ typedef int (*wimlib_iterate_lookup_table_callback_t)(const struct wimlib_resour
 
 /** This is the extraction equivalent to ::WIMLIB_ADD_FLAG_RPFIX.  This forces
  * reparse-point fixups on, so absolute symbolic links or junction points will
- * be fixed to be absolute relative to the actual extraction root.  Reparse
- * point fixups are done by default if WIM_HDR_FLAG_RP_FIX is set in the WIM
+ * be fixed to be absolute relative to the actual extraction root.  Reparse-
+ * point fixups are done by default for wimlib_extract_image() and
+ * wimlib_extract_image_from_pipe() if WIM_HDR_FLAG_RP_FIX is set in the WIM
  * header.  This flag cannot be combined with ::WIMLIB_EXTRACT_FLAG_NORPFIX.  */
 #define WIMLIB_EXTRACT_FLAG_RPFIX                      0x00000100
 
@@ -1547,10 +1569,13 @@ typedef int (*wimlib_iterate_lookup_table_callback_t)(const struct wimlib_resour
 
 /** For wimlib_extract_paths() and wimlib_extract_pathlist() only:  Do not
  * preserve the directory structure of the archive when extracting --- that is,
- * place each extracted files or directory tree directly in the target
- * directory.  */
+ * place each extracted file or directory tree directly in the target directory.
+ */
 #define WIMLIB_EXTRACT_FLAG_NO_PRESERVE_DIR_STRUCTURE  0x00200000
 
+/** Windows only: Extract files as "pointers" back to the WIM archive.  */
+#define WIMLIB_EXTRACT_FLAG_WIMBOOT                    0x00400000
+
 /** @} */
 /** @ingroup G_mounting_wim_images
  * @{ */
@@ -1625,6 +1650,11 @@ typedef int (*wimlib_iterate_lookup_table_callback_t)(const struct wimlib_resour
 /** Do a "lazy" unmount (detach filesystem immediately, even if busy).  */
 #define WIMLIB_UNMOUNT_FLAG_LAZY                       0x00000010
 
+/** In combination with ::WIMLIB_UNMOUNT_FLAG_COMMIT for a read-write mounted
+ * image, causes the modified image to be committed as a new, unnamed image
+ * appended to the archive.  The original image will be unmodified.  */
+#define WIMLIB_UNMOUNT_FLAG_NEW_IMAGE                  0x00000020
+
 /** @} */
 /** @ingroup G_modifying_wims
  * @{ */
@@ -1965,6 +1995,7 @@ enum wimlib_error_code {
        WIMLIB_ERR_WRITE,
        WIMLIB_ERR_XML,
        WIMLIB_ERR_WIM_IS_ENCRYPTED,
+       WIMLIB_ERR_WIMBOOT,
 };
 
 
@@ -2269,7 +2300,7 @@ wimlib_export_image(WIMStruct *src_wim, int src_image,
  *
  * As of wimlib v1.6.1, this function is deprecated in favor of
  * wimlib_extract_paths() because wimlib_extract_paths() is easier to use and
- * usually more efficient.
+ * more efficient.
  *
  * Notes: wimlib_extract_files() does not support the
  * ::WIMLIB_EXTRACT_FLAG_GLOB_PATHS flag, and
@@ -2394,6 +2425,9 @@ wimlib_extract_files(WIMStruct *wim,
  *     names is not supported --- on Windows, this occurs if the target volume
  *     does not support short names, while on non-Windows, this occurs if
  *     ::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.
  * @retval ::WIMLIB_ERR_WRITE
  *     Failed to write data to a file being extracted.
  */