use winapi::shared::minwindef::DWORD;
use winapi::um::winnt;
#[derive(Copy, Clone, Debug, Hash, PartialEq, Eq)]
pub enum DriveType {
CdRom,
Fixed,
NoRootDir,
RamDisk,
Remote,
Removable,
}
bitflags::bitflags! {
pub struct Flags: DWORD {
const FILE_CASE_PRESERVED_NAMES = winnt::FILE_CASE_PRESERVED_NAMES;
const FILE_CASE_SENSITIVE_SEARCH = winnt::FILE_CASE_SENSITIVE_SEARCH;
const FILE_DAX_VOLUME = winnt::FILE_DAX_VOLUME;
const FILE_FILE_COMPRESSION = winnt::FILE_FILE_COMPRESSION;
const FILE_NAMED_STREAMS = winnt::FILE_NAMED_STREAMS;
const FILE_PERSISTENT_ACLS = winnt::FILE_PERSISTENT_ACLS;
const FILE_READ_ONLY_VOLUME = winnt::FILE_READ_ONLY_VOLUME;
const FILE_SEQUENTIAL_WRITE_ONCE = winnt::FILE_SEQUENTIAL_WRITE_ONCE;
const FILE_SUPPORTS_ENCRYPTION = winnt::FILE_SUPPORTS_ENCRYPTION;
const FILE_SUPPORTS_EXTENDED_ATTRIBUTES = winnt::FILE_SUPPORTS_EXTENDED_ATTRIBUTES;
const FILE_SUPPORTS_HARD_LINKS = winnt::FILE_SUPPORTS_HARD_LINKS;
const FILE_SUPPORTS_OBJECT_IDS = winnt::FILE_SUPPORTS_OBJECT_IDS;
const FILE_SUPPORTS_OPEN_BY_FILE_ID = winnt::FILE_SUPPORTS_OPEN_BY_FILE_ID;
const FILE_SUPPORTS_REPARSE_POINTS = winnt::FILE_SUPPORTS_REPARSE_POINTS;
const FILE_SUPPORTS_SPARSE_FILES = winnt::FILE_SUPPORTS_SPARSE_FILES;
const FILE_SUPPORTS_TRANSACTIONS = winnt::FILE_SUPPORTS_TRANSACTIONS;
const FILE_SUPPORTS_USN_JOURNAL = winnt::FILE_SUPPORTS_USN_JOURNAL;
const FILE_UNICODE_ON_DISK = winnt::FILE_UNICODE_ON_DISK;
const FILE_VOLUME_IS_COMPRESSED = winnt::FILE_VOLUME_IS_COMPRESSED;
const FILE_VOLUME_QUOTAS = winnt::FILE_VOLUME_QUOTAS;
}
}
pub trait PartitionExt {
fn flags(&self) -> Flags;
fn drive_type(&self) -> Option<DriveType>;
}
#[cfg(target_os = "windows")]
impl PartitionExt for crate::Partition {
fn flags(&self) -> Flags {
self.as_ref().flags()
}
fn drive_type(&self) -> Option<DriveType> {
self.as_ref().drive_type()
}
}