1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
use crate::sys;
bitflags::bitflags! {
/// Capability flags for a filesystem.
///
/// FILE_FILE_COMPRESSION and FILE_VOL_IS_COMPRESSED are mutually exclusive
#[repr(transparent)]
pub struct FileSystemFlags: sys::DWORD {
/// The specified volume supports case-sensitive file names.
const CASE_SENSITIVE_SEARCH = sys::FILE_CASE_SENSITIVE_SEARCH;
/// The specified volume supports preserved case of file names when it places a name on disk.
const CASE_PRESERVED_NAMES = sys::FILE_CASE_PRESERVED_NAMES;
/// The specified volume supports Unicode in file names as they appear on disk.
const UNICODE_ON_DISK = sys::FILE_UNICODE_ON_DISK;
/// The specified volume preserves and enforces access control lists (ACL).
///
/// For example, the NTFS file system preserves and enforces ACLs, and the FAT file system does not.
const PERSISTENT_ACLS = sys::FILE_PERSISTENT_ACLS;
/// The specified volume supports file-based compression.
const FILE_COMPRESSION = sys::FILE_FILE_COMPRESSION;
/// The specified volume supports disk quotas.
const VOLUME_QUOTAS = sys::FILE_VOLUME_QUOTAS;
/// The specified volume supports sparse files.
const SUPPORTS_SPARSE_FILES = sys::FILE_SUPPORTS_SPARSE_FILES;
/// The specified volume supports reparse points.
const SUPPORTS_REPARSE_POINTS = sys::FILE_SUPPORTS_REPARSE_POINTS;
/// ?
const SUPPORTS_REMOTE_STORAGE = sys::FILE_SUPPORTS_REMOTE_STORAGE;
/// ?
const RETURNS_CLEANUP_RESULT_INFO = sys::FILE_RETURNS_CLEANUP_RESULT_INFO;
/// ?
const SUPPORTS_POSIX_UNLINK_RENAME = sys::FILE_SUPPORTS_POSIX_UNLINK_RENAME;
/// The specified volume is a compressed volume, for example, a DoubleSpace volume.
const VOLUME_IS_COMPRESSED = sys::FILE_VOLUME_IS_COMPRESSED;
/// The specified volume supports object identifiers.
const SUPPORTS_OBJECT_IDS = sys::FILE_SUPPORTS_OBJECT_IDS;
/// The specified volume supports the Encrypted File System (EFS). For more information, see File Encryption.
const SUPPORTS_ENCRYPTION = sys::FILE_SUPPORTS_ENCRYPTION;
/// The specified volume supports named streams.
const NAMED_STREAMS = sys::FILE_NAMED_STREAMS;
/// The specified volume is read-only.
const READ_ONLY_VOLUME = sys::FILE_READ_ONLY_VOLUME;
/// The specified volume supports a single sequential write.
const SEQUENTIAL_WRITE_ONCE = sys::FILE_SEQUENTIAL_WRITE_ONCE;
/// The specified volume supports transactions. For more information, see About KTM.
const SUPPORTS_TRANSACTIONS = sys::FILE_SUPPORTS_TRANSACTIONS;
/// The specified volume supports hard links. For more information, see Hard Links and Junctions.
const FILE_SUPPORTS_HARD_LINKS = sys::FILE_SUPPORTS_HARD_LINKS;
/// The specified volume supports extended attributes.
///
/// An extended attribute is a piece of application-specific metadata that an application can associate with a file and is not part of the file's data.
const SUPPORTS_EXTENDED_ATTRIBUTES = sys::FILE_SUPPORTS_EXTENDED_ATTRIBUTES;
/// The file system supports open by FileID. For more information, see FILE_ID_BOTH_DIR_INFO.
const SUPPORTS_OPEN_BY_FILE_ID = sys::FILE_SUPPORTS_OPEN_BY_FILE_ID;
/// The specified volume supports update sequence number (USN) journals. For more information, see Change Journal Records.
const SUPPORTS_USN_JOURNAL = sys::FILE_SUPPORTS_USN_JOURNAL;
/// ?
const SUPPORTS_INTEGRITY_STREAMS = sys::FILE_SUPPORTS_INTEGRITY_STREAMS;
/// The specified volume 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.
const SUPPORTS_BLOCK_REFCOUNTING = sys::FILE_SUPPORTS_BLOCK_REFCOUNTING;
/// ?
const SUPPORTS_SPARSE_VDL = sys::FILE_SUPPORTS_SPARSE_VDL;
/// The specified volume is a direct access (DAX) volume.
const DAX_VOLUME = sys::FILE_DAX_VOLUME;
/// ?
const SUPPORTS_GHOSTING = sys::FILE_SUPPORTS_GHOSTING;
}
}