FILE_FS_ATTRIBUTE_INFORMATION structure

The FILE_FS_ATTRIBUTE_INFORMATION structure is used to query attribute information for a file system.

Syntax

typedef struct _FILE_FS_ATTRIBUTE_INFORMATION {
  ULONG FileSystemAttributes;
  LONG  MaximumComponentNameLength;
  ULONG FileSystemNameLength;
  WCHAR FileSystemName[1];
} FILE_FS_ATTRIBUTE_INFORMATION, *PFILE_FS_ATTRIBUTE_INFORMATION;

Members

FileSystemAttributes

Bitmask of flags specifying attributes of the specified file system, as a compatible combination of the following flags.

Value Meaning
FILE_CASE_SENSITIVE_SEARCH (0x00000001) The file system supports case-sensitive file names.
FILE_CASE_PRESERVED_NAMES (0x00000002) The file system preserves the case of file names when it places a name on disk.
FILE_UNICODE_ON_DISK (0x00000004) The file system supports Unicode in file names.
FILE_PERSISTENT_ACLS (0x00000008) The file system preserves and enforces access control lists (ACLs).
FILE_FILE_COMPRESSION (0x00000010) The file system supports file-based compression. This flag is incompatible with the FILE_VOLUME_IS_COMPRESSED flag. This flag does not affect how data is transferred over the network.
FILE_VOLUME_QUOTAS (0x00000020) The file system supports per-user quotas.
FILE_SUPPORTS_SPARSE_FILES (0x00000040) The file system supports sparse files.
FILE_SUPPORTS_REPARSE_POINTS (0x00000080) The file system supports reparse points.
FILE_SUPPORTS_REMOTE_STORAGE (0x00000100) The file system supports remote storage.
FILE_RETURNS_CLEANUP_RESULT_INFO (0x00000200) On a successful cleanup operation, the file system returns information that describes additional actions taken during cleanup, such as deleting the file. File system filters can examine this information in their post-cleanup callback.
FILE_SUPPORTS_POSIX_UNLINK_RENAME (0x00000400) The file system supports POSIX-style delete and rename operations.
FILE_VOLUME_IS_COMPRESSED (0x00008000) The specified volume is a compressed volume. This flag is incompatible with the FILE_FILE_COMPRESSION flag. This does not affect how data is transferred over the network.
FILE_SUPPORTS_OBJECT_IDS (0x00010000) The file system supports object identifiers.
FILE_SUPPORTS_ENCRYPTION (0x00020000) The file system supports encryption.
FILE_NAMED_STREAMS (0x00040000) The file system supports named data streams for a file.
FILE_READ_ONLY_VOLUME (0x00080000) The specified volume is read-only.
FILE_SEQUENTIAL_WRITE_ONCE (0x00100000) The specified volume can be written to one time only. The write must be performed in sequential order.
FILE_SUPPORTS_TRANSACTIONS (0x00200000) The file system supports transaction processing.
FILE_SUPPORTS_HARD_LINKS (0x00400000) The file system supports direct links to other devices and partitions.
FILE_SUPPORTS_EXTENDED_ATTRIBUTES (0x00800000) The file system supports extended attributes (EAs).
FILE_SUPPORTS_OPEN_BY_FILE_ID (0x01000000) The file system supports open by file ID.
FILE_SUPPORTS_USN_JOURNAL (0x02000000) The file system supports update sequence number (USN) journals.
FILE_SUPPORTS_INTEGRITY_STREAMS (0x04000000) The file system supports integrity streams.
FILE_SUPPORTS_BLOCK_REFCOUNTING (0x08000000) The file system supports block cloning, that is, sharing logical clusters between files on the same volume. The file system reallocates on writes to shared clusters.
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 valid data length (VDL) do not store a valid data length and do not require that valid data be contiguous within a file.
FILE_DAX_VOLUME (0x20000000) The specified volume is a direct access (DAX) volume.
FILE_SUPPORTS_GHOSTING (0x40000000) The file system supports ghosting.

MaximumComponentNameLength

Maximum file name component length, in bytes, supported by the specified file system. A file name component is that portion of a file name between path separator characters (such as backslashes).

FileSystemNameLength

Length, in bytes, of the file system name. The value of this field must be greater than zero.

FileSystemName

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.

Remarks

This information can be queried in either of the following ways:

No specific access rights are required to query this information. Thus this information is available as long as the volume is accessed through an open handle to the volume itself, or to a file or directory on the volume.

The size of the buffer passed in the FileInformation parameter to FltQueryVolumeInformation or ZwQueryVolumeInformationFile must be at least sizeof(FILE_FS_ATTRIBUTE_INFORMATION). Because a maximum file system name length cannot be assumed (practically, the limit is 2^31 character points), a second call to one of these routines will be required once FileSystemNameLength is known.

This structure must be aligned on a LONG (4-byte) boundary.

Requirements

   
Header ntifs.h (include Ntifs.h, Fltkernel.h)

See also

ACL

FltQueryVolumeInformation

IRP_MJ_QUERY_VOLUME_INFORMATION

ZwQueryVolumeInformationFile