windows_snapshot/operating_system/storage.rs
1//! The Users subcategory groups classes that represent storage information.
2//!
3//! | Class | Description |
4//! |-------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------|
5//! | [**Win32\_ShadowBy**](/previous-versions/windows/desktop/vsswmi/win32-shadowby) | Association class<br/> Represents the association between a shadow copy and the provider that creates the shadow copy.<br/> |
6//! | [**Win32\_ShadowContext**](/previous-versions/windows/desktop/vsswmi/win32-shadowcontext) | Association class<br/> Specifies how a shadow copy is to be created, queried, or deleted.<br/> |
7//! | [**Win32\_ShadowCopy**](/previous-versions/windows/desktop/legacy/aa394428(v=vs.85)) | Instance class<br/> Represents a duplicate copy of the original volume at a previous time.<br/> |
8//! | [**Win32\_ShadowDiffVolumeSupport**](/previous-versions/windows/desktop/vsswmi/win32-shadowdiffvolumesupport) | Association class<br/> Represents an association between a shadow copy provider and a storage volume.<br/> |
9//! | [**Win32\_ShadowFor**](/previous-versions/windows/desktop/vsswmi/win32-shadowfor) | Association class<br/> Represents an association between a shadow copy and the volume for which the shadow copy is created.<br/> |
10//! | [**Win32\_ShadowOn**](/previous-versions/windows/desktop/vsswmi/win32-shadowon) | Association class<br/> Represents an association between a shadow copy and where the differential data is written.<br/> |
11//! | [**Win32\_ShadowProvider**](/previous-versions/windows/desktop/vsswmi/win32-shadowprovider) | Association class<br/> Represents a component that creates and represents volume shadow copies.<br/> |
12//! | [**Win32\_ShadowStorage**](/previous-versions/windows/desktop/legacy/aa394433(v=vs.85)) | Association class<br/> Represents an association between a shadow copy and where the differential data is written.<br/> |
13//! | [**Win32\_ShadowVolumeSupport**](/previous-versions/windows/desktop/vsswmi/win32-shadowvolumesupport) | Association class<br/> Represents an association between a shadow copy provider with a supported volume.<br/> |
14//! | [**Win32\_Volume**](/previous-versions/windows/desktop/legacy/aa394515(v=vs.85)) | Instance class<br/> Represents an area of storage on a hard disk.<br/> |
15//! | [**Win32\_VolumeUserQuota**](/previous-versions/windows/desktop/vdswmi/win32-volumeuserquota) | Association class<br/> Represents a volume to the per volume quota settings.<br/> |
16
17use crate::update;
18use serde::{Deserialize, Serialize};
19use std::time::SystemTime;
20use wmi::{COMLibrary, WMIConnection, WMIDateTime};
21
22/// Represents the state of Windows ShadowCopys
23#[derive(Deserialize, Serialize, Debug, Clone)]
24pub struct ShadowCopys {
25 /// Represents sequence of `ShadowCopys`
26 pub shadow_copys: Vec<Win32_ShadowCopy>,
27 /// When was the record last updated
28 pub last_updated: SystemTime,
29}
30
31update!(ShadowCopys, shadow_copys);
32
33/// Represents the state of Windows Volumes
34#[derive(Deserialize, Serialize, Debug, Clone)]
35pub struct Volumes {
36 /// Represents sequence of `Volumes`
37 pub volumes: Vec<Win32_Volume>,
38 /// When was the record last updated
39 pub last_updated: SystemTime,
40}
41
42update!(Volumes, volumes);
43
44/// Represents the state of Windows ShadowContexts
45#[derive(Deserialize, Serialize, Debug, Clone)]
46pub struct ShadowContexts {
47 /// Represents sequence of `ShadowContexts`
48 pub shadow_contexts: Vec<Win32_ShadowContext>,
49 /// When was the record last updated
50 pub last_updated: SystemTime,
51}
52
53update!(ShadowContexts, shadow_contexts);
54
55/// Represents the state of Windows ShadowProviders
56#[derive(Deserialize, Serialize, Debug, Clone)]
57pub struct ShadowProviders {
58 /// Represents sequence of `ShadowProviders`
59 pub shadow_providers: Vec<Win32_ShadowProvider>,
60 /// When was the record last updated
61 pub last_updated: SystemTime,
62}
63
64update!(ShadowProviders, shadow_providers);
65
66/// The `Win32_ShadowCopy` class is a storage extent that represents a duplicate copy of the
67/// original volume at a previous time.
68///
69/// <https://learn.microsoft.com/en-us/previous-versions/windows/desktop/legacy/aa394428(v=vs.85)>
70#[derive(Default, Deserialize, Serialize, Debug, Clone)]
71#[allow(non_snake_case)]
72#[allow(non_camel_case_types)]
73pub struct Win32_ShadowCopy {
74 /// Short textual description of the object.
75 pub Caption: Option<String>,
76 /// Textual description of the object.
77 pub Description: Option<String>,
78 /// Unique identifier for a shadow copy on the system.
79 pub ID: Option<String>,
80 /// Date and time the object was installed. This property does not need a value to indicate that
81 /// the object is installed.
82 pub InstallDate: Option<WMIDateTime>,
83 /// Label by which the object is known. When subclassed, this property can be overridden to be a
84 /// key property.
85 pub Name: Option<String>,
86 /// Unique identifier for a shadow copy set to which the shadow belongs.
87 pub SetID: Option<String>,
88 /// Unique identifier for a shadow provider that creates a shadow.
89 pub ProviderID: Option<String>,
90 /// Current status of the object.
91 ///
92 /// Values include the following:
93 /// - "OK"
94 /// - "Error"
95 /// - "Degraded"
96 /// - "Unknown"
97 /// - "Pred Fail"
98 /// - "Starting"
99 /// - "Stopping"
100 /// - "Service"
101 /// - "Stressed"
102 /// - "NonRecover"
103 /// - "No Contact"
104 /// - "Lost Comm"
105 pub Status: Option<String>,
106 /// Number of shadow copies in a shadow copy set to which a shadow copy belongs.
107 pub Count: Option<u32>,
108 /// Windows object manager name for an underlying storage device that supports the
109 /// original volume.
110 pub DeviceObject: Option<String>,
111 /// Name of the original volume for which a shadow copy is made.
112 pub VolumeName: Option<String>,
113 /// Name of the computer that hosts the original volume.
114 pub OriginatingMachine: Option<String>,
115 /// Name of the computer that services the shadow copy.
116 pub ServiceMachine: Option<String>,
117 /// File system name of a shadow copy when it is exposed. The `ExposedName` property might
118 /// contain a drive letter or mount point. The `ExposedName` property is `NULL` when a shadow
119 /// copy is hidden or otherwise not exposed.
120 pub ExposedName: Option<String>,
121 /// Current state of a shadow copy.
122 ///
123 /// Value: Meaning
124 /// - 0: Unknown
125 /// - 1: Preparing
126 /// - 2: ProcessingPrepare
127 /// - 3: Prepared
128 /// - 4: ProcessingPrecommit
129 /// - 5: Precommitted
130 /// - 6: ProcessingCommit
131 /// - 7: Committed
132 /// - 8: ProcessingPostcommit
133 /// - 9: Created
134 /// - 10: Aborted
135 /// - 11: Deleted
136 /// - 12: Count
137 pub State: Option<u32>,
138 /// If `true`, the shadow copy is persistent across reboots.
139 pub Persistent: Option<bool>,
140 /// If `true`, the shadow copy is created by the Windows Previous Versions component.
141 pub ClientAccessible: Option<bool>,
142 /// If `true`, the shadow copy is retained after the requestor process ends. If `false`, the shadow
143 /// copy is automatically deleted when the requestor process ends.
144 pub NoAutoRelease: Option<bool>,
145 /// If `true`, the shadow copy is created with the involvement of the shadow copy writer components.
146 pub NoWriters: Option<bool>,
147 /// If `true`, the shadow copy can be surfaced on another computer. If `false`, and the volumes are
148 /// surfaced locally, it may not be possible to surface them later on a different computer.
149 pub Transportable: Option<bool>,
150 /// If `true`, the shadow copy is not currently in the device namespace of a local computer.
151 pub NotSurfaced: Option<bool>,
152 /// If `true`, the shadow copy is created by a hardware shadow copy provider.
153 pub HardwareAssisted: Option<bool>,
154 /// If `true`, the shadow copy is created by a differential shadow copy provider. The provider
155 /// can be implemented in hardware or software.
156 pub Differential: Option<bool>,
157 /// If `true`, the shadow copy is created by a split mirror shadow copy provider. The provider
158 /// can be implemented in hardware or software.
159 pub Plex: Option<bool>,
160 /// If `true`, the shadow copy is imported to a computer by using the `Import` method and is not
161 /// created by using the `Create` method.
162 pub Imported: Option<bool>,
163 /// If `true`, the shadow copy is exposed on a remote computer with a network share. If `ExposedRemotely`
164 /// and `ExposedLocally` are not set, the shadow copy is hidden.
165 pub ExposedRemotely: Option<bool>,
166 /// If `true`, the shadow copy is exposed on the local computer with a drive letter or mount point.
167 /// If `ExposedLocally` and `ExposedRemotely` are not set, the shadow copy is hidden.
168 pub ExposedLocally: Option<bool>,
169}
170
171/// The `Win32_Volume` class represents an area of storage on a hard disk. The class returns local volumes
172/// that are formatted, unformatted, mounted, or offline. A volume is formatted by using a file system,
173/// such as FAT or NTFS, and might have a drive letter assigned to it. One hard disk can have multiple
174/// volumes, and volumes can span multiple physical disks. The `Win32_Volume` class does not support disk
175/// drive management.
176///
177/// Windows XP and earlier: This class is not available.
178///
179/// Note: This class has been repeated in File System as well.
180///
181/// <https://learn.microsoft.com/en-us/previous-versions/windows/desktop/legacy/aa394515(v=vs.85)>
182#[derive(Default, Deserialize, Serialize, Debug, Clone)]
183#[allow(non_snake_case)]
184#[allow(non_camel_case_types)]
185pub struct Win32_Volume {
186 /// Describes whether the media is readable.
187 ///
188 /// This can be one of the following values.
189 ///
190 /// Value: Meaning
191 /// - 0 (0x0): Unknown media.
192 /// - 1 (0x1): The media is readable.
193 /// - 2 (0x2): The media is writable.
194 /// - 3 (0x3): The media is readable and writable.
195 /// - 4 (0x4): "Write once" media.
196 pub Access: Option<u16>,
197 /// If true, the volume is mounted to the file system automatically when the first I/O is issued.
198 /// If false, the volume is not mounted until explicitly mounted by using the `Mount` method, or
199 /// by adding a drive letter or mount point.
200 pub Automount: Option<bool>,
201 /// Describes the availability and status of the device. Inherited from CIM_LogicalDevice.
202 ///
203 /// This can be one of the following values.
204 ///
205 /// Value: Meaning
206 /// - 1 (0x1): Other
207 /// - 2 (0x2): Unknown
208 /// - 3 (0x3): Running or Full Power
209 /// - 4 (0x4): Warning
210 /// - 5 (0x5): In Test
211 /// - 6 (0x6): Not Applicable
212 /// - 7 (0x7): Power Off
213 /// - 8 (0x8): Offline
214 /// - 9 (0x9): Off Duty
215 /// - 10 (0xA): Degraded
216 /// - 11 (0xB): Not Installed
217 /// - 12 (0xC): Install Error
218 /// - 13 (0xD): Power Save - Unknown [The device is known to be in a power save mode, but its exact status is unknown]
219 /// - 14 (0xE): Power Save - Low Power Mode [The device is in a power save state, but still functioning, and may exhibit degraded performance]
220 /// - 15 (0xF): Power Save - Standby [The device is not functioning, but could be brought to full power quickly]
221 /// - 16 (0x10): Power Cycle
222 /// - 17 (0x11): Power Save - Warning [The device is in a warning state, but also in a power save mode]
223 /// - 18 (0x12): Paused
224 /// - 19 (0x13): Not Ready
225 /// - 20 (0x14): Not Configured
226 /// - 21 (0x15): Quiesced
227 pub Availability: Option<u16>,
228 /// Size in bytes of the blocks in this storage extent. If there is a variable block size, then
229 /// the maximum block size in bytes is specified. If the block size is unknown or if a block
230 /// concept is not valid (for example, for Aggregate Extents, Memory, or LogicalDisks), the value
231 /// is 1 (one).
232 pub BlockSize: Option<u64>,
233 /// Size of the volume in bytes.
234 pub Capacity: Option<u64>,
235 /// A short description of the area of storage.
236 pub Caption: Option<String>,
237 /// If `true`, the volume exists as one compressed entity, such as a DoubleSpace volume. If file-based
238 /// compression is supported, such as the NTFS file system, this property is `false`.
239 pub Compressed: Option<bool>,
240 /// Indicates the Win32 Configuration Manager error code. This can be one of the following values.
241 ///
242 /// Value: Meaning
243 /// - 0 (0x0): This device is working properly.
244 /// - 1 (0x1): This device is not configured correctly.
245 /// - 2 (0x2): Windows cannot load the driver for this device.
246 /// - 3 (0x3): The driver for this device might be corrupted, or your system may be running low on memory or other resources.
247 /// - 4 (0x4): This device is not working properly. One of its drivers or your registry might be corrupted.
248 /// - 5 (0x5): The driver for this device needs a resource that Windows cannot manage.
249 /// - 6 (0x6): The boot configuration for this device conflicts with other devices.
250 /// - 7 (0x7): Cannot filter.
251 /// - 8 (0x8): The driver loader for the device is missing.
252 /// - 9 (0x9): This device is not working properly because the controlling firmware is reporting the resources for the device incorrectly.
253 /// - 10 (0xA): This device cannot start.
254 /// - 11 (0xB): This device failed.
255 /// - 12 (0xC): This device cannot find enough free resources that it can use.
256 /// - 13 (0xD): Windows cannot verify this device's resources.
257 /// - 14 (0xE): This device cannot work properly until you restart your computer.
258 /// - 15 (0xF): This device is not working properly because there is probably a re-enumeration problem.
259 /// - 16 (0x10): Windows cannot identify all the resources this device uses.
260 /// - 17 (0x11): This device is asking for an unknown resource type.
261 /// - 18 (0x12): Reinstall the drivers for this device.
262 /// - 19 (0x13): Failure using the VxD loader.
263 /// - 20 (0x14): Your registry might be corrupted.
264 /// - 21 (0x15): System failure. Try changing the driver for this device. If that does not work, see your hardware documentation. Windows is removing this device.
265 /// - 22 (0x16): This device is disabled.
266 /// - 23 (0x17): System failure. Try changing the driver for this device. If that does not work, see your hardware documentation.
267 /// - 24 (0x18): This device is not present, is not working properly, or does not have all of its drivers installed.
268 /// - 25 (0x19): Windows is still setting up this device.
269 /// - 26 (0x1A): Windows is still setting up this device.
270 /// - 27 (0x1B): This device does not have a valid log configuration.
271 /// - 28 (0x1C): The drivers for this device are not installed.
272 /// - 29 (0x1D): This device is disabled because the firmware of the device did not give it the required resources.
273 /// - 30 (0x1E): This device is using an Interrupt Request resource that another device is using.
274 /// - 31 (0x1F): This device is not working properly because Windows cannot load the drivers required for this device.
275 pub ConfigManagerErrorCode: Option<u32>,
276 /// If `True`, the device is using a user-defined configuration. Otherwise, `False`.
277 pub ConfigManagerUserConfig: Option<bool>,
278 /// Indicates the name of the class or the subclass used in the creation of an instance of this class.
279 /// When used with the other key properties of this class, this property allows all instances of this
280 /// class and its subclasses to be uniquely identified.
281 pub CreationClassName: Option<String>,
282 /// A description of the object.
283 pub Description: Option<String>,
284 /// Unique identifier for the volume on this system.
285 pub DeviceID: Option<String>,
286 /// If `true`, the Chkdsk method is automatically run by the system at the next restart.
287 pub DirtyBitSet: Option<bool>,
288 /// Drive letter assigned to a volume. This property is `NULL` for volumes without drive letters.
289 pub DriveLetter: Option<String>,
290 /// Numeric value that corresponds to the type of disk drive that this logical disk represents.
291 ///
292 /// The values are:
293 ///
294 /// Value: Meaning
295 /// - 0 (0x0): Unknown
296 /// - 1 (0x1): No Root Directory
297 /// - 2 (0x2): Removable Disk
298 /// - 3 (0x3): Local Disk
299 /// - 4 (0x4): Network Drive
300 /// - 5 (0x5): Compact Disk
301 /// - 6 (0x6): RAM Disk
302 pub DriveType: Option<u32>,
303 /// If `True`, the error reported in `LastErrorCode` is now cleared.
304 pub ErrorCleared: Option<bool>,
305 /// More information about the error recorded in `LastErrorCode`, and information on any corrective
306 /// actions that may be taken.
307 pub ErrorDescription: Option<String>,
308 /// Type of error detection and correction supported by this storage extent.
309 pub ErrorMethodology: Option<String>,
310 /// File system on the logical disk.
311 ///
312 /// Example: NTFS
313 pub FileSystem: Option<String>,
314 /// Space, in bytes, available on the logical disk.
315 pub FreeSpace: Option<u64>,
316 /// If `true`, context indexing is enabled.
317 pub IndexingEnabled: Option<bool>,
318 /// Date and time the object was installed. This property does not require a value to indicate that
319 /// the object is installed.
320 pub InstallDate: Option<WMIDateTime>,
321 /// Volume name of the logical disk. This property is `null` for volumes without a label. For FAT
322 /// and FAT32 systems, the maximum length is 11 characters. For NTFS file systems, the maximum
323 /// length is 32 characters.
324 pub Label: Option<String>,
325 /// Last error code reported by the logical device.
326 pub LastErrorCode: Option<u32>,
327 /// Maximum length, in characters, of a filename component supported by a Windows drive. A filename
328 /// component is the portion of a filename between backslashes. This value can be used to indicate
329 /// that long names are supported by the file system. For example, for a FAT file system that supports
330 /// long names, the property stores the value 255—not the previous 8.3 indicator. Long names can be
331 /// supported on systems that use the NTFS file system.
332 ///
333 /// Example: 255
334 pub MaximumFileNameLength: Option<u32>,
335 /// Label by which the object is known. When subclassed, this property can be overridden to be a key
336 /// property.
337 pub Name: Option<String>,
338 /// Total number of consecutive blocks, each block the size of the value contained in the `BlockSize`
339 /// property, which form this storage extent. Total size of the storage extent can be calculated by
340 /// multiplying the value of the `BlockSize` property by the value of this property. If the value of
341 /// `BlockSize` is 1, this property is the total size of the storage extent.
342 pub NumberOfBlocks: Option<u64>,
343 /// Indicates the Win32 Plug and Play device ID of the logical device. Example: *PNP030b.
344 pub PNPDeviceID: Option<String>,
345 /// Indicates the specific power-related capabilities of the logical device. This can be one of the
346 /// following values.
347 ///
348 /// Value: Meaning
349 /// - 0 (0x0): Unknown
350 /// - 1 (0x1): Not Supported
351 /// - 2 (0x2): Disabled
352 /// - 3 (0x3): Enabled [The power management features are currently enabled but the exact feature set is unknown or the information is unavailable]
353 /// - 4 (0x4): Power Saving Modes Entered Automatically [The device can change its power state based on usage or other criteria]
354 /// - 5 (0x5): Power State Settable [The SetPowerState method is supported. This method is found on the parent CIM_LogicalDevice class and can be implemented. For more information, see Designing Managed Object Format (MOF) Classes]
355 /// - 6 (0x6): Power Cycling Supported [The SetPowerState method can be invoked with the PowerState parameter set to 5 (Power Cycle)]
356 /// - 7 (0x7): Timed Power-On Supported [The SetPowerState method can be invoked with the PowerState parameter set to 5 (Power Cycle) and Time set to a specific date and time, or interval, for power-on]
357 pub PowerManagementCapabilities: Option<Vec<u16>>,
358 /// `True`, if the device can be power managed (put into a power save state), otherwise `False`. This
359 /// boolean does not indicate that power management features are currently enabled, or if enabled,
360 /// what features are supported. Refer to the PowerManagementCapabilities array for this information.
361 /// If this boolean is false, the integer value 1, for the string, "Not Supported", should be the only
362 /// entry in the PowerManagementCapabilities array.
363 pub PowerManagementSupported: Option<bool>,
364 /// Describes the media and its use.
365 pub Purpose: Option<String>,
366 /// If `true`, quota management is enabled for this volume.
367 pub QuotasEnabled: Option<bool>,
368 /// If `true`, quota management was used but is disabled. Incomplete refers to the information left in
369 /// the file system after quota management is disabled.
370 pub QuotasIncomplete: Option<bool>,
371 /// If `true`, the file system is in the process of compiling information and setting the disk up for
372 /// quota management.
373 pub QuotasRebuilding: Option<bool>,
374 /// Current status of the object. Various operational and nonoperational statuses can be defined.
375 /// Operational statuses include: "OK", "Degraded", and "Pred Fail" (an element, such as a SMART-enabled
376 /// hard disk drive, may be functioning properly but predicting a failure in the near future).
377 /// Nonoperational statuses include: "Error", "Starting", "Stopping", and "Service". The latter, "Service",
378 /// could apply during mirror-resilvering of a disk, reload of a user permissions list, or other
379 /// administrative work. Not all such work is online, yet the managed element is neither "OK" nor in
380 /// one of the other states.
381 ///
382 /// The values are:
383 /// - "OK"
384 /// - "Error"
385 /// - "Degraded"
386 /// - "Unknown"
387 /// - "Pred Fail"
388 /// - "Starting"
389 /// - "Stopping"
390 /// - "Service"
391 /// - "Stressed"
392 /// - "NonRecover"
393 /// - "No Contact"
394 /// - "Lost Comm"
395 pub Status: Option<String>,
396 /// Indicates the state of the logical device. This can be one of the following values.
397 ///
398 /// Value Meaning
399 /// - 1 (0x1): Other
400 /// - 2 (0x2): Unknown
401 /// - 3 (0x3): Enabled
402 /// - 4 (0x4): Disabled
403 /// - 5 (0x5): Not Applicable
404 pub StatusInfo: Option<u16>,
405 /// Indicates the system's creation class name.
406 pub SystemCreationClassName: Option<String>,
407 /// Indicates the system's name.
408 pub SystemName: Option<String>,
409 /// Serial number of the volume.
410 ///
411 /// Example: A8C3D032
412 pub SerialNumber: Option<u32>,
413 /// If `true`, the volume supports disk quotas.
414 pub SupportsDiskQuotas: Option<bool>,
415 /// If `True`, the logical disk partition supports file-based compression, such as is the case
416 /// with the NTFS file system. This property is `False` when the `Compressed` property is `True`.
417 pub SupportsFileBasedCompression: Option<bool>,
418}
419
420/// The `Win32_ShadowContext` class specifies how a shadow copy is to be created, queried, or deleted,
421/// and the degree of writer involvement.
422///
423/// <https://learn.microsoft.com/en-us/previous-versions/windows/desktop/vsswmi/win32-shadowcontext>
424#[derive(Default, Deserialize, Serialize, Debug, Clone)]
425#[allow(non_snake_case)]
426#[allow(non_camel_case_types)]
427pub struct Win32_ShadowContext {
428 /// Name of the context.
429 pub Name: Option<String>,
430 /// If `true`, the shadow copy persists across restarts.
431 pub Persistent: Option<bool>,
432 /// If `true`, the shadow copy is created by the Windows Previous Versions component.
433 pub ClientAccessible: Option<bool>,
434 /// If `true`, the shadow copy is retained after the requestor process ends. If `false`, the shadow
435 /// copy is automatically deleted when the shadow copy requestor process ends.
436 pub NoAutoRelease: Option<bool>,
437 /// If `true`, the shadow copy is created without involvement of shadow copy writer components.
438 pub NoWriters: Option<bool>,
439 /// If `true`, the shadow copy can be surfaced on another computer. If `false`, and the volumes are
440 /// surfaced locally, it may not be possible to surface them later on a different computer.
441 pub Transportable: Option<bool>,
442 /// If `true`, the shadow copy is not currently in the device namespace of the local computer.
443 pub NotSurfaced: Option<bool>,
444 /// If `true`, the shadow copy is created by a hardware shadow copy provider.
445 pub HardwareAssisted: Option<bool>,
446 /// If `true`, the shadow copy is created by a differential shadow copy provider. The provider can be
447 /// implemented in hardware or software.
448 pub Differential: Option<bool>,
449 /// If `true`, the shadow copy is created by a split-mirror shadow copy provider.
450 pub Plex: Option<bool>,
451 /// If `true`, the shadow copy is imported to a computer by using the `Import` method and is not created
452 /// by using the `Create` method.
453 pub Imported: Option<bool>,
454 /// If `true`, the shadow copy is exposed on a remote computer with a network share. If both
455 /// `ExposedRemotely` and `ExposedLocally` are `false`, the shadow copy is hidden.
456 pub ExposedRemotely: Option<bool>,
457 /// If `true`, the shadow copy is exposed on a remote computer with a network share. If both
458 /// `ExposedLocally` and `ExposedRemotely` are `false`, the shadow copy is hidden.
459 pub ExposedLocally: Option<bool>,
460}
461
462/// Typically, the `Win32_ShadowProvider` class represents a component that is a combination of user-mode
463/// and kernel or firmware implementation, that creates and represents volume shadow copies.
464///
465/// <https://learn.microsoft.com/en-us/previous-versions/windows/desktop/vsswmi/win32-shadowprovider>
466#[derive(Default, Deserialize, Serialize, Debug, Clone)]
467#[allow(non_snake_case)]
468#[allow(non_camel_case_types)]
469pub struct Win32_ShadowProvider {
470 /// Uniquely identifies the shadow provider on a system.
471 pub ID: Option<String>,
472 /// Descriptive name of a provider.
473 pub Name: Option<String>,
474 /// Common Object Model (COM) class ID registered for a shadow provider.
475 pub CLSID: Option<String>,
476 /// Specifies the class to which a shadow provider belongs.
477 ///
478 /// Possible values:
479 ///
480 /// Value: Meaning
481 /// - 0: Unknown
482 /// - 1: System
483 /// - 2: Software
484 /// - 3: Hardware
485 pub Type: Option<u32>,
486 /// Text representation of a shadow provider version.
487 pub Version: Option<String>,
488 /// Numeric representation of a shadow provider version.
489 pub VersionID: Option<String>,
490}