listdisk_rs/win32/physical_disk/typing/
mod.rs1use serde_repr::{Deserialize_repr, Serialize_repr};
4
5#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize_repr, Deserialize_repr)]
9#[repr(u16)]
10pub enum BusType {
11 Unknown = 0,
13 SCSI = 1,
15 ATAPI = 2,
17 ATA = 3,
19 Ieee1394 = 4,
21 SSA = 5,
23 FibreChannel = 6,
25 USB = 7,
27 RAID = 8,
29 ISCSI = 9,
31 SAS = 10,
33 SATA = 11,
35 SD = 12,
37 MMC = 13,
39 Max = 14,
41 FileBackedVirtual = 15,
43 StorageSpaces = 16,
45 NVMe = 17,
47 }
49
50#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize_repr, Deserialize_repr)]
52#[repr(u16)]
53pub enum MediaType {
54 Unspecified = 0,
56 HDD = 3,
58 SSD = 4,
60 SCM = 5,
62}
63
64#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize_repr, Deserialize_repr)]
66#[repr(u16)]
67pub enum HealthStatus {
68 Healthy = 0,
70 Warning = 1,
72 Unhealthy = 2,
74 Unknown = 5,
76}
77
78#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize_repr, Deserialize_repr)]
82#[repr(u16)]
83pub enum Usage {
84 Unknown = 0,
86 AutoSelect = 1,
88 ManualSelect = 2,
91 HotSpare = 3,
93 Retired = 4,
96 Journal = 5,
100}
101
102#[derive(Debug, Clone, Copy, PartialEq, Eq)]
103pub enum CannotPoolReason {
104 Unknown,
105 Other,
106 InAPool,
107 NotHealthy,
108 RemovableMedia,
109 InUseByCluster,
110 Offline,
111 InsufficientCapacity,
112 SpareDisk,
113 ReservedBySubSystem,
114 Starting,
115 MicrosoftReserved(u16),
116 VendorReserved(u16),
117}
118
119impl From<u16> for CannotPoolReason {
120 fn from(value: u16) -> Self {
121 match value {
122 0 => Self::Unknown,
123 1 => Self::Other,
124 2 => Self::InAPool,
125 3 => Self::NotHealthy,
126 4 => Self::RemovableMedia,
127 5 => Self::InUseByCluster,
128 6 => Self::Offline,
129 7 => Self::InsufficientCapacity,
130 8 => Self::SpareDisk,
131 9 => Self::ReservedBySubSystem,
132 10 => Self::Starting,
133 0x8000.. => Self::VendorReserved(value),
134 _ => Self::MicrosoftReserved(value),
135 }
136 }
137}
138
139impl From<CannotPoolReason> for u16 {
140 fn from(value: CannotPoolReason) -> Self {
141 match value {
142 CannotPoolReason::Unknown => 0,
143 CannotPoolReason::Other => 1,
144 CannotPoolReason::InAPool => 2,
145 CannotPoolReason::NotHealthy => 3,
146 CannotPoolReason::RemovableMedia => 4,
147 CannotPoolReason::InUseByCluster => 5,
148 CannotPoolReason::Offline => 6,
149 CannotPoolReason::InsufficientCapacity => 7,
150 CannotPoolReason::SpareDisk => 8,
151 CannotPoolReason::ReservedBySubSystem => 9,
152 CannotPoolReason::Starting => 10,
153 CannotPoolReason::MicrosoftReserved(v) => v,
154 CannotPoolReason::VendorReserved(v) => v,
155 }
156 }
157}