2.3.73 FSCTL_SET_INTEGRITY_INFORMATION Request
The FSCTL_SET_INTEGRITY_INFORMATION Request message requests that the server set the integrity state of the file or directory associated with the handle on which this FSCTL was invoked.<75>
If the file system of the volume containing the specified file or directory does not support integrity, the request MUST NOT succeed. The error code returned in this situation is specified in section 2.2.
The FSCTL_SET_INTEGRITY_INFORMATION_BUFFER element is as follows.
|
|
|
|
|
|
|
|
|
|
1 |
|
|
|
|
|
|
|
|
|
2 |
|
|
|
|
|
|
|
|
|
3 |
|
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
ChecksumAlgorithm |
Reserved |
||||||||||||||||||||||||||||||
Flags |
ChecksumAlgorithm (2 bytes): For ReFS v1, the field MUST be set to one of the following standard values.
-
Value
Meaning
CHECKSUM_TYPE_NONE
0x0000
The file or directory is set to not use integrity.
CHECKSUM_TYPE_CRC64
0x0002
The file or directory is set to provide integrity using a CRC64 checksum.
CHECKSUM_TYPE_UNCHANGED
0xFFFF
The integrity status of the file or directory is unchanged.
All other values
0x0003 — 0xFFFE
Reserved for future use and MUST NOT be used.
For ReFS v2, the field MUST be set to one of the following standard values.
-
Value
Meaning
CHECKSUM_TYPE_NONE
0x0000
The file or directory is set to not use integrity.
CHECKSUM_TYPE_CRC32
0x0001
The file or directory is set to provide integrity using a CRC32 or CRC64 checksum. If the ReFS cluster size is 4KB, the checksum used is CRC32; otherwise, if the cluster size is 64K, the CRC64 checksum is used.
CHECKSUM_TYPE_CRC64
0x0002
The file or directory is set to provide integrity using a CRC32 or CRC64 checksum. If the ReFS cluster size is 4KB, the checksum used is CRC32; otherwise, if the cluster size is 64K, the CRC64 checksum is used.
CHECKSUM_TYPE_UNCHANGED
0xFFFF
The integrity status of the file or directory is unchanged.
All other values
0x0003 — 0xFFFE
Reserved for future use and MUST NOT be used.
-
Note that for ReFS v2 any value except CHECKSUM_TYPE_NONE or CHECKSUM_TYPE_UNCHANGED will set the integrity value to a file-system-selected integrity mechanism and is not guaranteed to use the user specified checksum value.
Reserved (2 bytes): A 16-bit reserved value. This field MUST be set to zero and MUST be ignored.
Flags (4 bytes): A 32-bit unsigned integer that contains zero or more of the following flag values. Flag values that are unspecified in the following table SHOULD be set to 0 and MUST be ignored.
-
Value
Meaning
FSCTL_INTEGRITY_FLAG_CHECKSUM_ENFORCEMENT_OFF
0x00000001
When set, if a checksum does not match, the associated I/O operation will not be failed.