/*
* wof.h
*
- * Definitions for the Windows Overlay File System Filter (WOF) ioctls, as well
+ * Definitions for the Windows Overlay Filesystem filter (WOF) ioctls, as well
* some definitions for associated undocumented data structures. See
* http://msdn.microsoft.com/en-us/library/windows/hardware/ff540367(v=vs.85).aspx
* for more information about the documented ioctls.
#include "wimlib/types.h"
/*
- * The Windows Overlay FileSystem Filter (WOF, a.k.a. wof.sys) is a filesystem
+ * The Windows Overlay Filesystem filter (WOF, a.k.a. wof.sys) is a filesystem
* filter driver, available in Windows 8.1 and later, which allows files to be
* "externally backed", meaning that their data is stored in another location,
* possibly in compressed form.
/* Set to 0x00000028 */
le32 unknown_0x08;
- /* Set to number of WIMs registered;
- * also the number of 'struct WimOverlay_dat_entry_1' that follow. */
- le32 num_entries_1;
+ /* Set to number of WIMs registered (listed in the file) */
+ le32 num_entries;
- /* Set to number of WIMs registered;
- * also the number of 'struct WimOverlay_dat_entry_2' that follow. */
- le32 num_entries_2;
-
- /* Set to 0 */
- le32 unknown_0x14;
+ /* The next available data source ID. This is tracked so that data
+ * source IDs are never reused, even if a WIM is unregistered. */
+ le64 next_data_source_id;
struct WimOverlay_dat_entry_1 entry_1s[];
} _packed_attribute;
} _packed_attribute;
} _packed_attribute;
-static inline void
+static _unused_attribute void
wof_check_structs(void)
{
- BUILD_BUG_ON(sizeof(struct WimOverlay_dat_header) != 24);
- BUILD_BUG_ON(sizeof(struct WimOverlay_dat_entry_1) != 40);
- BUILD_BUG_ON(sizeof(struct WimOverlay_dat_entry_2) != 104);
+ STATIC_ASSERT(sizeof(struct WimOverlay_dat_header) == 24);
+ STATIC_ASSERT(sizeof(struct WimOverlay_dat_entry_1) == 40);
+ STATIC_ASSERT(sizeof(struct WimOverlay_dat_entry_2) == 104);
}
/*****************************************************************************
*/
#define FSCTL_GET_EXTERNAL_BACKING 0x90310
+#define STATUS_OBJECT_NOT_EXTERNALLY_BACKED 0xC000046D
+
/*****************************************************************************
*
* --- FSCTL_DELETE_EXTERNAL_BACKING ---