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
use serde::{Deserialize, Serialize};

#[cfg(target_os = "windows")]
pub mod win;
#[cfg(target_os = "windows")]
pub use win::*;

/// 驱动状态类型
#[derive(Debug, Clone, Deserialize, Serialize, Default, PartialEq)]
pub enum DriveStatusType {
  Runing,
  Disabled,
  #[default]
  None,
}
/// # 驱动状态
#[derive(Debug, Clone, Deserialize, Serialize, Default)]
pub struct DriveStatus {
  pub id: String,
  pub name: String,
  pub status: DriveStatusType,
  pub content: String,
}
/// # 驱动信息
#[derive(Debug, Clone, Deserialize, Serialize, Default)]
pub struct DriveInfo {
  pub id: String,
  pub driver_descript: String,
}

/// # 驱动Node信息
#[derive(Debug, Clone, Deserialize, Serialize, Default)]
pub struct DriveNodeInfo {
  pub id: String,
  pub drive_node: String,
  pub name: String,
  pub inf_file: String,
  pub inf_section: String,
  pub driver_descript: String,
  pub manufacturer_name: String,
  pub provider_name: String,
  pub driver_date: String,
  pub driver_version: String,
  pub driver_node_rank: String,
  pub driver_node_flags: String,
  pub signed: bool,
}

impl From<DriveInfo> for DriveNodeInfo {
  fn from(value: DriveInfo) -> Self {
    let mut dninfo = DriveNodeInfo::default();
    dninfo.id = value.id;
    dninfo.driver_descript = value.driver_descript;
    dninfo
  }
}