use crate::update;
use serde::{Deserialize, Serialize};
use std::time::SystemTime;
use wmi::{COMLibrary, WMIConnection, WMIDateTime};
#[derive(Deserialize, Serialize, Debug, Clone)]
pub struct ShadowCopys {
pub shadow_copys: Vec<Win32_ShadowCopy>,
pub last_updated: SystemTime,
}
update!(ShadowCopys, shadow_copys);
#[derive(Deserialize, Serialize, Debug, Clone)]
pub struct Volumes {
pub volumes: Vec<Win32_Volume>,
pub last_updated: SystemTime,
}
update!(Volumes, volumes);
#[derive(Deserialize, Serialize, Debug, Clone)]
pub struct ShadowContexts {
pub shadow_contexts: Vec<Win32_ShadowContext>,
pub last_updated: SystemTime,
}
update!(ShadowContexts, shadow_contexts);
#[derive(Deserialize, Serialize, Debug, Clone)]
pub struct ShadowProviders {
pub shadow_providers: Vec<Win32_ShadowProvider>,
pub last_updated: SystemTime,
}
update!(ShadowProviders, shadow_providers);
#[derive(Default, Deserialize, Serialize, Debug, Clone)]
#[allow(non_snake_case)]
#[allow(non_camel_case_types)]
pub struct Win32_ShadowCopy {
pub Caption: Option<String>,
pub Description: Option<String>,
pub ID: Option<String>,
pub InstallDate: Option<WMIDateTime>,
pub Name: Option<String>,
pub SetID: Option<String>,
pub ProviderID: Option<String>,
pub Status: Option<String>,
pub Count: Option<u32>,
pub DeviceObject: Option<String>,
pub VolumeName: Option<String>,
pub OriginatingMachine: Option<String>,
pub ServiceMachine: Option<String>,
pub ExposedName: Option<String>,
pub State: Option<u32>,
pub Persistent: Option<bool>,
pub ClientAccessible: Option<bool>,
pub NoAutoRelease: Option<bool>,
pub NoWriters: Option<bool>,
pub Transportable: Option<bool>,
pub NotSurfaced: Option<bool>,
pub HardwareAssisted: Option<bool>,
pub Differential: Option<bool>,
pub Plex: Option<bool>,
pub Imported: Option<bool>,
pub ExposedRemotely: Option<bool>,
pub ExposedLocally: Option<bool>,
}
#[derive(Default, Deserialize, Serialize, Debug, Clone)]
#[allow(non_snake_case)]
#[allow(non_camel_case_types)]
pub struct Win32_Volume {
pub Access: Option<u16>,
pub Automount: Option<bool>,
pub Availability: Option<u16>,
pub BlockSize: Option<u64>,
pub Capacity: Option<u64>,
pub Caption: Option<String>,
pub Compressed: Option<bool>,
pub ConfigManagerErrorCode: Option<u32>,
pub ConfigManagerUserConfig: Option<bool>,
pub CreationClassName: Option<String>,
pub Description: Option<String>,
pub DeviceID: Option<String>,
pub DirtyBitSet: Option<bool>,
pub DriveLetter: Option<String>,
pub DriveType: Option<u32>,
pub ErrorCleared: Option<bool>,
pub ErrorDescription: Option<String>,
pub ErrorMethodology: Option<String>,
pub FileSystem: Option<String>,
pub FreeSpace: Option<u64>,
pub IndexingEnabled: Option<bool>,
pub InstallDate: Option<WMIDateTime>,
pub Label: Option<String>,
pub LastErrorCode: Option<u32>,
pub MaximumFileNameLength: Option<u32>,
pub Name: Option<String>,
pub NumberOfBlocks: Option<u64>,
pub PNPDeviceID: Option<String>,
pub PowerManagementCapabilities: Option<Vec<u16>>,
pub PowerManagementSupported: Option<bool>,
pub Purpose: Option<String>,
pub QuotasEnabled: Option<bool>,
pub QuotasIncomplete: Option<bool>,
pub QuotasRebuilding: Option<bool>,
pub Status: Option<String>,
pub StatusInfo: Option<u16>,
pub SystemCreationClassName: Option<String>,
pub SystemName: Option<String>,
pub SerialNumber: Option<u32>,
pub SupportsDiskQuotas: Option<bool>,
pub SupportsFileBasedCompression: Option<bool>,
}
#[derive(Default, Deserialize, Serialize, Debug, Clone)]
#[allow(non_snake_case)]
#[allow(non_camel_case_types)]
pub struct Win32_ShadowContext {
pub Name: Option<String>,
pub Persistent: Option<bool>,
pub ClientAccessible: Option<bool>,
pub NoAutoRelease: Option<bool>,
pub NoWriters: Option<bool>,
pub Transportable: Option<bool>,
pub NotSurfaced: Option<bool>,
pub HardwareAssisted: Option<bool>,
pub Differential: Option<bool>,
pub Plex: Option<bool>,
pub Imported: Option<bool>,
pub ExposedRemotely: Option<bool>,
pub ExposedLocally: Option<bool>,
}
#[derive(Default, Deserialize, Serialize, Debug, Clone)]
#[allow(non_snake_case)]
#[allow(non_camel_case_types)]
pub struct Win32_ShadowProvider {
pub ID: Option<String>,
pub Name: Option<String>,
pub CLSID: Option<String>,
pub Type: Option<u32>,
pub Version: Option<String>,
pub VersionID: Option<String>,
}