The inputs for this algorithm are: OperationOpen: The Open used in the request that may cause an oplock to break. OplockOpen: The Open originally used to request the oplock, per section . Flags: If unspecified it is considered to contain 0. Valid nonzero values are: PARENT_OBJECT This algorithm returns TRUE if the appropriate oplock key field of OperationOpen equals OplockOpen.TargetOplockKey, and FALSE otherwise. Pseudocode for the algorithm is as follows: If OperationOpen equals OplockOpen: Return TRUE. If both OperationOpen.TargetOplockKey and OperationOpen.ParentOplockKey are empty or both OplockOpen.TargetOplockKey and OplockKey.ParentOplockKey are empty: Return FALSE. If OplockOpen.TargetOplockKey is empty or does not contain PARENT_OBJECT and OperationOpen.TargetOplockKey is empty): Return FALSE. If Flags contains PARENT_OBJECT and OperationOpen.ParentOplockKey is empty: Return FALSE. If Flags contains PARENT_OBJECT: If OperationOpen.ParentOplockKey equals OplockOpen.TargetOplockKey: Return TRUE. Else: Return FALSE. EndIf Else: If OperationOpen.TargetOplockKey equals OplockOpen.TargetOplockKey: Return TRUE. Else: Return EndIf
EndIf Bias the and the last returned ranges so that they match the offset/length passed in, using the following algorithm: If OutputBufferIndex > 0: If OutputBuffer[0].FileOffset < InputBuffer.FileOffset: Set OutputBuffer[0].Length to OutputBuffer[0].Length - (InputBuffer.FileOffset -OutputBuffer[0].FileOffset). Set OutputBuffer[0].FileOffset to InputBuffer.FileOffset. EndIf If (OutputBuffer[OutputBufferIndex - 1].FileOffset + OutputBuffer[OutputBufferIndex - 1].Length) > (InputBuffer.FileOffset + InputBuffer.Length): Set OutputBuffer[OutputBufferIndex - 1].Length to InputBuffer.FileOffset + InputBuffer.Length - OutputBuffer[OutputBufferIndex - 1].FileOffset. EndIf Endif Upon successful completion of the operation, the object store MUST return: BytesReturned set to OutputBufferIndex * sizeof(FILE_ALLOCATED_RANGE_BUFFER). Status set to STATUS_SUCCESS. FSCTL_QUERY_FAT_BPB Support for this operation is optional. If the object store does not implement this functionality, this operation MUST be failed with STATUS_INVALID_DEVICE_REQUEST.<74> The server provides: Open: An Open of a DataFile or DirectoryFile. OutputBufferSize: The maximum number of bytes to return in OutputBuffer. On completion, the object MUST return: Status: An NTSTATUS code that specifies the result. OutputBuffer: An array of bytes that will return the first 0x24 bytes of sector zero, on a FAT volume. BytesReturned: The number of bytes returned in OutputBuffer. Pseudocode for the operation is as follows: If OutputBufferSize is less than 0x24, the operation MUST be failed with STATUS_BUFFER_TOO_SMALL. The operation will now copy the first 0x24 bytes of sector 0 of the storage device associated with Open.File.Volume into OutputBuffer.
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 <13> 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 local time 10 millisecond granularity Stored in UTC if available, else in 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 local time 2 second granularity Stored in UTC if available, else in local 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 <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].
10 millisecond granularity 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 local time 2 second granularity Stored in UTC if available, else in local 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 <17> Section 2.1.1.3: Only NTFS implements EAs. <18> Section 2.1.1.3: Only NTFS implements EAs. <19> Section 2.1.1.3: Only NTFS implements object IDs. <20> Section 2.1.1.3: Only NTFS implements object IDs. <21> Section 2.1.1.3: Only NTFS and UDFS implement named streams. <22> Section 2.1.1.3: ReFS and exFAT do not implement ShortNames. <23> Section 2.1.1.3: Only NTFS implements encryption. <24> Section 2.1.1.4: For ReFS, there will always be exactly one link per file or directory. <25> Section 2.1.1.4: On ReFS or exFAT, this field MUST be empty. <26> Section 2.1.1.5: Only NTFS supports compression. <27> Section 2.1.1.5: Only ReFS supports integrity. <28> Section 2.1.1.5: Only ReFS supports integrity. <29> Section 2.1.1.5: Only NTFS and UDFS support sparse files. <30> Section 2.1.1.5: Only NTFS supports encryption.
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 FILE_SUPPORTS_REMOTE_STORAGE 0x00000100 FILE_SUPPORTS_REPARSE_POINTS 0x00000080 Always Set Set if 3.0 format or higher volume FILE_SUPPORTS_SPARSE_FILES 0x00000040 Set if 3.0 format or higher volume FILE_VOLUME_QUOTAS 0x00000020 Set if 3.0 format or higher volume FILE_FILE_COMPRESSION 0x00000010 Set if volume
Server 2008 R2 * ClusterSize) for Windows 8 and Windows Server 2012 (((2^32) * ClusterSize) - 64K) for Windows 8.1, Windows Server 2012 R2, Windows 10, and Windows Server 2016 Technical Preview The physical format will support 16 exabytes. <124> Section 2.1.5.14.4: The following table describes the maximum file size supported by various Windows File Systems. ReFS NTFS FAT EXFAT UDFS CDFS MaximumFileSize * ClusterSize 16 TB for Windows 2000, Windows XP, Windows Server 2003, Windows Vista, Windows Server 2008, Windows 7, and Windows Server 2008 R2 * ClusterSize) 4 GB 16 exabytes 8 TB 8 TB
FSCTL_OFFLOAD_WRITE : Added object store check for byte range lock conflicts to the write operation pseudocode. Y Content update. FileAllocationInformation Added content for Windows 10 and Windows Server 2016 Technical Preview. Y Content update. FileEndOfFileInformation content for Windows 10 and Windows Server 2016 Technical Preview. Y Content update. FileRenameInformation 72410 : Added reference to section 2.1.4.2 in a processing rule for when Open.File contains open files. Y Content update. FileShortNameInformation 72410 : Added If Open.File.FileType is DirectoryFile condition to a processing rule and added reference to section 2.1.4.2 to another processing rule. Y Content update. Appendix A: Product Behavior Windows 10 to applicability list. Y Content update. 5 Appendix A: Product Behavior Updated product behavior for Windows 10 and Windows Server 2016 Technical Preview. Y Product behavior note updated.
Index A Abstract data 18 21 19 14 15 19 17 19 10 20 21 16 13 10 Algorithms - common 45 24 24 46 25 25 21 23 47 22 27 21 26 44 25 27 23 9 C 9 236 Common algorithms 45 24 24 46 25 25 21 23 47 22 27 21 26 44 25 27 23 D Data model - abstract 18 21 19 14 15 19 17 19 10 20 21 16 13 10 E Examples 221 221 F 9 G 7 H Higher-layer triggered events byte-range 88 89 87 72 directory 144 77 file information 145 169 48 system information 157
194 90 217 198 209 48 quota information 217 219 67 security information 164 196 69 I 222 222 9 21 7 N 8 O 9 P 222 223 R References 9 8 9 S Security 222 222 9 T 21 236 Triggered events byte-range 88 89 87 72 directory 144 77 file information 145 169 48 system information 157 194 90 217 198 209 48 quota information 217 219 67 security information 164 196 69 V 9 9