+ * as adding a driver or Windows component. Such a tool could be implemented
+ * on top of wimlib.
+ *
+ * @subsection more_info More information
+ *
+ * You are advised to read the README as well as the manual pages for
+ * <b>wimlib-imagex</b>, since not all relevant information is repeated here in
+ * the API documentation.
+ */
+
+/** @defgroup G_general General
+ *
+ * @brief Declarations and structures shared across the library.
+ */
+
+/** @defgroup G_creating_and_opening_wims Creating and Opening WIMs
+ *
+ * @brief Create new WIMs and open existing WIMs.
+ */
+
+/** @defgroup G_wim_information Retrieving WIM information and directory listings
+ *
+ * @brief Retrieve information about a WIM or WIM image.
+ */
+
+/** @defgroup G_modifying_wims Modifying WIMs
+ *
+ * @brief Make changes to a WIM.
+ *
+ * @section sec_adding_images Capturing and adding WIM images
+ *
+ * As described in @ref sec_basic_wim_handling_concepts, capturing a new WIM or
+ * appending an image to an existing WIM is a multi-step process, but at its
+ * core is wimlib_add_image() or an equivalent function. Normally,
+ * wimlib_add_image() takes an on-disk directory tree and logically adds it to a
+ * ::WIMStruct as a new image. However, when supported by the build of the
+ * library, there is also a special NTFS volume capture mode (entered when
+ * ::WIMLIB_ADD_FLAG_NTFS is specified) that allows adding the image directly
+ * from an unmounted NTFS volume.
+ *
+ * Another function, wimlib_add_image_multisource() is also provided. It
+ * generalizes wimlib_add_image() to allow combining multiple files or directory
+ * trees into a single WIM image in a configurable way.
+ *
+ * For maximum customization of WIM image creation, it is also possible to add a
+ * completely empty WIM image with wimlib_add_empty_image(), then update it with
+ * wimlib_update_image(). (This is in fact what wimlib_add_image() and
+ * wimlib_add_image_multisource() do internally.)
+ *
+ * Note that some details of how image addition/capture works are documented
+ * more fully in the manual page for <b>wimlib-imagex capture</b>.
+ *
+ * @section sec_deleting_images Deleting WIM images
+ *
+ * wimlib_delete_image() can delete an image from a ::WIMStruct. But as usual,
+ * wimlib_write() or wimlib_overwrite() must be called to cause the changes to
+ * be made persistent in an on-disk WIM file.
+ *
+ * @section sec_exporting_images Exporting WIM images
+ *
+ * wimlib_export_image() can copy, or "export", an image from one WIM to
+ * another.
+ *
+ * @section sec_other_modifications Other modifications
+ *
+ * wimlib_update_image() can add, delete, and rename files in a WIM image.
+ *
+ * wimlib_set_image_name(), wimlib_set_image_descripton(), and
+ * wimlib_set_image_flags() can change other image metadata.
+ *
+ * wimlib_set_wim_info() can change information about the WIM file itself, such
+ * as the boot index.
+ */
+
+/** @defgroup G_extracting_wims Extracting WIMs
+ *
+ * @brief Extract files, directories, and images from a WIM.
+ *
+ * wimlib_extract_image() extracts, or "applies", an image from a WIM
+ * (represented, as usual, by a ::WIMStruct). This normally extracts the image
+ * to a directory, but when supported by the build of the library there is also
+ * a special NTFS volume extraction mode (entered when
+ * ::WIMLIB_EXTRACT_FLAG_NTFS is specified) that allows extracting a WIM image
+ * directly to an unmounted NTFS volume. Various other flags allow further
+ * customization of image extraction.
+ *
+ * Another function, wimlib_extract_files(), is also provided. It can extract
+ * certain files or directories from a WIM image, instead of a full image.
+ *
+ * A third function, wimlib_extract_image_from_pipe(), allows an image to be
+ * extracted from a pipable WIM sent over a pipe; see @ref subsec_pipable_wims.
+ *
+ * Note that some details of how image extraction/application works are
+ * documented more fully in the manual pages for <b>wimlib-imagex apply</b> and
+ * <b>wimlib-imagex extract</b>.
+ */
+
+/** @defgroup G_mounting_wim_images Mounting WIM images
+ *
+ * @brief Mount and unmount WIM images.
+ *
+ * On UNIX-like systems supporting FUSE (such as Linux), wimlib supports
+ * mounting images from WIM files either read-only or read-write. To mount an
+ * image, call wimlib_mount_image(). To unmount an image, call
+ * wimlib_unmount_image(). Mounting can be done without root privileges because
+ * it is implemented using FUSE (Filesystem in Userspace). If wimlib is
+ * compiled with the <code>--without-fuse</code> flag, these functions will be
+ * available but will fail with ::WIMLIB_ERR_UNSUPPORTED. Note that mounting an
+ * image read-write is an alternative to calling wimlib_update_image().
+ */
+
+/** @defgroup G_progress Progress Messages
+ *
+ * @brief Track the progress of long WIM operations.
+ *
+ * When operating on large archives, operations such as extraction will
+ * naturally take a while to complete. Because of this and to improve the
+ * potential user-friendliness of library clients, a number of functions take a
+ * pointer to a progress function of type ::wimlib_progress_func_t. This
+ * function will be called periodically during the WIM operation(s) to report on
+ * the progress of the operation (for example, how many bytes have been written
+ * so far).
+ */
+
+/** @defgroup G_writing_and_overwriting_wims Writing and Overwriting WIMs
+ *
+ * @brief Write and overwrite on-disk WIM files.
+ *
+ * As described in @ref sec_basic_wim_handling_concepts, these functions are
+ * critical to the design of the library as they allow new or modified WIMs to
+ * actually be written to on-disk files. Generally, wimlib_write() is the
+ * function you need to call to write a new WIM file, and wimlib_overwrite() is
+ * the function you need to call to persistently update an existing WIM file.
+ */
+
+/** @defgroup G_nonstandalone_wims Creating and handling non-standalone WIMs
+ *
+ * @brief Create and handle non-standalone WIMs, such as split and delta WIMs.
+ *
+ * Normally, ::WIMStruct represents a WIM file, but there's a bit more to it
+ * than that. Normally, WIM files are "standalone". However, WIM files can
+ * also be arranged in non-standalone ways, such as a set of on-disk files that
+ * together form a single "split WIM" or "delta WIM". Such arrangements are
+ * fully supported by wimlib. However, as a result, in such cases a ::WIMStruct
+ * created from one of these on-disk files initially only partially represents
+ * the full WIM and needs to, in effect, be logically combined with other
+ * ::WIMStruct's before performing certain operations, such as extracting files
+ * with wimlib_extract_image() or wimlib_extract_files(). This is done by
+ * calling wimlib_reference_resource_files() or wimlib_reference_resources().
+ *
+ * wimlib_write() can create delta WIMs as well as standalone WIMs, but a
+ * specialized function (wimlib_split()) is needed to create a split WIM.
+ */
+
+/** @defgroup G_compression Compression and decompression functions
+ *
+ * @brief Functions for LZX and XPRESS compression and decompression, exported
+ * for convenience only. These functions normally do not need to be used.