WofSetFileDataLocation function

Used to change a file from being backed by a physical file to one backed by a system data provider.

Syntax

HRESULT WofSetFileDataLocation(
  HANDLE FileHandle,
  ULONG  Provider,
  PVOID  ExternalFileInfo,
  ULONG  Length
);

Parameters

FileHandle

A handle to a file opened with CreateFile or a similar API.

Provider

Indicates which provider is backing this file. Currently defined providers are:

WOF_PROVIDER_WIM Indicates that the data for the file should be obtained from a WIM file. On access, data is transparently extracted from the WIM file and provided to applications. If the file contents are modified, data is transparently decompressed and the file is restored to the same physical form it had if this API were not used.
WOF_PROVIDER_FILE Indicates that the data for the file should be compressed and stored with the file itself. On access, data is transparently decompressed and provided to applications. If the file contents are modified, data is transparently decompressed and the file is restored to the same physical form it had if this API were not used. This provider requires Windows 10.

ExternalFileInfo

Provides data specific to the specified provider. Data structures for each defined provider are:

WOF_PROVIDER_WIM WIM_EXTERNAL_FILE_INFO
WOF_PROVIDER_FILE WOF_FILE_COMPRESSION_INFO

Length

Specifies the length of provider specific data, in bytes. This should correspond to the structures defined above:

WOF_PROVIDER_WIM sizeof(WIM_EXTERNAL_FILE_INFO)
WOF_PROVIDER_FILE sizeof(WOF_FILE_COMPRESSION_INFO)

Return Value

This function returns an HRESULT indicating success or the reason for failure.

Remarks

When using WOF_PROVIDER_FILE, the operation may fail with ERROR_COMPRESSION_NOT_BENEFICIAL. This indicates that an attempt was made to compress the data, but no disk space was saved, so the file was not compressed. For most applications, this can be treated as a success condition.

Requirements

   
Target Platform Windows
Header wofapi.h
Library Wofutil.lib
DLL Wofutil.dll

See Also

FSCTL_SET_EXTERNAL_BACKING