// Copyright (c) 2008 Microsoft Corporation, All Rights Reserved

#pragma autorecover
#pragma classflags(64)
#pragma namespace("\\\\.\\root\\CIMV2")
instance of __namespace{ name="ms_809";};
#pragma namespace("\\\\.\\root\\CIMV2\\ms_809")

[Description("A StorageVolume is an Extent that is presented to the Operating System (for example, by a hardware RAID cabinet), to a File System (for example, by a software volume manager) or to another entity. StorageVolumes do NOT participate in StorageRedundancy Groups. They are directly Realized in hardware or are the end result of assembling lower level Extents.") : Amended ToSubclass,AMENDMENT, LOCALE(0x0809)] 
class CIM_StorageVolume : CIM_StorageExtent
{
};

[description("The Win32_Volume class represents an area of storage on a hard disk. The class returns local volumes that are formatted, unformatted, mounted or offline. A volume is formatted by using a file system, such as FAT or NTFS, and may have a drive letter assigned to it. A single hard disk can have multiple volumes, and volumes can also span multiple disks. The Win32_Volume class does not support diskette drive management.") : Amended ToSubclass,AMENDMENT, LOCALE(0x0809) : ToInstance] 
class Win32_Volume : CIM_StorageVolume
{
  [Key : ToInstance ToSubclass DisableOverride,DisplayName("ID") : Amended,Description("The DeviceID property contains a string uniquely identifying the volume on the system.") : Amended ToSubclass] string DeviceID;
  [DisplayName("Capacity") : Amended,Description("The Capacity property indicates in bytes, the size of the volume.") : Amended ToSubclass] uint64 Capacity;
  [DisplayName("Compressed") : Amended,Description("If TRUE, the volume exists as a single compressed entity, such as a DoubleSpace volume.If file based compression is supported (such as on NTFS), this property will be FALSE.") : Amended ToSubclass] boolean Compressed;
  [DisplayName("Drive Letter") : Amended,Description("The DriveLetter property indicates the drive letter assigned to the volume. This property is NULL for volumes without drive letters.") : Amended ToSubclass] string DriveLetter;
  [Description("The DriveType property contains a numeric value corresponding to the type of disk drive this logical disk represents.  Please refer to the Platform SDK documentation for additional values.\nExample: A CD-ROM drive would return 5.") : Amended ToSubclass,Values{"Unknown", "No Root Directory", "Removable Disk", "Local Disk", "Network Drive", "Compact Disc", "RAM Disk"} : Amended ToSubclass] uint32 DriveType;
  [DisplayName("File System") : Amended,Description("The FileSystem property indicates the file system on the logical disk. Example: NTFS") : Amended ToSubclass] string FileSystem;
  [DisplayName("Free Space") : Amended,Description("The FreeSpace property indicates in bytes how much free space is available on the volume.") : Amended ToSubclass] uint64 FreeSpace;
  [DisplayName("Indexing Enabled") : Amended,Description("If context indexing is enabled this property will be TRUE") : Amended ToSubclass] boolean IndexingEnabled;
  [DisplayName("Dirty Bit Set") : Amended,Description("Indicates if the ChkDsk method should be run at next boot up.") : Amended ToSubclass] boolean DirtyBitSet;
  [DisplayName("Label") : Amended,Description("The Label property indicates the volume name of the logical disk. Constraints: Maximum 32 characters. This property is NULL for a volume without a label.") : Amended ToSubclass] string Label;
  [DisplayName("Maximum File Name Length") : Amended,Description("Maximum length of a filename component supported by the Windows drive. A filename component is that portion of a filename between backslashes. The value can be used to indicate that long names are supported by the specified file system. For example, for a FAT file system supporting long names, the function stores the value 255, rather than the previous 8.3 indicator. Long names can also be supported on systems that use the NTFS file system. Example: 255") : Amended ToSubclass] uint32 MaximumFileNameLength;
  [DisplayName("Auto Mount Enabled") : Amended,Description("If TRUE, the Automount property indicates that the volume will be mounted to the file system automatically when the first I/O is issued. Otherwise it will not be mounted until explicitly mounted with the Mount method or by adding a drive letter or mount point.") : Amended ToSubclass] boolean Automount;
  [DisplayName("Quotas Enabled") : Amended,Description("The QuotasEnabled property indicates that quota management is enabled for this volume.") : Amended ToSubclass] boolean QuotasEnabled;
  [DisplayName("Quotas Incomplete") : Amended,Description("The QuotasIncomplete property indicates that quota management was used but has been disabled. Incomplete refers to the information left in the file system after quota management was disabled.") : Amended ToSubclass] boolean QuotasIncomplete;
  [DisplayName("Quotas Rebuilding") : Amended,Description("The QuotasRebuilding property indicates that the file system is in the active process of compiling information and setting the disk up for quota management.") : Amended ToSubclass] boolean QuotasRebuilding;
  [DisplayName("Serial Number") : Amended,Description("The SerialNumber property indicates the serial number of the volume. Example: A8C3D032") : Amended ToSubclass] uint32 SerialNumber;
  [DisplayName("Supports Disk Quotas") : Amended,Description("The SupportsDiskQuotas property indicates if the volume supports disk quotas.") : Amended ToSubclass] boolean SupportsDiskQuotas;
  [DisplayName("Supports File Based Compression") : Amended,Description("The SupportsFileBasedCompression property indicates if the volume supports file based compression as is the case with the NTFS file system.") : Amended ToSubclass] boolean SupportsFileBasedCompression;
  [DisplayName("Page File Present") : Amended,Description("The PageFilePresent property indicates whether the volume contains a system memory paging file.") : Amended ToSubclass] boolean PageFilePresent;
  [DisplayName("System Volume") : Amended,Description("The SystemVolume property indicates whether the volume contains the hardware specific files required to start the operating system.") : Amended ToSubclass] boolean SystemVolume;
  [DisplayName("Boot Volume") : Amended,Description("The BootVolume property indicates whether the volume contains the currently running operating system files.") : Amended ToSubclass] boolean BootVolume;
  [Description("This method invokes the chkdsk operation on the volume. The method is applicable to only those volume instances that represent a physical disk in the machine. It is not applicable to mapped logical drives.") : Amended ToSubclass,Values{"Success", "Success - Volume locked and chkdsk scheduled on reboot", "Unsupported file system", "Unknown file system", "No media in drive", "Unknown error"} : Amended ToSubclass] uint32 Chkdsk([in,Description("This parameter indicates what should be done to errors found on the disk. If true, then errors are fixed.") : Amended ToSubclass] boolean FixErrors,[in,Description("This parameter indicates whether a vigorous check of index entries should be performed.") : Amended ToSubclass] boolean VigorousIndexCheck,[in,Description("This parameter indicates whether the folder cycle checking should be skipped or not.") : Amended ToSubclass] boolean SkipFolderCycle,[in,Description("This parameter indicates whether the volume should be forced to dismount before checking.") : Amended ToSubclass] boolean ForceDismount,[in,Description("This parameter indicates whether the bad sectors should be located and the readable information should be recovered from these sectors.") : Amended ToSubclass] boolean RecoverBadSectors,[in,Description("This parameter indicates whether the chkdsk operation should be performed at next boot up time, in case the operation could not be performed because the disk was locked at time the method was called.") : Amended ToSubclass] boolean OkToRunAtBootUp);
  [Description("This method is used schedule chkdsk to be run at the next reboot if the dirty bit has been set.The method is applicable to only those volume instances that represent a physical disk in the machine. It is not applicable to mapped logical drives. ") : Amended ToSubclass,Values{"Success", "Remote Drive", "Removable Drive", "Drive Not Root Directory", "Unknown Drive"} : Amended ToSubclass] uint32 ScheduleAutoChk([in,Description("This parameter is used to specify the list of volumes that should be scheduled for autochk at next reboot. The string syntax consists of the the drive letter, mount point name, or volume GUID name for the volume.") : Amended ToSubclass] string Volume[]);
  [Description("This method is used to exclude volumes from the chkdsk operation to be run at the next reboot. If not excluded, chkdsk is performed on the volume if the dirty bit has been set for the disk. Note that the calls to exclude volumes are not cumulative. That is, if a call is made to excluded some volumes, then the new list is not added to the list of ones that were already marked for exclusion, instead the new list of volumes overwrites the previous one. The method is applicable to only those volume instances that represent a physical disk in the machine and is not applicable to mapped logical drives.") : Amended ToSubclass,Values{"Success", "Remote Drive", "Removable Drive", "Drive Not Root Directory", "Unknown Drive"} : Amended ToSubclass] uint32 ExcludeFromAutoChk([in,Description("This parameter is used to specify the list of volumes that should be excluded from autochk at next reboot. The string syntax consists of the the drive letter followed by a colon for the logical disk.") : Amended ToSubclass] string Volume[]);
  [Description("This method is used to format the volume.") : Amended ToSubclass,Values{"Success", "Unsupported file system", "Incompatible media in drive", "Access denied", "Call cancelled", "Call cancellation request too late", "Volume write protected", "Volume lock failed", "Unable to quick format", "Input/Output error", "Invalid volume label", "No media in drive", "Volume is too small", "Volume is too large", "Volume is not mounted", "Cluster size is too small", "Cluster size is too large", "Cluster size is beyond 32 bits", "Unknown error", "Failed to enable compression after format completed"} : Amended ToSubclass] uint32 Format([in,DisplayName("File System") : Amended,Description("The file system format to use for the volume.") : Amended ToSubclass,Values{"NTFS", "FAT32", "FAT", "UDF", "EXFAT"} : Amended ToSubclass] string FileSystem,[in,DisplayName("Quick Format") : Amended,Description("Specifies whether to perform a quick format by removing files from the disk without scanning the disk for bad sectors. Use this option only if this disk has been previously formatted and you are sure the disk is not damaged.") : Amended ToSubclass] boolean QuickFormat,[in,DisplayName("Cluster Size") : Amended,Description("Specifies the disk allocation unit size or cluster size. All file systems used by this version of Windows organize your hard disk based on cluster size, which represents the smallest amount of disk space that can be allocated to hold a file. The smaller the cluster size you use, the more efficiently your disk stores information. If no cluster size is specified during format, Windows picks defaults based on the size of the volume. These defaults have been selected to reduce the amount of space lost and to reduce the amount of fragmentation on the volume. For general use, default setting (zero) are strongly recommended.") : Amended ToSubclass] uint32 ClusterSize,[in,DisplayName("Label") : Amended,Description("The label to use for the new volume.  The volume label can contain up to 11 characters for FAT and FAT32 volumes or up to 32 characters for NTFS volumes.") : Amended ToSubclass] string Label,[in,DisplayName("Enable Compression") : Amended,Description("Indicates if the volume should be enabled for compression") : Amended ToSubclass] boolean EnableCompression,[in,DisplayName("Version") : Amended,Description("Version number of the specified file system.  This is currently only valid for UDF. The default value (zero) will cause the format engine to select the version.") : Amended ToSubclass,Values{"Default", "1.00", "1.01", "1.02", "1.50", "2.00", "2.01", "2.50"} : Amended ToSubclass] uint32 Version);
  [Description("This method is used to defrag the volume.") : Amended ToSubclass,Values{"Success", "Access denied", "Volume not supported", "Volume dirty bit is set", "Not enough free space", "Corrupt Master File Table detected", "Call Cancelled", "Call cancellation request too late", "Defrag engine is already running", "Unable to connect to defrag engine", "Defrag engine error", "Unknown error"} : Amended ToSubclass] uint32 Defrag([in,Description("This parameter is used to force the defrag even if free space on the disk is low.") : Amended ToSubclass] boolean Force,[out,Description("This parameter is a Win32_DefragAnalysis object that contains properties describing the extent to which the volume is fragmented.") : Amended ToSubclass] object DefragAnalysis);
  [Description("This method is used to generate a defrag analysis for the volume.") : Amended ToSubclass,Values{"Success", "Access denied", "Volume not supported", "Volume dirty bit is set", "Not enough free space", "Corrupt Master File Table detected", "Call Cancelled", "Call cancellation request too late", "Defrag engine is already running", "Unable to connect to defrag engine", "Defrag engine error", "Unknown error"} : Amended ToSubclass] uint32 DefragAnalysis([out,Description("This parameter indicates whether defragmentation or the volume is recommended.") : Amended ToSubclass] boolean DefragRecommended,[out,Description("This parameter is a Win32_DefragAnalysis object that contains properties describing the extent to which the volume is fragmented.") : Amended ToSubclass] object DefragAnalysis);
  [Description("This method is used to add a mount point directory for the volume.  The result of this method is the creation of a Win32_MountPoint class associating this volume with the Win32_Directory instance representing the directory specified in the parameter list") : Amended ToSubclass,Values{"Success", "Access denied", "Invalid argument", "Specified directory not empty", "Specified directory not found", "Volume mount points not supported", "Unknown error"} : Amended ToSubclass] uint32 AddMountPoint([in,Description("This parameter is the directory where the volume is to be mounted.") : Amended ToSubclass] string Directory);
  [Description("This method is used to mount a volume to the file system.") : Amended ToSubclass,Values{"Success", "Access Denied", "Unknown error"} : Amended ToSubclass] uint32 Mount();
  [Description("This method is used to dismount a volume from the file system.") : Amended ToSubclass,Values{"Success", "Access denied", "Volume has mount points", "Volume does not support the no-automount state", "Force option required", "Unknown error", "Forced dismount failed because the volume is locked."} : Amended ToSubclass] uint32 Dismount([in,Description("This parameter indicates whether the volume should be forced to dismount if open handles exist.") : Amended ToSubclass] boolean Force,[in,Description("This parameter indicates whether the volume should be dismounted to a no-automount (offline) state. The volume may be returned to the automount state by explicitly calling the Mount method or creating a mount point for the volume.") : Amended ToSubclass] boolean Permanent);
};

