Revision Summary Date Revision History Revision Class Comments 3/12/2010 0.1 Major First Release. 4/23/2010 0.1.1 Editorial Changed language and formatting in the technical content. 6/4/2010 1.0 Updated and revised the technical content. 7/16/2010 2.0 Major Updated and revised the technical content. 8/27/2010 3.0 Major Updated and revised the technical content. 10/8/2010 4.0 Updated and revised the technical content. 11/19/2010 5.0 Major Updated and revised the technical content. 1/7/2011 6.0 Updated and revised the technical content. 2/11/2011 6.0 None No changes to the meaning, language, or formatting of the technical content. 3/25/2011 6.0 None No changes to the
meaning, language, or formatting of the technical content. 5/6/2011 7.0 Major Updated and revised the technical content. 6/17/2011 8.0 Major Updated and revised the technical content. 9/23/2011 9.0 Updated and revised the technical content. 12/16/2011 10.0 Major Updated and revised the technical content. 3/30/2012 11.0 Updated and revised the technical content. 7/12/2012 12.0 Major Updated and revised the technical content. 10/25/2012 13.0 Major Updated and revised the technical content. 1/31/2013 14.0 Major Updated and revised the technical content. 8/8/2013 15.0 Major Updated and revised the technical content.
11/14/2013 16.0 Major Updated and revised the technical content. 2/13/2014 17.0 Updated and revised the technical content. 5/15/2014 18.0 Major Updated and revised the technical content. 6/30/2015 19.0 Major Significantly changed the technical content. 10/16/2015 20.0 Major Significantly changed the technical content. 3/2/2016 21.0 Major Significantly changed the technical content.
InputBuffer: An array of bytes containing a Boolean as specified in section 2.3.55. InputBufferSize: The number of in InputBuffer. On completion, the object store MUST return: Status: An NTSTATUS code that specifies the result. Support for this operation is optional. If the object does not implement this functionality or the target media is not a software defect-managed media, the operation MUST be failed with STATUS_INVALID_DEVICE_REQUEST.<88> Pseudocode for the operation is as follows: If Open.Stream.StreamType is DirectoryStream, the operation MUST be failed with STATUS_INVALID_PARAMETER. If InputBufferSize is less than sizeof(Boolean) (1 byte), the operation MUST be failed with STATUS_INVALID_PARAMETER. If Open.File.OpenList contains more than one Open on this stream, this operation MUST be failed with STATUS_SHARING_VIOLATION. The object MUST set Open.File.DisableDefectManagement to InputBuffer.Disable. Upon successful completion of the operation, the object store MUST return: Status set to STATUS_SUCCESS. FSCTL_SET_ENCRYPTION The server provides: Open: An Open of a DataFile or DirectoryFile. InputBuffer: An of bytes containing an ENCRYPTION_BUFFER structure indicating the requested encryption state of the stream or file, as specified in section 2.3.55. InputBufferSize: The number of bytes in InputBuffer. On completion, the object MUST return: Status: An NTSTATUS code that specifies the result. This operation uses the following local variables: Boolean value (initialized to FALSE): ChangedFileEncryption Support for this operation is optional. If the object store does not implement this functionality, the operation MUST be failed with STATUS_INVALID_DEVICE_REQUEST.<89> Pseudocode for the operation is as follows: If Open.File.Volume.IsReadOnly is TRUE, the operation MUST be failed with STATUS_MEDIA_WRITE_PROTECTED. If InputBufferSize is smaller than BlockAlign(sizeof(ENCRYPTION_BUFFER), 4), the operation MUST be failed with STATUS_BUFFER_TOO_SMALL. The operation MUST be failed with STATUS_INVALID_PARAMETER under any of the following conditions:
Open equal to this operation's Open. Oplock equal to Open.Stream.Oplock. Operation equal to "SET_INFORMATION". OpParams containing a member FileInformationClass containing FileRenameInformation. If the first character of InputBuffer.FileName is ':': Perform a stream rename according to the algorithm in section , setting the stream rename algorithm's parameters as follows: Pass in the current Open. ReplaceIfExists equal to InputBuffer.ReplaceIfExists. NewStreamName equal to InputBuffer.FileName. If the stream rename algorithm fails, the operation MUST fail with the same status code. The operation returns STATUS_SUCCESS at this point. EndIf If Open.Link.IsDeleted is TRUE, the operation MUST be failed with STATUS_ACCESS_DENIED. If Open.File.FileType is DirectoryFile, determine whether Open.File contains open per section , with input values as follows: File equal to Open.File. Open equal to this operation's Open. Operation to "SET_INFORMATION". OpParams containing a member FileInformationClass containing FileRenameInformation. If Open.File contains open files per section 2.1.4.2, the operation MUST be failed with STATUS_ACCESS_DENIED. If InputBuffer.FileName is not valid as specified in [MS-FSCC] section 2.1.5, the operation MUST be failed with STATUS_OBJECT_NAME_INVALID. If DestinationDirectory is the same as Open.Link.ParentFile: If NewLinkName is a case-sensitive exact match with Open.Link.Name, the operation MUST return STATUS_SUCCESS at this point. Else Set MoveToNewDir to TRUE. EndIf If NewLinkName matches the Name or ShortName of any Link in DestinationDirectory.DirectoryList using case-sensitivity according to Open.IsCaseInsensitive: Set FoundLink to TRUE. Set TargetLink to the existing Link found in DestinationDirectory.DirectoryList. Because the name could have been found using a case-insensitive search (if Open.IsCaseInsensitive is TRUE), this preserves the case of the found name.
100 nanosecond granularity 100 nanosecond granularity 2 second granularity available, else in local time 10 millisecond granularity available, else in local time 1 microsecond granularity <14> Section 2.1.1.3: The following table defines the support of file time stamps across various Windows file systems. More information can be found in section 6 of the File System Behavior Overview document [FSBO]. Timestamp ReFS NTFS FAT EXFAT UDFS CreationTime Stored in UTC 100 nanosecond granularity Stored in UTC 100 nanosecond granularity Stored in local time 10 millisecond granularity Stored in UTC if available, else in time 10 millisecond granularity Stored in UTC if available, else in local time 1 microsecond granularity LastAccessTime Stored in UTC 100 nanosecond granularity Updated at 60 minute granularity Stored in UTC 100 nanosecond granularity Updated at 60 minute granularity Stored in local time 1 day granularity Stored in UTC if available, else in time 2 second granularity Stored in UTC if available, else in time 1 microsecond granularity ChangeTime Stored in UTC 100 nanosecond granularity Stored in UTC 100 nanosecond granularity Not Supported Not Supported Stored in UTC if available, else in local time 1 microsecond granularity LastWriteTime Stored in UTC 100 nanosecond granularity Stored in UTC 100 nanosecond granularity Stored in local time 2 second granularity Stored in UTC if available, else in local time 10 millisecond granularity Stored in UTC if available, else in local time 1 microsecond granularity <15> Section 2.1.1.3: The following defines the support of file time stamps across various Windows file systems. More information can be found in section 6 of the File System Behavior Overview document [FSBO]. Timestamp ReFS NTFS FAT UDFS
<121> Section 2.1.5.12.5: The following table defines what FileSystemAttributes flags, as defined in [MS-FSCC] section 2.5.1, are set by various Windows file systems and why they are set: ReFS NTFS FAT EXFAT UDFS CDFS FILE_SUPPORTS_USN_JOURNAL 0x02000000 Always Set Set if 3.0 format or higher volume FILE_SUPPORTS_OPEN_BY_FILE_ID 0x01000000 Always Set Always Set Set if volume mounted Always Set FILE_SUPPORTS_EXTENDED_ATTRIBUTES 0x00800000 Always Set FILE_SUPPORTS_HARD_LINKS 0x00400000 Always Set Always Set FILE_SUPPORTS_TRANSACTIONS 0x00200000 Set if 3.0 format or higher volume FILE_SEQUENTIAL_WRITE_ONCE 0x00100000 Set if volume not mounted FILE_READ_ONLY_VOLUME 0x00080000 Set if volume mounted Set if volume mounted read-only Set if volume mounted Set if volume mounted Set if volume mounted Always Set FILE_NAMED_STREAMS 0x00040000 Always Set Set if 2.0 format or higher FILE_SUPPORTS_ENCRYPTION 0x00020000 Set if 3.0 format or higher volume and encryption is enabled on the system FILE_SUPPORTS_OBJECT_IDS 0x00010000 Set if 3.0 format or higher volume FILE_VOLUME_IS_COMPRESSED 0x00008000
Protocol syntax refers to data elements (such as packets, structures, enumerations, and methods) as well as interfaces. Protocol revision refers to changes made to a protocol that affect the bits that are sent over the wire. The changes made to this document are listed in the following table. For more information, please contact . Section Tracking number (if applicable) and description Major change (Y or N) Change type Abstract Data 72746 : Added ViewIndexFile and ViewIndexStream. Y Content update. Per Volume 72746 : Added IsPhysicalRoot ADM element. Y Content update. Per TunnelCacheEntry Added ObjectIdInfo and removed FileObjectId. Y Content update. Per File 72746 : Updated the description of the Filetype ADM element. Y Content update. 2.1.1.3 Per File Added ADM element DomainId. Y Content update. Per Stream 72746 : Updated the description of the StreamType ADM element. Y Content update. 2.1.1.5 Per Stream 72826 : Updated the product behavior note by stating that ReFS supports sparse files. Y Product behavior note updated. Per ChangeNotifyEntry 72746 : Updated the description of the OpenedDirectory ADM element. Y Content update. Per NotifyEventEntry Added ADM element FileNameLength and updated FileName. Y Content update. Algorithm for Reporting a Change Notification for a Directory or View Index Updated the processing rules for NotifyData and NotifyDataLength. Y Content update. AccessCheck -- Algorithm to Perform a General Access Check 72825 : Updated the initialization rules when creating a new Token. Y Content update. Server Requests an Open of a File : Updated the processing rules in Phases 5, 6, and 7. Y Content update. Creation of a New File Updated the processing for TunnelCacheEntry.ObjectIdInfo.ObjectId. Y Content update. Open of an Existing File : Updated the processing rules if FileTypeToOpen is set to ViewIndexFile. Y Content update. Server Requests Closing an Open 72746 : Updated the processing rules in Phase 5. Y Content update. 2.1.5.4 Server Requests Closing an Open Updated the processing rules for TunnelCacheEntry. Y Content update.
2.1.5.4 Server Requests Closing an Open : Clarified Phase1 - Delete on Close behavior. Y Content update. FSCTL_CREATE_OR_GET_OBJECT_ID 72746 : Updated the processing rules for sending a directory change notification. Y Content update. 2.1.5.9.1 FSCTL_CREATE_OR_GET_OBJECT_ID Updated the processing for creating a FILE_OBJECTID_INFORMATION structure. Y Content update. FSCTL_DELETE_OBJECT_ID 72746 : Updated the processing rules for sending a directory change notification. Y Content update. 2.1.5.9.2 FSCTL_DELETE_OBJECT_ID Updated the processing for creating a FILE_OBJECTID_INFORMATION structure. Y Content update. FSCTL_GET_OBJECT_ID Updated the processing rules for OutputBuffer.DomainId. Y Content update. FSCTL_SET_OBJECT_ID 72746 : Updated the processing rules for sending a directory change notification. Y Content update. 2.1.5.9.31 FSCTL_SET_OBJECT_ID Updated the processing rules for creating a FILE_OBJECTID_INFORMATION structure. Y Content update. Server Requests Change Notifications for a Directory 72746 : Updated the type of Open provided by the application. Y Content update. FileAllocationInformation : Clarified FAT/FAT32/exFAT/UDFS file allocation behavior different from NTFS/REFS. N New product behavior note added. FileRenameInformation Updated the processing rules for TunnelCacheEntry.ObjectIdInfo.ObjectId. Y Content update. 2.1.5.14.11 FileRenameInformation 73042 : Updated the processing rules for renaming a file. Y Content update. Server Requests an Oplock 72851 : Changed LEVEL_EXCLISIVE to LEVEL_ONE. Y Content update. Algorithm to Request an Exclusive Oplock 72850 : Changed Open.Stream.Oplock.State.RHBreakQueue to Open.Stream.Oplock.RHBreakQueue. Y Content update. 2.1.5.17.1 Algorithm to Request an Exclusive Oplock : Updated the processing rules if Open.Stream.Oplock.State is equal to LEVEL_TWO_OPLOCK. Y Content update.
201 71 I 227 227 9 21 7 N 8 O 9 P 227 228 R References 9 8 9 S Security 227 227 9 T 21 241 Triggered events byte-range 91 92 90 74 directory 147 79 file information 148 173 49 system information 160 200 93 222 203 214 48 quota information 222 224 69 security information 168 201 71 V 9 9