2.3.89 FSCTL_SIS_COPYFILE Request

The FSCTL_SIS_COPYFILE request message requests that the server use the single-instance storage (SIS) filter to copy a file. The message contains an SI_COPYFILE data element.

If the SIS filter is installed on the server, it will attempt to copy the specified source file to the specified destination file by creating an SIS link instead of actually copying the file data. If necessary and allowed, the source file is placed under SIS control before the destination file is created.

This FSCTL can be issued against either a file or directory handle. The source and destination files MUST reside on the volume associated with the given handle.

The SI_COPYFILE data element is as follows.


0


1


2


3


4


5


6


7


8


9

1
0


1


2


3


4


5


6


7


8


9

2
0


1


2


3


4


5


6


7


8


9

3
0


1

SourceFileNameLength

DestinationFileNameLength

Flags

SourceFileName (variable)

...

DestinationFileName (variable)

...

SourceFileNameLength (4 bytes): A 32-bit unsigned integer that contains the size, in bytes, of the SourceFileName element, including a terminating-Unicode null character.

DestinationFileNameLength (4 bytes): A 32-bit unsigned integer that contains the size, in bytes, of the DestinationFileName element, including a terminating-Unicode null character.

Flags (4 bytes): A 32-bit unsigned integer that contains zero or more of the following flag values. Flag values not specified in the following table SHOULD be set to 0 and MUST be ignored.

Value

Meaning

COPYFILE_SIS_LINK

0x00000001

If this flag is set, only create the destination file if the source file is already under SIS control. If the source file is not under SIS control, the FSCTL returns STATUS_OBJECT_TYPE_MISMATCH.

If this flag is not specified, place the source file under SIS control (if it is not already under SIS control), and create the destination file.

COPYFILE_SIS_REPLACE

0x00000002

If this flag is set, create the destination file if it does not exist; if it does exist, overwrite it.

If this flag is not specified, create the destination file if it does not exist; if it does exist, the FSCTL returns STATUS_OBJECT_NAME_COLLISION.

SourceFileName (variable): A null-terminated Unicode string containing the source file name.

DestinationFileName (variable): A null-terminated Unicode string containing the destination file name.<85>