2.5.1 FileFsAttributeInformation

This information class is used to query attribute information for a file system.

A FILE_FS_ATTRIBUTE_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

FileSystemAttributes

MaximumComponentNameLength

FileSystemNameLength

FileSystemName (variable)

...

FileSystemAttributes (4 bytes): A 32-bit unsigned integer that contains a bitmask of flags that specify attributes of the specified file system as a combination of the following flags. The value of this field MUST be a bitwise OR of zero or more of the following with the exception that FILE_FILE_COMPRESSION and FILE_VOLUME_IS_COMPRESSED cannot both be set. Any flag values not explicitly mentioned here can be set to any value, and MUST be ignored.<139>

Value

Meaning

FILE_SUPPORTS_USN_JOURNAL

0x02000000

The file system implements a USN change journal.

FILE_SUPPORTS_OPEN_BY_FILE_ID

0x01000000

The file system supports opening a file by FileID or ObjectID.

FILE_SUPPORTS_EXTENDED_ATTRIBUTES

0x00800000

The file system persistently stores Extended Attribute information per file.

FILE_SUPPORTS_HARD_LINKS

0x00400000

The file system supports hard linking files.

FILE_SUPPORTS_TRANSACTIONS

0x00200000

The volume supports transactions.<140>

FILE_SEQUENTIAL_WRITE_ONCE

0x00100000

The underlying volume is write once.

FILE_READ_ONLY_VOLUME

0x00080000

If set, the volume has been mounted in read-only mode.

FILE_NAMED_STREAMS

0x00040000

The file system supports named streams.

FILE_SUPPORTS_ENCRYPTION

0x00020000

The file system supports the Encrypted File System (EFS).<141>

FILE_SUPPORTS_OBJECT_IDS

0x00010000

The file system supports object identifiers.

FILE_VOLUME_IS_COMPRESSED

0x00008000

The specified volume is a compressed volume. This flag is incompatible with the FILE_FILE_COMPRESSION flag.

FILE_SUPPORTS_REMOTE_STORAGE

0x00000100

The file system supports remote storage.<142>

FILE_SUPPORTS_REPARSE_POINTS

0x00000080

The file system supports reparse points.

FILE_SUPPORTS_SPARSE_FILES

0x00000040

The file system supports sparse files.

FILE_VOLUME_QUOTAS

0x00000020

The file system supports per-user quotas.

FILE_FILE_COMPRESSION

0x00000010

The file volume supports file-based compression. This flag is incompatible with the FILE_VOLUME_IS_COMPRESSED flag.

FILE_PERSISTENT_ACLS

0x00000008

The file system preserves and enforces access control lists (ACLs).

FILE_UNICODE_ON_DISK

0x00000004

The file system supports Unicode in file and directory names. This flag applies only to file and directory names; the file system neither restricts nor interprets the bytes of data within a file.

FILE_CASE_PRESERVED_NAMES

0x00000002

The file system preserves the case of file names when it places a name on disk.

FILE_CASE_SENSITIVE_SEARCH

0x00000001

The file system supports case-sensitive file names when looking up (searching for) file names in a directory.

FILE_SUPPORT_INTEGRITY_STREAMS

0x04000000

The file system supports integrity streams.

FILE_SUPPORTS_BLOCK_REFCOUNTING

0x08000000

The file system supports sharing logical clusters between files on the same volume. The file system reallocates on writes to shared clusters. Indicates that FSCTL_DUPLICATE_EXTENTS_TO_FILE is a supported operation.

FILE_SUPPORTS_SPARSE_VDL

0x10000000

The file system tracks whether each cluster of a file contains valid data (either from explicit file writes or automatic zeros) or invalid data (has not yet been written to or zeroed).

File systems that use Sparse VDL do not store a valid data length (section 2.4.44) and do not require that valid data be contiguous within a file.

MaximumComponentNameLength (4 bytes): A 32-bit signed integer that contains the maximum file name component length, in bytes, supported by the specified file system. The value of this field MUST be greater than zero and MUST be no more than 510.<143>

FileSystemNameLength (4 bytes): A 32-bit unsigned integer that contains the length, in bytes, of the file system name in the FileSystemName field. The value of this field MUST be greater than 0.

FileSystemName (variable): A variable-length Unicode field containing the name of the file system. This field is not null-terminated and MUST be handled as a sequence of FileSystemNameLength bytes. This field is intended to be informative only. A client SHOULD NOT infer file system type specific behavior from this field.<144>

This operation returns a status code as specified in section 2.2. Upon success, the status code returned by the function that processes this file system information class is STATUS_SUCCESS. The most common error codes are listed in the following table.

Error code

Meaning

STATUS_INFO_LENGTH_MISMATCH

0xC0000004

The specified information record length does not match the length that is required for the specified information class.

STATUS_BUFFER_OVERFLOW

0x80000005

The output buffer was filled before all of the file system information could be returned; only a portion of the FileSystemName field is returned.