2.1.1.1 Per Volume
The object store MUST implement the following persistent attributes:
RootDirectory: The DirectoryFile for the root of this volume.
IsPhysicalRoot: A Boolean that is TRUE if RootDirectory represents the root of the physical media format.
TotalSpace: A 64-bit unsigned integer specifying the total size of the volume in bytes. This value MUST be a multiple of ClusterSize.
FreeSpace: A 64-bit unsigned integer specifying the unallocated space of the volume in bytes. This value MUST be a multiple of ClusterSize.
ReservedSpace: A 64-bit unsigned integer specifying the amount of free space of the volume in bytes that is reserved for implementation-specific use and not available to callers. This value MUST be a multiple of ClusterSize and MUST be less than or equal to Volume.FreeSpace.
IsReadOnly: A Boolean that is TRUE if the volume is read-only and MUST NOT be modified; otherwise, the volume is both readable and writable.
IsQuotasSupported: A Boolean that is TRUE if the physical media format for this volume supports Quotas.
IsObjectIDsSupported: A Boolean that is TRUE if the physical media format for this volume supports ObjectIDs.
IsReparsePointsSupported: A Boolean that is TRUE if the physical media format for this volume supports ReparsePoints.
IsHardLinksSupported: A Boolean that is TRUE if the physical media format for this volume supports HardLinks. <1>
VolumeLabel: A 16-character Unicode string containing the name of the volume. An empty value is supported.
LogicalBytesPerSector: A 32-bit unsigned integer specifying the size of a sector for this volume in bytes. LogicalBytesPerSector MUST be a power of two and MUST be greater than or equal to 512 and less than or equal to Volume.SystemPageSize.
ClusterSize: A 32-bit unsigned integer specifying the size of a cluster for this volume in bytes. ClusterSize MUST be a power of two, and MUST be greater than or equal to LogicalBytesPerSector and a power-of-two multiple of LogicalBytesPerSector.<2>
PhysicalBytesPerSector: A 32-bit unsigned integer specifying the size of a physical sector for this volume in bytes. PhysicalBytesPerSector MUST be a power of two, MUST be greater than or equal to 512 and less than or equal to Volume.SystemPageSize, and MUST be greater than or equal to Volume.LogicalBytesPerSector.
PartitionOffset: A 64-bit unsigned integer specifying the byte offset used to align the partition to a physical sector boundary.
SystemPageSize: A 32-bit unsigned integer specifying the size, in bytes, of a page of memory in the system. This value is architecture dependent.<3>
VolumeCreationTime: The time the volume was formatted in the FILETIME format specified in [MS-FSCC] section 2.1.1.
VolumeSerialNumber: A 32-bit unsigned integer that contains a number, randomly generated at format time, to uniquely identify the volume.
VolumeCharacteristics: A bit field identifying various characteristics about the current volume as specified in [MS-FSCC] section 2.5.10.
CompressionUnitSize: A 32-bit unsigned integer specifying the compression unit size in bytes, which is the granularity used when compressing, encrypting, or sparsifying portions of a stream independent of other portions of the same stream. Not all file systems support these features, and implementation of this field is optional. If one or more of these features are supported, the value of this field is implementation-defined but MUST be a power of two multiple of ClusterSize.<4>
CompressedChunkSize: A 32-bit unsigned integer specifying the maximum size of each chunk in a compressed stream. Not all file systems support compression, and implementation of this field is optional. If compression is supported, the value of this field is implementation-defined but MUST be a power of two and MUST be less than or equal to CompressionUnitSize.<5>
ChecksumChunkSize: A 32-bit unsigned integer that specifies the size of each chunk in a stream that is configured with integrity. Not all file systems support integrity, and implementation of this field is optional.<6>
TunnelCacheList: A list of zero or more TunnelCacheEntry structures as defined in section 2.1.1.2 providing metadata about recently deleted or renamed files. The list could be empty if the object store does not implement tunnel caching or if there are no recently deleted or renamed files on this volume.
ChangeNotifyList: A list of zero or more ChangeNotifyEntry structures as defined in section 2.1.1.8 describing outstanding change notify requests for the volume.
GenerateShortNames: A Boolean that is TRUE if short name creation support is enabled on this Volume. FALSE if short name creation is not supported on this Volume.
QuotaInformation: A list of FILE_QUOTA_INFORMATION elements (as specified in [MS-FSCC] section 2.4.40) that track the total Stream.AllocationSize per SID where the File.SecurityDescriptor.Owner field is equal to the SID.<7>
DefaultQuotaThreshold: A 64-bit signed integer that contains the default per-user disk quota warning threshold in bytes. Not all file systems support this field, and implementation of this field is optional.
DefaultQuotaLimit: A 64-bit signed integer that contains the default per-user disk quota limit in bytes. Not all file systems support this field, and implementation of this field is optional.
VolumeQuotaState: A bitmask of flags defining the current quota state on the volume as specified in [MS-FSCC] section 2.5.2 under FileSystemControlFlags. Not all file systems support this field, and implementation of this field is optional.
VolumeId: A GUID as specified in [RFC4122]. This value MAY be NULL.
ExtendedInfo: A 48-byte structure containing extended VolumeId information, as described in [MS-FSCC] section 2.5.6.<8>
IsUsnJournalActive: A Boolean that is TRUE if a USN change journal is active on the volume.<9>
LastUsn: A 64-bit unsigned integer indicating the positive USN number of the last record written to the USN change journal on the volume, or 0 if no USN records have been written. If IsUsnJournalActive is FALSE, LastUsn MUST be 0.
IsOffloadReadSupported: A Boolean that is TRUE if the volume supports the FSCTL_OFFLOAD_READ operation. This bit is reset to TRUE at mount time, and is set to FALSE if an Offload Read operation fails for an implementation- or vendor-specific reason.
IsOffloadWriteSupported: A Boolean that is TRUE if the volume supports the FSCTL_OFFLOAD_WRITE operation. This bit is reset to TRUE at mount time, and is set to FALSE if an Offload Write operation fails for an implementation- or vendor-specific reason.
MaxFileSize: A 64-bit unsigned integer that denotes the maximum file size, in bytes, supported by the object store.<10>
The following fields are specific to UDF object stores:
DirectoryCount: A 64-bit signed integer that indicates the count of directories on the volume, or -1 if not maintained by the object store.
FileCount: A 64-bit signed integer that indicates the count of files on the volume, or -1 if not maintained by the object store.
FsFormatMajVersion: A 16-bit unsigned integer indicating the major version of the file system format.
FsFormatMinVersion: A 16-bit unsigned integer indicating the minor version of the file system format.
FormatTime: The time the volume was formatted in the FILETIME format specified in [MS-FSCC] section 2.1.1.
LastUpdateTime: The time the volume was last updated in the FILETIME format specified in [MS-FSCC] section 2.1.1.
CopyrightInfo: A 68-byte buffer containing any copyright info associated with the volume.
AbstractInfo: A 68-byte buffer containing any abstract info associated with the volume.
FormattingImplementationInfo: A 68-byte buffer containing implementation-specific information; this field MAY contain the operating system version that the media was formatted by.
LastModifyingImplementationInfo: A 68-byte buffer containing information written by the last implementation that modified the disk. This field is implementation-specific and MAY contain the operating system version that the media was last modified by.
SparingUnitBytes: A 32-bit unsigned integer indicating the size in bytes of a sparing unit.
SoftwareSparing: A Boolean that is TRUE if the volume’s bad block sparing mechanism is implemented in software, FALSE if bad block sparing is implemented by the underlying hardware this volume is on.
TotalSpareBlocks: A 32-bit unsigned integer indicating the total number of spare blocks.
FreeSpareBlocks: A 32-bit unsigned integer indicating the available number of spare blocks.
NumberOfDataCopies: A 32-bit unsigned integer indicating the number of copies of redundant data that are available on this volume. A volume with redundant copies of data MUST set this to 2 or greater. A volume without redundancy MUST have a value of 1. For example, a 2-way mirrored volume would have 2 copies and a 3-way mirrored volume would have 3 copies. Volumes configured with RAID should have a value of 2 or larger depending on which raid configuration is used.
The following fields are specific to the ReFS object store:
ClusterRefcount: An array of 16-bit unsigned integers. The array is indexed by the LCN (Logical Cluster Number) of a cluster. The array has one entry for each cluster on the volume. The value of each entry is the number of EXTENTS entries that point to the cluster in all the Stream.ExtentLists on the volume. The number of elements in the array is TotalSpace/ClusterSize If a given cluster's ClusterRefcount entry is zero, it is considered free and is available for reallocation.
Volatile Fields:
OpenFileList: A list of all the File objects opened on Volume.