use crate::update;
use serde::{Deserialize, Serialize};
use std::time::SystemTime;
use wmi::{COMLibrary, WMIConnection, WMIDateTime};
#[derive(Deserialize, Serialize, Debug, Clone)]
pub struct Directories {
pub directories: Vec<Win32_Directory>,
pub last_updated: SystemTime,
}
update!(Directories, directories);
#[derive(Deserialize, Serialize, Debug, Clone)]
pub struct DirectorySpecifications {
pub directory_specifications: Vec<Win32_DirectorySpecification>,
pub last_updated: SystemTime,
}
update!(DirectorySpecifications, directory_specifications);
#[derive(Deserialize, Serialize, Debug, Clone)]
pub struct DiskPartitions {
pub disk_partitions: Vec<Win32_DiskPartition>,
pub last_updated: SystemTime,
}
update!(DiskPartitions, disk_partitions);
#[derive(Deserialize, Serialize, Debug, Clone)]
pub struct LogicalDisks {
pub logical_disks: Vec<Win32_LogicalDisk>,
pub last_updated: SystemTime,
}
update!(LogicalDisks, logical_disks);
#[derive(Deserialize, Serialize, Debug, Clone)]
pub struct MappedLogicalDisks {
pub mapped_logical_disks: Vec<Win32_MappedLogicalDisk>,
pub last_updated: SystemTime,
}
update!(MappedLogicalDisks, mapped_logical_disks);
#[derive(Deserialize, Serialize, Debug, Clone)]
pub struct QuotaSettings {
pub quota_settings: Vec<Win32_MappedLogicalDisk>,
pub last_updated: SystemTime,
}
update!(QuotaSettings, quota_settings);
#[derive(Deserialize, Serialize, Debug, Clone)]
pub struct ShortcutFiles {
pub shortcut_files: Vec<Win32_ShortcutFile>,
pub last_updated: SystemTime,
}
update!(ShortcutFiles, shortcut_files);
#[derive(Deserialize, Serialize, Debug, Clone)]
pub struct Volumes {
pub volumes: Vec<Win32_Volume>,
pub last_updated: SystemTime,
}
update!(Volumes, volumes);
#[derive(Default, Deserialize, Serialize, Debug, Clone)]
#[allow(non_snake_case)]
#[allow(non_camel_case_types)]
pub struct Win32_Directory {
pub Caption: Option<String>,
pub Description: Option<String>,
pub InstallDate: Option<WMIDateTime>,
pub Name: Option<String>,
pub Status: Option<String>,
pub AccessMask: Option<u32>,
pub Archive: Option<bool>,
pub Compressed: Option<bool>,
pub CompressionMethod: Option<String>,
pub CreationClassName: Option<String>,
pub CreationDate: Option<WMIDateTime>,
pub CSCreationClassName: Option<String>,
pub CSName: Option<String>,
pub Drive: Option<String>,
pub EightDotThreeFileName: Option<String>,
pub Encrypted: Option<bool>,
pub EncryptionMethod: Option<String>,
pub Extension: Option<String>,
pub FileName: Option<String>,
pub FileSize: Option<u64>,
pub FileType: Option<String>,
pub FSCreationClassName: Option<String>,
pub FSName: Option<String>,
pub Hidden: Option<bool>,
pub InUseCount: Option<u64>,
pub LastAccessed: Option<WMIDateTime>,
pub LastModified: Option<WMIDateTime>,
pub Path: Option<String>,
pub Readable: Option<bool>,
pub System: Option<bool>,
pub Writeable: Option<bool>,
}
#[derive(Default, Deserialize, Serialize, Debug, Clone)]
#[allow(non_snake_case)]
#[allow(non_camel_case_types)]
pub struct Win32_DirectorySpecification {
pub Caption: Option<String>,
pub CheckID: Option<String>,
pub CheckMode: Option<bool>,
pub DefaultDir: Option<String>,
pub Description: Option<String>,
pub Directory: Option<String>,
pub DirectoryPath: Option<String>,
pub DirectoryType: Option<u16>,
pub Name: Option<String>,
pub SoftwareElementID: Option<String>,
pub SoftwareElementState: Option<u16>,
pub TargetOperatingSystem: Option<u16>,
pub Version: Option<String>,
}
#[derive(Default, Deserialize, Serialize, Debug, Clone)]
#[allow(non_snake_case)]
#[allow(non_camel_case_types)]
pub struct Win32_DiskPartition {
pub Availability: Option<u16>,
pub PowerManagementCapabilities: Option<Vec<u16>>,
pub Access: Option<u16>,
pub BlockSize: Option<u64>,
pub Bootable: Option<bool>,
pub BootPartition: Option<bool>,
pub Caption: Option<String>,
pub ConfigManagerErrorCode: Option<u32>,
pub ConfigManagerUserConfig: Option<bool>,
pub CreationClassName: Option<String>,
pub Description: Option<String>,
pub DeviceID: Option<String>,
pub DiskIndex: Option<u32>,
pub ErrorCleared: Option<bool>,
pub ErrorDescription: Option<String>,
pub ErrorMethodology: Option<String>,
pub HiddenSectors: Option<u32>,
pub Index: Option<u32>,
pub InstallDate: Option<WMIDateTime>,
pub LastErrorCode: Option<u32>,
pub Name: Option<String>,
pub NumberOfBlocks: Option<u64>,
pub PNPDeviceID: Option<String>,
pub PowerManagementSupported: Option<bool>,
pub PrimaryPartition: Option<bool>,
pub Purpose: Option<String>,
pub RewritePartition: Option<bool>,
pub Size: Option<u64>,
pub StartingOffset: Option<u64>,
pub Status: Option<String>,
pub SystemCreationClassName: Option<String>,
pub SystemName: Option<String>,
pub Type: Option<String>,
}
#[derive(Default, Deserialize, Serialize, Debug, Clone)]
#[allow(non_snake_case)]
#[allow(non_camel_case_types)]
pub struct Win32_LogicalDisk {
pub Access: Option<u16>,
pub Availability: Option<u16>,
pub BlockSize: 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 DriveType: Option<u32>,
pub ErrorCleared: Option<bool>,
pub ErrorDescription: Option<String>,
pub ErrorMethodology: Option<String>,
pub FileSystem: Option<String>,
pub FreeSpace: Option<u64>,
pub InstallDate: Option<WMIDateTime>,
pub LastErrorCode: Option<u32>,
pub MaximumComponentLength: Option<u32>,
pub MediaType: Option<u32>,
pub Name: Option<String>,
pub NumberOfBlocks: Option<u64>,
pub PNPDeviceID: Option<String>,
pub PowerManagementCapabilities: Option<Vec<u16>>,
pub PowerManagementSupported: Option<bool>,
pub ProviderName: Option<String>,
pub Purpose: Option<String>,
pub QuotasDisabled: Option<bool>,
pub QuotasIncomplete: Option<bool>,
pub QuotasRebuilding: Option<bool>,
pub Size: Option<u64>,
pub Status: Option<String>,
pub StatusInfo: Option<u16>,
pub SupportsDiskQuotas: Option<bool>,
pub SupportsFileBasedCompression: Option<bool>,
pub SystemCreationClassName: Option<String>,
pub SystemName: Option<String>,
pub VolumeDirty: Option<bool>,
pub VolumeName: Option<String>,
pub VolumeSerialNumber: Option<String>,
}
#[derive(Default, Deserialize, Serialize, Debug, Clone)]
#[allow(non_snake_case)]
#[allow(non_camel_case_types)]
pub struct Win32_MappedLogicalDisk {
pub Access: Option<u16>,
pub Availability: Option<u16>,
pub BlockSize: 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 ErrorCleared: Option<bool>,
pub ErrorDescription: Option<String>,
pub ErrorMethodology: Option<String>,
pub FileSystem: Option<String>,
pub FreeSpace: Option<u64>,
pub InstallDate: Option<WMIDateTime>,
pub LastErrorCode: Option<u32>,
pub MaximumComponentLength: Option<u32>,
pub Name: Option<String>,
pub NumberOfBlocks: Option<u64>,
pub PNPDeviceID: Option<String>,
pub PowerManagementCapabilities: Option<Vec<u16>>,
pub PowerManagementSupported: Option<bool>,
pub ProviderName: Option<String>,
pub Purpose: Option<String>,
pub QuotasDisabled: Option<bool>,
pub QuotasIncomplete: Option<bool>,
pub QuotasRebuilding: Option<bool>,
pub SessionID: Option<String>,
pub Size: Option<u64>,
pub Status: Option<String>,
pub StatusInfo: Option<u16>,
pub SupportsDiskQuotas: Option<bool>,
pub SupportsFileBasedCompression: Option<bool>,
pub SystemCreationClassName: Option<String>,
pub SystemName: Option<String>,
pub VolumeName: Option<String>,
pub VolumeSerialNumber: Option<String>,
}
#[derive(Default, Deserialize, Serialize, Debug, Clone)]
#[allow(non_snake_case)]
#[allow(non_camel_case_types)]
pub struct Win32_QuotaSetting {
pub Caption: Option<String>,
pub DefaultLimit: Option<i64>,
pub DefaultWarningLimit: Option<i64>,
pub Description: Option<String>,
pub ExceededNotification: Option<bool>,
pub SettingID: Option<String>,
pub State: Option<u32>,
pub VolumePath: Option<String>,
pub WarningExceededNotification: Option<bool>,
}
#[derive(Default, Deserialize, Serialize, Debug, Clone)]
#[allow(non_snake_case)]
#[allow(non_camel_case_types)]
pub struct Win32_ShortcutFile {
pub Caption: Option<String>,
pub Description: Option<String>,
pub InstallDate: Option<WMIDateTime>,
pub Status: Option<String>,
pub AccessMask: Option<u32>,
pub Archive: Option<bool>,
pub Compressed: Option<bool>,
pub CompressionMethod: Option<String>,
pub CreationClassName: Option<String>,
pub CreationDate: Option<WMIDateTime>,
pub CSCreationClassName: Option<String>,
pub CSName: Option<String>,
pub Drive: Option<String>,
pub EightDotThreeFileName: Option<String>,
pub Encrypted: Option<bool>,
pub EncryptionMethod: Option<String>,
pub Name: Option<String>,
pub Extension: Option<String>,
pub FileName: Option<String>,
pub FileSize: Option<u64>,
pub FileType: Option<String>,
pub FSCreationClassName: Option<String>,
pub FSName: Option<String>,
pub Hidden: Option<bool>,
pub InUseCount: Option<u64>,
pub LastAccessed: Option<WMIDateTime>,
pub LastModified: Option<WMIDateTime>,
pub Path: Option<String>,
pub Readable: Option<bool>,
pub System: Option<bool>,
pub Writeable: Option<bool>,
pub Manufacturer: Option<String>,
pub Version: Option<String>,
pub Target: Option<String>,
}
#[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>,
}