Actually, calling deviceiocontrol + FSCTL_GET_EXTERNAL_BACKING OR using WofIsExternalFile function will actually achieve the same.
OutputBuffer [out] A pointer to the output buffer, which must have a size large enough to receive a WOF_EXTERNAL_INFO structure followed by the provider data. For WIM backed files, WOF_EXTERNAL_INFO is followed by a WIM_PROVIDER_EXTERNAL_INFO structure. For individually compressed files, WOF_EXTERNAL_INFO is followed by a FILE_PROVIDER_EXTERNAL_INFO_V1 structure.Currently I coded the autoit function assuming we would be looking at individually compressed files.
I could probably either code a new function to handle wim backed files or review the current function to detect what we are looking at and send back proper details.
For my tests, that means I need to create a wim file (using wimboot flag maybe?) and then mount it ?
EDIT : i checked and realised that WIM_PROVIDER_EXTERNAL_INFO and FILE_PROVIDER_EXTERNAL_INFO_V1 are the same stuctures.
So in theory, the current autoit function should work in both cases.
@Wimb : What error/behavior are you getting with wim backed files?
Thanks for the interesting info on WOF structures.
In case of WimBoot Install then for mounted VHD the REAL Files and WIM-backed Files (WOF Pointers) give WOF Status ($iReS) WOF = 0
and the 5 values in the Array of the Structure have value = 0 (as given by DllStructGetData($outbuffer, 1,4) - with 4 being 1 till 5 to get parameter 1 till 5)
which is not yet OK since the WimBoot WIM-Backed File (WOF Pointer) is reported as WOF=0 and this report might be improved.
In case of Compact Install then for mounted VHD the Compressed Files give WOF = 1 and Structure Array = 1, 2, 1, 1, 0 with LZX =1 on parameter 4
In case of UnCompressed files we get WOF = 0 and Structure Array = 0, 0, 0, 0, 0
The compact Install report is already OK.
WimBoot WIM-Backed WOF Pointer and WimBoot Real File = Compact LZX and UnCompressed file
WB WOF Pointer == WB Real File == Compact LZX == UnCompressed
Your proposal:
Review the current function to detect what we are looking at and send back proper details will be the best option.
To study WIM-Backed files you can use VHD_WIMBOOT to Capture in WimBoot mode and Apply the captured WIM file in WimBoot mode to VHD file (Unmounted)
Then use WOF_Compress to study files in Mounted VHD. Files will be Real files when Excluded by WimBootCompress.ini and otherwise they are WOF Pointers.