*/
/*
- * 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.
*
*
* @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" {
* 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
/** 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. */
#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
* scanned. */
#define WIMLIB_ADD_FLAG_VERBOSE 0x00000004
-/** Mark the image being added as the bootable image of the WIM. */
+/** Mark the image being added as the bootable image of the WIM. Not valid for
+ * wimlib_update_image(). */
#define WIMLIB_ADD_FLAG_BOOT 0x00000008
/** Store the UNIX owner, group, and mode. This is done by adding a special
*/
#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
#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
/** 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
/** 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
* @{ */
/** 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
* @{ */
/** @ingroup G_nonstandalone_wims
* @{ */
-/** wimlib_reference_resource_files() only: Enable shell-style filename
- * globbing. */
+/** For wimlib_reference_resource_files(), enable shell-style filename globbing.
+ * Ignored by wimlib_reference_resources(). */
#define WIMLIB_REF_FLAG_GLOB_ENABLE 0x00000001
-/** wimlib_reference_resource_files() only: Issue an error
+/** For wimlib_reference_resource_files(), issue an error
* (::WIMLIB_ERR_GLOB_HAD_NO_MATCHES) if a glob did not match any files. The
* default behavior without this flag is to issue no error at that point, but
* then attempt to open the glob as a literal path, which of course will fail
* anyway if no file exists at that path. No effect if
- * ::WIMLIB_REF_FLAG_GLOB_ENABLE is not also specified. */
+ * ::WIMLIB_REF_FLAG_GLOB_ENABLE is not also specified. Ignored by
+ * wimlib_reference_resources(). */
#define WIMLIB_REF_FLAG_GLOB_ERR_ON_NOMATCH 0x00000002
/** @} */
WIMLIB_ERR_WRITE,
WIMLIB_ERR_XML,
WIMLIB_ERR_WIM_IS_ENCRYPTED,
+ WIMLIB_ERR_WIMBOOT,
};
*
* 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
* 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.
*/
extern const wimlib_tchar *
wimlib_get_image_name(const WIMStruct *wim, int image);
+/**
+ * @ingroup G_general
+ *
+ * Returns the version of wimlib as a 32-bit number whose top 12 bits contain
+ * the major version, the next 10 bits contain the minor version, and the low 10
+ * bits contain the patch version.
+ *
+ * In other words, the returned value is equal to <code>((WIMLIB_MAJOR_VERSION
+ * << 22) | (WIMLIB_MINOR_VERSION << 10) | WIMLIB_PATCH_VERSION)</code> for the
+ * corresponding header file.
+ */
+extern uint32_t
+wimlib_get_version(void);
/**
* @ingroup G_wim_information