[Description("A DefragAnalysis is the result of executing the Win32_Volume::DefragAnalysis or Defrag methods;it is passed as an [out] parameter from these methods.") : Amended ToSubclass,AMENDMENT, LOCALE(0x0809)] 
class Win32_DefragAnalysis
{
  [DisplayName("Volume Name") : Amended,Description("The name of the volume for which this report is generated.  This property can the the volume drive letter, a mount point or the volume GUID name.") : Amended ToSubclass] string VolumeName;
  [DisplayName("Volume Size") : Amended,Description("Total size of the volume.") : Amended ToSubclass] uint64 VolumeSize;
  [DisplayName("Cluster Size") : Amended,Description("The size of the file system allocation.") : Amended ToSubclass] uint64 ClusterSize;
  [DisplayName("Used Space") : Amended,Description("The space currently used on the volume.") : Amended ToSubclass] uint64 UsedSpace;
  [DisplayName("Free Space") : Amended,Description("The space currently free on the volume.") : Amended ToSubclass] uint64 FreeSpace;
  [DisplayName("Free Space Percent") : Amended,Description("The percentage free space on the volume.") : Amended ToSubclass] uint32 FreeSpacePercent;
  [DisplayName("Total Percent Fragmentation") : Amended,Description("Total percent fragmentation on the volume. This property is deprecated because the computed value is unreliable.  Use FilePercentFragmentation to evaluate the fragmentation of the volume.") : Amended ToSubclass] uint32 TotalPercentFragmentation;
  [DisplayName("Percent File Fragmentation") : Amended,Description("Percentage of files that are fragmented on the volume.") : Amended ToSubclass] uint32 FilePercentFragmentation;
  [DisplayName("Percent Free Space Fragmentation") : Amended,Description("Percentage of freespace that is fragmented on the volume. This property is deprecated because the computed value is unreliable.  Use AverageFreeSpacePerExtent, LargestFreeSpaceExtent and TotalFreeSpaceExtents to evaluate the fragmentation of volume free space.") : Amended ToSubclass] uint32 FreeSpacePercentFragmentation;
  [DisplayName("Total Files") : Amended,Description("Total number of files on the volume.") : Amended ToSubclass] uint64 TotalFiles;
  [DisplayName("Average File Size") : Amended,Description("The average size of files on the volume.") : Amended ToSubclass] uint64 AverageFileSize;
  [DisplayName("Total Fragmented Files") : Amended,Description("The total number of fragmented files on the volume.") : Amended ToSubclass] uint64 TotalFragmentedFiles;
  [DisplayName("Total Excess Fragments") : Amended,Description("The total number excess file fragments on the volume.") : Amended ToSubclass] uint64 TotalExcessFragments;
  [DisplayName("Average Fragments Per File") : Amended,Description("The average number of fragments per file on the volume.") : Amended ToSubclass] real64 AverageFragmentsPerFile;
  [DisplayName("Page File Size") : Amended,Description("The size of the page file on the volume.  If there is no page file on the volume this property will be NULL. This property is deprecated because page file fragmentation is no longer available. The value returned for this property will always be zero.") : Amended ToSubclass] uint64 PageFileSize;
  [DisplayName("Total Page File Fragments") : Amended,Description("The total number of fragments for the page file.  If there is no page file on the volume this property will be NULL. This property is deprecated because page file fragmentation is no longer available. The value returned for this property will always be zero.") : Amended ToSubclass] uint64 TotalPageFileFragments;
  [DisplayName("Total Folders") : Amended,Description("The total number folders on the volume.") : Amended ToSubclass] uint64 TotalFolders;
  [DisplayName("Fragmented Folders") : Amended,Description("The total number fragmented folders on the volume.") : Amended ToSubclass] uint64 FragmentedFolders;
  [DisplayName("Excess Folder Fragments") : Amended,Description("The total number of excess folder fragments on the volume.") : Amended ToSubclass] uint64 ExcessFolderFragments;
  [DisplayName("Total Master File Table Size") : Amended,Description("The total size of the Master File Table on the volume.") : Amended ToSubclass] uint64 TotalMFTSize;
  [DisplayName("Master File Table Record Count") : Amended,Description("The number of records in the Master File Table.") : Amended ToSubclass] uint64 MFTRecordCount;
  [DisplayName("Master File Table In Use Percentage") : Amended,Description("The percentage of the Master File Table that is in use.") : Amended ToSubclass] uint32 MFTPercentInUse;
  [DisplayName("Total Master File Table Fragments") : Amended,Description("The total number of Master File Table fragments on the volume.") : Amended ToSubclass] uint64 TotalMFTFragments;
  [DisplayName("Average Free Space Per Extent") : Amended,Description("The average size of free space extents on the volume.") : Amended ToSubclass] uint64 AverageFreeSpacePerExtent;
  [DisplayName("Largest Free Space Extent") : Amended,Description("The size of the largest free space extent on the volume.") : Amended ToSubclass] uint64 LargestFreeSpaceExtent;
  [DisplayName("Total Free Space Extents") : Amended,Description("The total number of free space extents on the volume.") : Amended ToSubclass] uint64 TotalFreeSpaceExtents;
  [DisplayName("Total Unmovable Files") : Amended,Description("The total number of unmovable files on the volume.") : Amended ToSubclass] uint64 TotalUnmovableFiles;
};

