Revision Summary Date Revision History Revision Class Comments 4/3/2007 0.01 New Version 0.01 release 7/3/2007 1.0 Major MLonghorn+90 7/20/2007 2.0 Major Updated and revised the technical content. 8/10/2007 3.0 Major Updated and revised the technical content. 9/28/2007 4.0 Major Updated and revised the technical content. 10/23/2007 5.0 Updated and revised the technical content. 11/30/2007 5.0.1 Editorial Changed language and formatting in the technical content. 1/25/2008 5.0.2 Editorial Changed language and formatting in the technical content. 3/14/2008 5.0.3 Editorial Changed language and formatting in the technical content. 5/16/2008 6.0 Major Updated and revised the technical content. 6/20/2008 7.0 Major Updated and revised the technical content. 7/25/2008 8.0 Major Updated and revised the technical content.
8/29/2008 9.0 Major Updated and revised the technical content. 10/24/2008 10.0 Major Updated and revised the technical content. 12/5/2008 11.0 Major Updated and revised the technical content. 1/16/2009 12.0 Major Updated and revised the technical content. 2/27/2009 13.0 Major Updated and revised the technical content. 4/10/2009 14.0 Major Updated and revised the technical content. 5/22/2009 15.0 Updated and revised the technical content. 7/2/2009 16.0 Major Updated and revised the technical content. 8/14/2009 17.0 Major Updated and revised the technical content. 9/25/2009 18.0 Major Updated and revised the technical content. 11/6/2009 19.0 Major Updated and revised the technical content. 12/18/2009 20.0 Major Updated and revised the technical content. 1/29/2010 21.0 Major Updated and revised the
technical content. 3/12/2010 22.0 Major Updated and revised the technical content. 4/23/2010 23.0 Major Updated and revised the technical content. 6/4/2010 24.0 Updated and revised the technical content. 7/16/2010 25.0 Updated and revised the technical content. 8/27/2010 26.0 Major Updated and revised the technical content. 10/8/2010 27.0 Updated and revised the technical content. 11/19/2010 27.1 Minor Clarified the meaning of the technical content. 1/7/2011 27.1 None No changes to the meaning, language, or formatting of the technical content. 2/11/2011 28.0 Major Updated and revised the technical content. 3/25/2011 29.0 Major Updated and revised the technical content. 5/6/2011 30.0 Updated and revised the technical content. 6/17/2011 30.1 Minor Clarified the meaning of the
technical content. 9/23/2011 30.2 Minor Clarified the meaning of the technical content. 12/16/2011 31.0 Major Updated and revised the technical content. 3/30/2012 32.0 Major Updated and revised the technical content. 7/12/2012 33.0 Major Updated and revised the technical content. 10/25/2012 34.0 Major Updated and revised the technical content. 1/31/2013 35.0 Major Updated and revised the technical content. 8/8/2013 36.0 Major Updated and revised the technical content. 11/14/2013 36.0 None No changes to the meaning, language, or formatting of the technical content. 2/13/2014 37.0 Updated and revised the technical content. 5/15/2014 37.0 None No changes to the meaning, language, or formatting of the technical content. 6/30/2015 38.0 Major Significantly changed the technical content.
10/16/2015 39.0 Significantly changed the technical content. 7/14/2016 40.0 Major Significantly changed the technical content. 6/1/2017 41.0 Major Significantly changed the technical content. 9/15/2017 42.0 Major Significantly changed the technical content. 12/1/2017 43.0 Major Significantly changed the technical content. 3/16/2018 44.0 Major Significantly changed the technical content. 9/12/2018 45.0 Major Significantly changed the technical content.
Flags PathBuffer (variable) ... ReparseTag (4 bytes): A 32-bit unsigned integer value containing the that uniquely identifies the owner (that is, the implementer of the driver associated with this ReparseTag) of the reparse point. This value MUST be 0xA000000C. ReparseDataLength (2 bytes): A 16-bit unsigned integer value containing the size, in bytes, of the reparse data that follows the common portion of the REPARSE_DATA_BUFFER element. This value is the length of the data starting at the SubstituteNameOffset field (or the size of the PathBuffer field, in bytes, plus 12). Reserved (2 bytes): A 16-bit field. This field is not used. It SHOULD be set to 0 and MUST be ignored. SubstituteNameOffset (2 bytes): A 16-bit unsigned integer that contains the offset, in bytes, of the substitute name string in the PathBuffer array, computed as an offset from byte 0 of PathBuffer. Note that this offset is divided by 2 to get the array index. SubstituteNameLength (2 bytes): A 16-bit unsigned integer that contains the length, in bytes, of the substitute name string. If this string is null-terminated, SubstituteNameLength does not include the Unicode null character. PrintNameOffset (2 bytes): A 16-bit unsigned integer that contains the offset, in bytes, of the print name string in the PathBuffer array, computed as an offset from byte 0 of PathBuffer. Note that this offset is divided by 2 to get the array index. PrintNameLength (2 bytes): A 16-bit unsigned integer that contains the length, in bytes, of the print name string. If this string is null-terminated, PrintNameLength does not include the Unicode null character. Flags (4 bytes): A 32-bit field that specifies whether the substitute name is a full path name or a path name relative to the directory containing the symbolic link. This field contains one of the values in the following table. Value Meaning 0x00000000 The substitute name is a full path name. SYMLINK_FLAG_RELATIVE 0x00000001 The substitute name is a path name relative to the directory containing the symbolic link.
STATUS_INVALID_PIPE_STATE 0xC00000AD The data cannot be read in the current state of the specified pipe. STATUS_PIPE_BROKEN 0xC000014B The pipe operation has failed because the other end of the pipe has been closed. STATUS_INVALID_USER_BUFFER 0xC00000E8 An exception was raised accessing a user buffer. STATUS_INSUFFICIENT_RESOURCES 0xC000009A There were insufficient resources to complete the operation. STATUS_INVALID_DEVICE_REQUEST 0xC0000010 The type of the handle is not a pipe. STATUS_BUFFER_OVERFLOW 0x80000005 The data was too large for the specified buffer. This is a warning, not an error. Response contains information including available data length and data that fits into the buffer. For more information on named pipes, see . FSCTL_PIPE_WAIT Request The FSCTL_PIPE_WAIT Request requests that the server wait until either a time-out interval elapses or an instance of the specified named pipe is available for connection. 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
STATUS_INSUFFICIENT_RESOURCES 0xC000009A There were insufficient resources to complete the operation. STATUS_INVALID_DEVICE_REQUEST 0xC0000010 The type of the handle is not a pipe. FSCTL_PIPE_TRANSCEIVE Request The FSCTL_PIPE_TRANSCEIVE request is used to send and receive data from an open pipe. Any bytes in the FSCTL input buffer are written as a to the input buffer of the pipe server. The FSCTL input buffer does not have an associated structure. The buffer is a BLOB of bytes that are written into the associated pipe. FSCTL_PIPE_TRANSCEIVE Reply The FSCTL_PIPE_TRANSCEIVE response returns data from the pipe server's output buffer in the output buffer. This message returns a status code as specified in section . Upon success, the status code returned by the function that processes this is STATUS_SUCCESS. The most common error codes are listed in the following table. Error code Meaning STATUS_PIPE_DISCONNECTED 0xC00000B0 The specified named pipe is in the disconnected state. STATUS_INVALID_PIPE_STATE 0xC00000AD The pipe is not in the connected state or not in the message mode. STATUS_PIPE_BUSY 0xC00000AE The named pipe contains unread data. STATUS_INVALID_USER_BUFFER 0xC00000E8 An exception was raised while accessing a user buffer. STATUS_INSUFFICIENT_RESOURCES 0xC000009A There were insufficient resources to
If the file system of the containing the specified file or directory does not support the use of integrity, the request will not succeed. The error code returned in this situation varies, depending on the file system. This message does not contain additional data elements. FSCTL_GET_INTEGRITY_INFORMATION_Reply The FSCTL_GET_INTEGRITY_INFORMATION message returns the results of the and indicates the current integrity state of the file or directory. The FSCTL_GET_INTEGRITY_INFORMATION_BUFFER 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 ChecksumAlgorithm Reserved Flags ChecksumChunkSizeInBytes ClusterSizeInBytes 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 not configured to use integrity. CHECKSUM_TYPE_CRC64 0x0002 The file or directory is configured to use a checksum to provide integrity. All other values 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 not configured to use integrity. CHECKSUM_TYPE_CRC32 0x0001 The file or directory is configured to use a CRC32 checksum to provide integrity. CHECKSUM_TYPE_CRC64 0x0002 The file or directory is configured to use a CRC64 checksum to provide integrity. All other values Reserved for future use and MUST NOT be used.
Error code Meaning STATUS_INVALID_PARAMETER 0xC000000D The handle is not to a file or directory, or the input buffer's length is not equal to the size of a structure. STATUS_ACCESS_DENIED 0xC0000022 The handle was not opened with write data or write attribute access as well as restore access. STATUS_OBJECT_NAME_COLLISION 0xC0000035 The file or directory already has an object ID. STATUS_INVALID_DEVICE_REQUEST 0xC0000010 The file system does not support the use of object IDs. STATUS_MEDIA_WRITE_PROTECTED 0xC00000A2 The volume is and changes to it cannot be made.
... Size (4 bytes): A 32-bit unsigned integer that indicates the size, in bytes, of this data element. Flags (4 bytes): A 32-bit unsigned integer that indicates the flags to be set for this operation. Currently, no flags are defined. This field SHOULD be set to 0x00000000 and MUST be ignored. TokenTimeToLive (4 bytes): A 32-bit unsigned integer that contains the requested Time to Live (TTL) value in milliseconds for the generated Token. This value MUST be greater than or equal to 0x00000000. A value of 0x00000000 represents a default TTL interval.<67> Reserved (4 bytes): A 32-bit unsigned integer field that is reserved. This field SHOULD be set to 0x00000000 and MUST be ignored. FileOffset (8 bytes): A 64-bit unsigned integer that contains the file offset, in bytes, of the start of a range of bytes in a file from which to generate the Token. The value of this field MUST be greater than or equal to 0x0000000000000000 and MUST be aligned to a logical sector boundary on the volume. CopyLength (8 bytes): A 64-bit unsigned integer that contains the size, in bytes, of the requested range of the file from which to generate the Token. The value of this field MUST be greater than or equal to 0x0000000000000000 and MUST be aligned to a logical sector boundary on the volume.<68> FSCTL_OFFLOAD_READ Reply The FSCTL_OFFLOAD_READ Reply message returns the results of the . The FSCTL_OFFLOAD_READ_OUTPUT 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 Size Flags TransferLength ... Token (512 bytes) ... ... Size (4 bytes): A 32-bit unsigned integer that indicates the size, in bytes, of the returned data element. Flags (4 bytes): A 32-bit unsigned integer that indicates which flags were returned for this operation. Possible values for the flags follow. All unused bits are reserved for future use, SHOULD be set to 0, and MUST be ignored. Value Meaning
STATUS_NOT_SUPPORTED 0xC00000BB The file system indicates that the volume does not support the operation. STATUS_OFFLOAD_READ_FLT_NOT_SUPPORTED 0xC000A2A1 A file system filter on the server has not opted in for Offload Read support. STATUS_FILE_DELETED 0xC0000123 The specified data is not valid. STATUS_FILE_CLOSED 0xC0000128 The specified file handle is closed. STATUS_END_OF_FILE 0xC0000011 The file read starts beyond the End Of the File (EOF).<70> STATUS_INSUFFICIENT_RESOURCES 0xC000009A There were insufficient resources to complete the operation. STATUS_BUFFER_TOO_SMALL 0xC0000023 The input buffer is too small to contain an FSCTL_OFFLOAD_READ_INPUT data element. or The output buffer is too to contain an FSCTL_OFFLOAD_READ_OUTPUT data element. STATUS_DEVICE_FEATURE_NOT_SUPPORTED 0xC0000463 The storage device does not support offload read. STORAGE_OFFLOAD_TOKEN The STORAGE_OFFLOAD_TOKEN structure contains the to be used as a representation of the data contained within the portion of the file specified in the FSCTL_OFFLOAD_READ_INPUT data element at the time of the FSCTL_OFFLOAD_READ operation. This Token is used in FSCTL_OFFLOAD_READ and FSCTL_OFFLOAD_WRITE operations. The format of the data within this field is either vendor-specific or of a well-known type. The contents of this field MUST NOT be modified during subsequent operations.<71> The TokenType and TokenIdLength fields of STORAGE_OFFLOAD_TOKEN structure MUST be sent in big-endian format. The TokenId field is a stream of bytes and has no endian property. The STORAGE_OFFLOAD_TOKEN structure 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 TokenType Reserved TokenIdLength
match the length that is required for the specified information class. FileAllInformation This information class is used to query a collection of file information structures. A FILE_ALL_INFORMATION data element, defined as follows, is returned by the server. 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 BasicInformation (40 bytes) ... ... StandardInformation (24 bytes) ... ... InternalInformation ... EaInformation AccessInformation PositionInformation ... ModeInformation AlignmentInformation NameInformation (variable) ... BasicInformation (40 bytes): A structure specified in section 2.4.7.
FileIdGlobalTxDirectoryInformation This information class is used locally to query transactional visibility information for the files in a directory. This information class MAY be implemented for file systems that return the FILE_SUPPORTS_TRANSACTIONS flag in response to FileFsAttributeInformation specified in section . This information class MUST NOT be implemented for file systems that do not return that flag. When multiple FILE_ID_GLOBAL_TX_DIR_INFORMATION data elements are present in the buffer, each MUST be aligned on an 8-byte boundary. Any bytes inserted for alignment SHOULD be set to zero, and the receiver MUST ignore them. No padding is required following the last data element. A FILE_ID_GLOBAL_TX_DIR_INFORMATION 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 NextEntryOffset FileIndex CreationTime ... LastAccessTime ... LastWriteTime ... ChangeTime ... EndOfFile ... AllocationSize ... FileAttributes FileNameLength FileId ... LockingTransactionId (16 bytes)
STATUS_INVALID_PARAMETER 0xC000000D The file specified is not a valid parameter. STATUS_NO_SUCH_FILE 0xC000000F The file does not exist. STATUS_NO_MORE_FILES 0x80000006 No more files were found which match the file specification. STATUS_BUFFER_OVERFLOW 0x80000005 The output buffer was filled before all of the ObjectID information could be returned. Only complete FILE_OBJECTID_INFORMATION structures are returned. FILE_OBJECTID_INFORMATION_TYPE_1 A FILE_OBJECTID_INFORMATION_TYPE_1 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 FileReferenceNumber ... ObjectId (16 bytes) ... ... BirthVolumeId (16 bytes) ... ... BirthObjectId (16 bytes) ... ... DomainId (16 ... ...
Index A 45 24 15 B 45 27 C 199 82 175 27 16 D Data elements 26 22 24 16 27 16 85 Details 16 E 178 48 58 F 47 Fields 16 15 15 172 103 158 105 107 108 122 149 94 95 95 123 136 26 26 173 22 22 23 141 142 147 147 70 150 151 83 105 108 108 109 109 111 113 114 116 117 118 159 161 170 164 164 165 166 167 168 169 118 120 122 124 127 129 132 FileLinkInformation packet ( 132, 133, 134) 135 135 137 138 139 140 143 144 146 150 152 153 154 154 155 156 37 157 27 29 29 30