diff options
Diffstat (limited to 'src/structured_values/mod.rs')
-rw-r--r-- | src/structured_values/mod.rs | 34 |
1 files changed, 32 insertions, 2 deletions
diff --git a/src/structured_values/mod.rs b/src/structured_values/mod.rs index d8fcc0d..8f2d7ea 100644 --- a/src/structured_values/mod.rs +++ b/src/structured_values/mod.rs @@ -1,5 +1,7 @@ // Copyright 2021 Colin Finck <colin@reactos.org> // SPDX-License-Identifier: GPL-2.0-or-later +// +//! Various types of NTFS Attribute structured values. mod attribute_list; mod file_name; @@ -28,24 +30,50 @@ use binread::io::{Read, Seek}; use bitflags::bitflags; bitflags! { + /// Flags that a user can set for a file (Read-Only, Hidden, System, Archive, etc.). + /// Commonly called "File Attributes" in Windows Explorer. + /// + /// Not to be confused with [`NtfsAttribute`]. + /// + /// Returned by [`NtfsStandardInformation::file_attributes`] and [`NtfsFileName::file_attributes`]. + /// + /// [`NtfsAttribute`]: crate::attribute::NtfsAttribute pub struct NtfsFileAttributeFlags: u32 { + /// File is marked read-only. const READ_ONLY = 0x0001; + /// File is hidden (in file browsers that care). const HIDDEN = 0x0002; + /// File is marked as a system file. const SYSTEM = 0x0004; + /// File is marked for archival (cf. <https://en.wikipedia.org/wiki/Archive_bit>). const ARCHIVE = 0x0020; + /// File denotes a device. const DEVICE = 0x0040; + /// Set when no other attributes are set. const NORMAL = 0x0080; + /// File is a temporary file that is likely to be deleted. const TEMPORARY = 0x0100; + /// File is stored sparsely. const SPARSE_FILE = 0x0200; + /// File is a reparse point. const REPARSE_POINT = 0x0400; + /// File is transparently compressed by the filesystem (using LZNT1 algorithm). + /// For directories, this attribute denotes that compression is enabled by default for new files inside that directory. const COMPRESSED = 0x0800; const OFFLINE = 0x1000; + /// File has not (yet) been indexed by the Windows Indexing Service. const NOT_CONTENT_INDEXED = 0x2000; + /// File is encrypted via EFS. + /// For directories, this attribute denotes that encryption is enabled by default for new files inside that directory. const ENCRYPTED = 0x4000; + /// File is a directory. + /// + /// This attribute is only returned from [`NtfsFileName::file_attributes`]. const IS_DIRECTORY = 0x1000_0000; } } +/// Trait implemented by every NTFS attribute structured value. pub trait NtfsStructuredValue<'n, 'f>: Sized { const TY: NtfsAttributeType; @@ -55,10 +83,12 @@ pub trait NtfsStructuredValue<'n, 'f>: Sized { T: Read + Seek; } -/// Create a structured value from an arbitrary data slice. -/// This is a fast path for the few structured values that are always in resident attributes. +/// Trait implemented by NTFS Attribute structured values that are always in resident attributes. pub trait NtfsStructuredValueFromResidentAttributeValue<'n, 'f>: NtfsStructuredValue<'n, 'f> { + /// Create a structured value from a resident attribute value. + /// + /// This is a fast path for the few structured values that are always in resident attributes. fn from_resident_attribute_value(value: NtfsResidentAttributeValue<'f>) -> Result<Self>; } |