[Description("The mount point associates a volume to the directory at which it is mounted.") : Amended ToSubclass,AMENDMENT, LOCALE(0x0809) : ToInstance] 
class Win32_MountPoint
{
  [DisplayName("Directory") : Amended,Key : ToInstance ToSubclass DisableOverride,Description("The directory") : Amended ToSubclass] Win32_Directory Ref Directory;
  [DisplayName("Volume") : Amended,Key : ToInstance ToSubclass DisableOverride,Description("The volume") : Amended ToSubclass] Win32_Volume Ref Volume;
};

[Description("The Win32_VolumeQuota association relates a volume to the per volume quota settings.") : Amended ToSubclass,AMENDMENT, LOCALE(0x0809) : ToInstance] 
class Win32_VolumeQuota : CIM_ElementSetting
{
  [DisplayName("Volume") : Amended,Key : ToInstance ToSubclass DisableOverride,Description("The volume") : Amended ToSubclass] Win32_Volume Ref Element;
  [DisplayName("Setting") : Amended,Key : ToInstance ToSubclass DisableOverride,Description("The quota setting") : Amended ToSubclass] Win32_QuotaSetting Ref Setting;
};

[Description("The Win32_VolumeUserQuota association relates per user quotas to quota enabled volumes. System administrators can configure Windows to prevent further disk space use and log an event when a user exceeds a specified disk space limit. They can also log an event when a user exceeds a specified disk space warning level. Note that disk quotas cannot be set for the Administrator accounts themselves.") : Amended ToSubclass,AMENDMENT, LOCALE(0x0809) : ToInstance] 
class Win32_VolumeUserQuota
{
  [DisplayName("Volume") : Amended,Key : ToInstance ToSubclass DisableOverride,Description("The volume") : Amended ToSubclass] Win32_Volume Ref Volume;
  [DisplayName("Account") : Amended,Key : ToInstance ToSubclass DisableOverride,Description("The user account") : Amended ToSubclass] Win32_Account Ref Account;
  [DisplayName("Status") : Amended,Description("A Status property indicates the current status of the Disk Quota.") : Amended ToSubclass,Values{"OK", "Warning", "Exceeded"} : Amended ToSubclass] uint32 Status;
  [DisplayName("Limit") : Amended,Description("The Limit property indicates the limit set for this particular user or group.") : Amended ToSubclass] uint64 Limit;
  [DisplayName("Warning Limit") : Amended,Description("The WarningLimit property indicates the warning limit set for this particular user or group.") : Amended ToSubclass] uint64 WarningLimit;
  [DisplayName("Disk Space Used") : Amended,Description("The DiskSpaceUsed property indicates the current number of Bytes currently in use by this particular user or group.") : Amended ToSubclass] uint64 DiskSpaceUsed;
};
