????

Your IP : 18.219.32.237


Current Path : C:/Windows/System32/wbem/en-US/
Upload File :
Current File : C:/Windows/System32/wbem/en-US/storagewmi.mfl

��#pragma autorecover

#pragma classflags(64)

#pragma namespace("\\\\.\\root\\Microsoft\\Windows\\Storage")

instance of __namespace{ name="MS_409";};

#pragma namespace("\\\\.\\root\\Microsoft\\Windows\\Storage\\MS_409")



[Version("2.22.1") : Amended,Description("CIM_Error is a specialized class that contains information about the severity, cause, recommended actions and other data related to the failure of a CIM Operation. Instances of this type MAY be included as part of the response to a CIM Operation.") : Amended ToSubclass,AMENDMENT, LOCALE("MS_409")] 

class CIM_Error

{

  [Description("Primary classification of the error. The following values are defined: \n2 - Communications Error. Errors of this type are principally associated with the procedures and/or processes required to convey information from one point to another. \n3 - Quality of Service Error. Errors of this type are principally associated with failures that result in reduced functionality or performance. \n4 - Software Error. Error of this type are principally associated with a software or processing fault. \n5 - Hardware Error. Errors of this type are principally associated with an equipment or hardware failure. \n6 - Environmental Error. Errors of this type are principally associated with a failure condition relating the to facility, or other environmental considerations. \n7 - Security Error. Errors of this type are associated with security violations, detection of viruses, and similar issues. \n8 - Oversubscription Error. Errors of this type are principally associated with the failure to allocate sufficient resources to complete the operation. \n9 - Unavailable Resource Error. Errors of this type are principally associated with the failure to access a required resource. \n10 -Unsupported Operation Error. Errors of this type are principally associated with requests that are not supported.") : Amended ToSubclass,Values{"Unknown", "Other", "Communications Error", "Quality of Service Error", "Software Error", "Hardware Error", "Environmental Error", "Security Error", "Oversubscription Error", "Unavailable Resource Error", "Unsupported Operation Error", "DMTF Reserved"} : Amended ToSubclass] uint16 ErrorType;

  [Description("A free-form string describing the ErrorType when 1, \"Other\", is specified as the ErrorType.") : Amended ToSubclass] string OtherErrorType;

  [Description("A string that uniquely identifies the entity that owns the definition of the format of the Message described in this instance. OwningEntity must include a copyrighted, trademarked or otherwise unique name that is owned by the business entity or standards body defining the format.") : Amended ToSubclass] string OwningEntity;

  [Description("An opaque string that uniquely identifies, within the scope of the OwningEntity, the format of the Message.") : Amended ToSubclass] string MessageID;

  [Description("The formatted message. This message is constructed by combining some or all of the dynamic elements specified in the MessageArguments property with the static elements uniquely identified by the MessageID in a message registry or other catalog associated with the OwningEntity.") : Amended ToSubclass] string Message;

  [Description("An array containing the dynamic content of the message.") : Amended ToSubclass] string MessageArguments[];

  [Description("An enumerated value that describes the severity of the Indication from the notifier\\'s point of view: \n0 - the Perceived Severity of the indication is unknown or indeterminate. \n1 - Other, by CIM convention, is used to indicate that the Severity\\'s value can be found in the OtherSeverity property. \n2 - Information should be used when providing an informative response. \n3 - Degraded/Warning should be used when its appropriate to let the user decide if action is needed. \n4 - Minor should be used to indicate action is needed, but the situation is not serious at this time. \n5 - Major should be used to indicate action is needed NOW. \n6 - Critical should be used to indicate action is needed NOW and the scope is broad (perhaps an imminent outage to a critical resource will result). \n7 - Fatal/NonRecoverable should be used to indicate an error occurred, but it\\'s too late to take remedial action. \n2 and 0 - Information and Unknown (respectively) follow common usage. Literally, the Error is purely informational or its severity is simply unknown.") : Amended ToSubclass,Values{"Unknown", "Other", "Information", "Degraded/Warning", "Minor", "Major", "Critical", "Fatal/NonRecoverable", "DMTF Reserved"} : Amended ToSubclass] uint16 PerceivedSeverity;

  [Description("An enumerated value that describes the probable cause of the error.") : Amended ToSubclass,Values{"Unknown", "Other", "Adapter/Card Error", "Application Subsystem Failure", "Bandwidth Reduced", "Connection Establishment Error", "Communications Protocol Error", "Communications Subsystem Failure", "Configuration/Customization Error", "Congestion", "Corrupt Data", "CPU Cycles Limit Exceeded", "Dataset/Modem Error", "Degraded Signal", "DTE-DCE Interface Error", "Enclosure Door Open", "Equipment Malfunction", "Excessive Vibration", "File Format Error", "Fire Detected", "Flood Detected", "Framing Error", "HVAC Problem", "Humidity Unacceptable", "I/O Device Error", "Input Device Error", "LAN Error", "Non-Toxic Leak Detected", "Local Node Transmission Error", "Loss of Frame", "Loss of Signal", "Material Supply Exhausted", "Multiplexer Problem", "Out of Memory", "Output Device Error", "Performance Degraded", "Power Problem", "Pressure Unacceptable", "Processor Problem (Internal Machine Error)", "Pump Failure", "Queue Size Exceeded", "Receive Failure", "Receiver Failure", "Remote Node Transmission Error", "Resource at or Nearing Capacity", "Response Time Excessive", "Retransmission Rate Excessive", "Software Error", "Software Program Abnormally Terminated", "Software Program Error (Incorrect Results)", "Storage Capacity Problem", "Temperature Unacceptable", "Threshold Crossed", "Timing Problem", "Toxic Leak Detected", "Transmit Failure", "Transmitter Failure", "Underlying Resource Unavailable", "Version Mismatch", "Previous Alert Cleared", "Login Attempts Failed", "Software Virus Detected", "Hardware Security Breached", "Denial of Service Detected", "Security Credential Mismatch", "Unauthorized Access", "Alarm Received", "Loss of Pointer", "Payload Mismatch", "Transmission Error", "Excessive Error Rate", "Trace Problem", "Element Unavailable", "Element Missing", "Loss of Multi Frame", "Broadcast Channel Failure", "Invalid Message Received", "Routing Failure", "Backplane Failure", "Identifier Duplication", "Protection Path Failure", "Sync Loss or Mismatch", "Terminal Problem", "Real Time Clock Failure", "Antenna Failure", "Battery Charging Failure", "Disk Failure", "Frequency Hopping Failure", "Loss of Redundancy", "Power Supply Failure", "Signal Quality Problem", "Battery Discharging", "Battery Failure", "Commercial Power Problem", "Fan Failure", "Engine Failure", "Sensor Failure", "Fuse Failure", "Generator Failure", "Low Battery", "Low Fuel", "Low Water", "Explosive Gas", "High Winds", "Ice Buildup", "Smoke", "Memory Mismatch", "Out of CPU Cycles", "Software Environment Problem", "Software Download Failure", "Element Reinitialized", "Timeout", "Logging Problems", "Leak Detected", "Protection Mechanism Failure", "Protecting Resource Failure", "Database Inconsistency", "Authentication Failure", "Breach of Confidentiality", "Cable Tamper", "Delayed Information", "Duplicate Information", "Information Missing", "Information Modification", "Information Out of Sequence", "Key Expired", "Non-Repudiation Failure", "Out of Hours Activity", "Out of Service", "Procedural Error", "Unexpected Information", "DMTF Reserved"} : Amended ToSubclass] uint16 ProbableCause;

  [Description("A free-form string describing the probable cause of the error.") : Amended ToSubclass] string ProbableCauseDescription;

  [Description("A free-form string describing recommended actions to take to resolve the error.") : Amended ToSubclass] string RecommendedActions[];

  [Description("The identifying information of the entity (i.e., the instance) generating the error. If this entity is modeled in the CIM Schema, this property contains the path of the instance encoded as a string parameter. If not modeled, the property contains some identifying string that names the entity that generated the error. The path or identifying string is formatted per the ErrorSourceFormat property.") : Amended ToSubclass] string ErrorSource;

  [Description("The format of the ErrorSource property is interpretable based on the value of this property. Values are defined as: \n0 - Unknown. The format is unknown or not meaningfully interpretable by a CIM client application. \n1 - Other. The format is defined by the value of the OtherErrorSourceFormat property.2 - CIMObjectPath. A CIM Object Path as defined in the CIM Infrastructure specification. Note: CIM 2.5 and earlier used the term object names.") : Amended ToSubclass,Values{"Unknown", "Other", "CIMObjectPath", "DMTF Reserved"} : Amended ToSubclass] uint16 ErrorSourceFormat;

  [Description("A string defining \"Other\" values for ErrorSourceFormat. This value MUST be set to a non NULL value when ErrorSourceFormat is set to a value of 1 (\"Other\"). For all other values of ErrorSourceFormat, the value of this string must be set to NULL.") : Amended ToSubclass] string OtherErrorSourceFormat;

  [Description("The CIM status code that characterizes this instance. \nThis property defines the status codes that MAY be return by a conforming CIM Server or Listener. Note that not all status codes are valid for each operation. The specification for each operation SHOULD define the status codes that may be returned by that operation. \nThe following values for CIM status code are defined: \n1 - CIM_ERR_FAILED. A general error occurred that is not covered by a more specific error code. \n2 - CIM_ERR_ACCESS_DENIED. Access to a CIM resource was not available to the client. \n3 - CIM_ERR_INVALID_NAMESPACE. The target namespace does not exist. \n4 - CIM_ERR_INVALID_PARAMETER. One or more parameter values passed to the method were invalid. \n5 - CIM_ERR_INVALID_CLASS. The specified Class does not exist. \n6 - CIM_ERR_NOT_FOUND. The requested object could not be found. \n7 - CIM_ERR_NOT_SUPPORTED. The requested operation is not supported. \n8 - CIM_ERR_CLASS_HAS_CHILDREN. Operation cannot be carried out on this class since it has instances. \n9 - CIM_ERR_CLASS_HAS_INSTANCES. Operation cannot be carried out on this class since it has instances. \n10 - CIM_ERR_INVALID_SUPERCLASS. Operation cannot be carried out since the specified superclass does not exist. \n11 - CIM_ERR_ALREADY_EXISTS. Operation cannot be carried out because an object already exists. \n12 - CIM_ERR_NO_SUCH_PROPERTY. The specified Property does not exist. \n13 - CIM_ERR_TYPE_MISMATCH. The value supplied is incompatible with the type. \n14 - CIM_ERR_QUERY_LANGUAGE_NOT_SUPPORTED. The query language is not recognized or supported. \n15 - CIM_ERR_INVALID_QUERY. The query is not valid for the specified query language. \n16 - CIM_ERR_METHOD_NOT_AVAILABLE. The extrinsic Method could not be executed. \n17 - CIM_ERR_METHOD_NOT_FOUND. The specified extrinsic Method does not exist. \n18 - CIM_ERR_UNEXPECTED_RESPONSE. The returned response to the asynchronous operation was not expected. \n19 - CIM_ERR_INVALID_RESPONSE_DESTINATION. The specified destination for the asynchronous response is not valid. \n20 - CIM_ERR_NAMESPACE_NOT_EMPTY. The specified Namespace is not empty.\n21 - CIM_ERR_INVALID_ENUMERATION_CONTEXT. The enumeration context supplied is not valid.\n22 - CIM_ERR_INVALID_OPERATION_TIMEOUT. The specified Namespace is not empty.\n23 - CIM_ERR_PULL_HAS_BEEN_ABANDONED. The specified Namespace is not empty.\n24 - CIM_ERR_PULL_CANNOT_BE_ABANDONED. The attempt to abandon a pull operation has failed.\n25 - CIM_ERR_FILTERED_ENUMERATION_NOT_SUPPORTED. Filtered Enumeratrions are not supported.\n26 - CIM_ERR_CONTINUATION_ON_ERROR_NOT_SUPPORTED. Continue on error is not supported.\n27 - CIM_ERR_SERVER_LIMITS_EXCEEDED. The WBEM Server limits have been exceeded (e.g. memory, connections, ...).\n28 - CIM_ERR_SERVER_IS_SHUTTING_DOWN. The WBEM Server is shutting down.\n29 - CIM_ERR_QUERY_FEATURE_NOT_SUPPORTED. The specified Query Feature is not supported.") : Amended ToSubclass,Values{"CIM_ERR_FAILED", "CIM_ERR_ACCESS_DENIED", "CIM_ERR_INVALID_NAMESPACE", "CIM_ERR_INVALID_PARAMETER", "CIM_ERR_INVALID_CLASS", "CIM_ERR_NOT_FOUND", "CIM_ERR_NOT_SUPPORTED", "CIM_ERR_CLASS_HAS_CHILDREN", "CIM_ERR_CLASS_HAS_INSTANCES", "CIM_ERR_INVALID_SUPERCLASS", "CIM_ERR_ALREADY_EXISTS", "CIM_ERR_NO_SUCH_PROPERTY", "CIM_ERR_TYPE_MISMATCH", "CIM_ERR_QUERY_LANGUAGE_NOT_SUPPORTED", "CIM_ERR_INVALID_QUERY", "CIM_ERR_METHOD_NOT_AVAILABLE", "CIM_ERR_METHOD_NOT_FOUND", "CIM_ERR_UNEXPECTED_RESPONSE", "CIM_ERR_INVALID_RESPONSE_DESTINATION", "CIM_ERR_NAMESPACE_NOT_EMPTY", "CIM_ERR_INVALID_ENUMERATION_CONTEXT", "CIM_ERR_INVALID_OPERATION_TIMEOUT", "CIM_ERR_PULL_HAS_BEEN_ABANDONED", "CIM_ERR_PULL_CANNOT_BE_ABANDONED", "CIM_ERR_FILTERED_ENUMERATION_NOT_SUPPORTED", "CIM_ERR_CONTINUATION_ON_ERROR_NOT_SUPPORTED", "CIM_ERR_SERVER_LIMITS_EXCEEDED", "CIM_ERR_SERVER_IS_SHUTTING_DOWN", "CIM_ERR_QUERY_FEATURE_NOT_SUPPORTED", "DMTF Reserved"} : Amended ToSubclass] uint32 CIMStatusCode;

  [Description("A free-form string containing a human-readable description of CIMStatusCode. This description MAY extend, but MUST be consistent with, the definition of CIMStatusCode.") : Amended ToSubclass] string CIMStatusCodeDescription;

};



[ClassVersion("1.0") : Amended,Description("Volume deduplication properties.") : Amended ToSubclass,AMENDMENT, LOCALE("MS_409")] 

class MSFT_DedupProperties

{

  [Description("The total logical size of all files on the volume, in bytes. This is an estimate of the volume used space if deduplication feature was disabled.") : Amended ToSubclass] uint64 UnoptimizedSize;

  [Description("The difference between the logical size of the optimized files and the logical size of the store (the deduplicated user data plus deduplication metadata).") : Amended ToSubclass] uint64 SavingsSize;

  [Description("The ratio of deduplication savings to the logical size of all of the files on the volume, expressed as a percentage.") : Amended ToSubclass] uint32 SavingsRate;

  [Description("The number of optimized files on the volume.") : Amended ToSubclass] uint64 OptimizedFilesCount;

  [Description("The total logical size of all optimized files on the volume, in bytes.") : Amended ToSubclass] uint64 OptimizedFilesSize;

  [Description("The ratio of deduplication savings to the logical size of all optimized files on the volume, expressed as a percentage.") : Amended ToSubclass] uint32 OptimizedFilesSavingsRate;

  [Description("The number of files that currently qualify for optimization.") : Amended ToSubclass] uint64 InPolicyFilesCount;

  [Description("The aggregate size of all files that currently qualify for optimization.") : Amended ToSubclass] uint64 InPolicyFilesSize;

};



[ClassVersion("1.0") : Amended,Description("Common base class for all Storage Management Provider objects") : Amended ToSubclass,AMENDMENT, LOCALE("MS_409")] 

class MSFT_StorageObject

{

  [key,Description("ObjectId is a mandatory property that is used to opaquely and uniquely identify an instance of a class. ObjectIds must be unique within the scope of the management server (which is hosting the provider). The ObjectId is created and maintained for use of the Storage Management Providers and their clients to track instances of objects. If an object is visible through two different paths (for example: there are two separate Storage Management Providers that point to the same storage subsystem) then the same object may appear with two different ObjectIds. For determining if two object instances are the same object, refer to the UniqueId property.") : Amended ToSubclass] string ObjectId;

  [Description("UniqueId is a mandatory property that is used to uniquely identify a logical instance of a storage subsystem's object. This value must be the same for an object viewed by two or more provider instances (even if they are running on seperate management servers). UniqueId can be any globally unique, opaque value unless otherwise specified by a derived class.") : Amended ToSubclass] string UniqueId;

  [Description("PassThroughIds is a comma-separated list of all implementation specific keys. It is used by storage management applications to access the vendor proprietary object model. This field should be in the form: key1='value1',key2='value2'.") : Amended ToSubclass] string PassThroughIds;

  [Description("PassThroughServer is the name or address of the computer system hosting the proprietary storage provider classes.") : Amended ToSubclass] string PassThroughServer;

  [Description("PassThroughNamespace is the WBEM namespace that contains the proprietary storage provider classes.") : Amended ToSubclass] string PassThroughNamespace;

  [Description("PassThroughClass is the WBEM class name of the proprietary storage provider object.") : Amended ToSubclass] string PassThroughClass;

};



[Description("A disk object models the operating system's concept of a disk device. The disk may be directly attached to the computer system, or a virtual disk exposed to the system through the use of a Storage Management Provider.") : Amended ToSubclass,ClassVersion("1.0") : Amended,AMENDMENT, LOCALE("MS_409")] 

class MSFT_Disk : MSFT_StorageObject

{

  [Description("UniqueId of a disk contains the VPD Page 0x83 information that uniquely identifies this disk. The following types are accepted (in order of precedence): 8 - SCSI Name String; 3 - FCPH Name; 2 - EUI64, 1 - Vendor Id, 0 - Vendor Specific. If the disk is an exposed VirtualDisk, UniqueId is used map the association between the two objects.") : Amended ToSubclass] string UniqueId;

  [Description("Path can be used to open an operating system handle to the disk device.") : Amended ToSubclass] string Path;

  [Description("Location contains the PnP location path of the disk. The format of this string depends on the bus type. If the bus type is SCSI, SAS, or PCI RAID, the format is <AdapterPnpLocationPath>#<BusType>(P<PathId>T<TargetId>L<LunId>). If the bus type is IDE, ATA, PATA, or SATA, the format is <AdapterPnpLocationPath>#<BusType>(C<PathId>T<TargetId>L<LunId>). For example, a SCSI location may look like: PCIROOT(0)#PCI(1C00)#PCI(0000)#SCSI(P00T01L01). Note: For Hyper-V and VHD images, this member is NULL because the virtual controller does not return the location path.") : Amended ToSubclass] string Location;

  [Description("FriendlyName is a user-friendly, display-oriented string to identify the disk.") : Amended ToSubclass] string FriendlyName;

  [Description("UniqueIdFormat informs the user what VPD Page 0x83 descriptor type was used to populate the UniqueId field.") : Amended ToSubclass,Values{"Vendor Specific", "Vendor Id", "EUI64", "FCPH Name", "SCSI Name String"} : Amended ToSubclass] uint16 UniqueIdFormat;

  [Description("The operating system's number for the disk. Disk 0 is typically the boot device. Disk numbers may not necessarily remain the same across reboots.") : Amended ToSubclass] uint32 Number;

  [Description("A string representation of the disk's serial number.") : Amended ToSubclass] string SerialNumber;

  [Description("A string representation of the Adapter's serial number.") : Amended ToSubclass] string AdapterSerialNumber;

  [Description("A string representation of the disk's firmware version.") : Amended ToSubclass] string FirmwareVersion;

  [Description("A string representation of the disk's hardware manufacturer.") : Amended ToSubclass] string Manufacturer;

  [Description("A string representation of the disk's model.") : Amended ToSubclass] string Model;

  [Description("The total size of the disk, measured in bytes.") : Amended ToSubclass,Units("Bytes") : Amended ToSubclass] uint64 Size;

  [Description("The amount of space currently used on the disk.") : Amended ToSubclass,Units("Bytes") : Amended ToSubclass] uint64 AllocatedSize;

  [Description("This field indicates the logical sector size of the disk in bytes. For example: a 4K native disk will report 4096, while a 512 emulated disk will report 512.") : Amended ToSubclass,Units("Bytes") : Amended ToSubclass] uint32 LogicalSectorSize;

  [Description("This field indicates the physical sector size of the disk in bytes. For example: both 4K native disks and 512 emulated disks will report 4096.") : Amended ToSubclass,Units("Bytes") : Amended ToSubclass] uint32 PhysicalSectorSize;

  [Description("This field indicates the largest contiguous block of free space on the disk. This is also the largest size of a partition which can be created on the disk.") : Amended ToSubclass,Units("Bytes") : Amended ToSubclass] uint64 LargestFreeExtent;

  [Description("Denotes the provisioning type of the disk device. \n1 - 'Thin' means that the storage for the disk is allocated on-demand. \n2 - 'Fixed' means that the storage is allocated up front.") : Amended ToSubclass,Values{"Unknown", "Thin", "Fixed"} : Amended ToSubclass] uint16 ProvisioningType;

  [Description("An array of values that denote the current operational status of the volume.\n0 - 'Unknown': The operational status is unknown.\n1 - 'Other': A vendor-specific OperationalStatus has been specified by setting the OtherOperationalStatusDescription property.\n2 - 'OK': The disk is responding to commands and is in a normal operating state.\n3 - 'Degraded': The disk is responding to commands, but is not running in an optimal operating state.\n4 - 'Stressed': The disk is functioning, but needs attention. For example, the disk might be overloaded or overheated.\n5 - 'Predictive Failure': The disk is functioning, but a failure is likely to occur in the near future.\n6 - 'Error': An error has occurred.\n7 - 'Non-Recoverable Error': A non-recoverable error has occurred.\n8 - 'Starting': The disk is in the process of starting.\n9 - 'Stopping': The disk is in the process of stopping.\n10 - 'Stopped': The disk was stopped or shut down in a clean and orderly fashion.\n11 - 'In Service': The disk is being configured, maintained, cleaned, or otherwise administered.\n12 - 'No Contact': The storage provider has knowledge of the disk, but has never been able to establish communication with it.\n13 - 'Lost Communication': The storage provider has knowledge of the disk and has contacted it successfully in the past, but the disk is currently unreachable.\n14 - 'Aborted': Similar to Stopped, except that the disk stopped abruptly and may require configuration or maintenance.\n15 - 'Dormant': The disk is reachable, but it is inactive.\n16 - 'Supporting Entity in Error': This status value does not necessarily indicate trouble with the disk, but it does indicate that another device or connection that the disk depends on may need attention.\n17 - 'Completed': The disk has completed an operation. This status value should be combined with OK, Error, or Degraded, depending on the outcome of the operation.\n0xD010 - 'Online': In Windows-based storage subsystems, this indicates that the object is online.\n0xD011 - 'Not Ready': In Windows-based storage subsystems, this indicates that the object is not ready.\n0xD012 - 'No Media': In Windows-based storage subsystems, this indicates that the object has no media present.\n0xD013 - 'Offline': In Windows-based storage subsystems, this indicates that the object is offline.\n0xD014 - 'Failed': In Windows-based storage subsystems, this indicates that the object is in a failed state.") : Amended ToSubclass,Values{"Unknown", "Other", "OK", "Degraded", "Stressed", "Predictive Failure", "Error", "Non-Recoverable Error", "Starting", "Stopping", "Stopped", "In Service", "No Contact", "Lost Communication", "Aborted", "Dormant", "Supporting Entity in Error", "Completed", "Vendor Specific", "Online", "Not Ready", "No Media", "Offline", "Failed"} : Amended ToSubclass] uint16 OperationalStatus[];

  [Description("The health status of the Volume.\n0 - 'Healthy': The disk is functioning normally.\n1 - 'Warning': The disk is still functioning, but has detected errors or issues that require administrator intervention.\n2 - 'Unhealthy': The volume is not functioning, due to errors or failures. The volume needs immediate attention from an administrator.") : Amended ToSubclass,Values{"Healthy", "Warning", "Unhealthy"} : Amended ToSubclass] uint16 HealthStatus;

  [Description("Denotes the I/O bus type used by this disk.") : Amended ToSubclass,Values{"Unknown", "SCSI", "ATAPI", "ATA", "1394", "SSA", "Fibre Channel", "USB", "RAID", "iSCSI", "SAS", "SATA", "SD", "MMC", "Virtual", "File Backed Virtual", "Storage Spaces", "NVMe", "SCM", "UFS"} : Amended ToSubclass] uint16 BusType;

  [Values{"Unknown", "MBR", "GPT"} : Amended ToSubclass] uint16 PartitionStyle;

  [Description("The MBR signature of the disk. This property is only valid on MBR disks and will be NULL for all other disk types.") : Amended ToSubclass] uint32 Signature;

  [Description("The GPT guid of the disk. This property is only valid on GPT disks and will be NULL for all other disk types.") : Amended ToSubclass] string Guid;

  [Description("If IsOffline is TRUE, this property informs the user of the specific reason for the disk being offline. \n1 - 'Policy': The user requested the disk to be offline. \n2 - 'Redundant Path': The disk is used for multi-path I/O. \n3 - 'Snapshot': The disk is a snapshot disk. \n4 - 'Collision': There was a signature or identifier collision with another disk. \n5 - 'Resource Exhaustion': There were insufficient resources to bring the disk online. \n6 - 'Critical Write Failures': There were critical write failures on the disk. \n7 - 'Data Integrity Scan Required': A data integrity scan is required.") : Amended ToSubclass,Values{"Policy", "Redundant Path", "Snapshot", "Collision", "Resource Exhaustion", "Critical Write Failures", "Data Integrity Scan Required"} : Amended ToSubclass] uint16 OfflineReason;

  [Description("If IsSystem is TRUE, this disk contains the system partition.") : Amended ToSubclass] boolean IsSystem;

  [Description("If IsClustered is TRUE, this disk is used in a clustered environment.") : Amended ToSubclass] boolean IsClustered;

  [Description("This property indicates that the computer has booted off of this disk.") : Amended ToSubclass] boolean IsBoot;

  [Description("This property indicates that the computer is configured to start off of this disk. On computers with BIOS firmware, this is the first disk that the firmware detects during startup. On computers that use EFI firmware, this is the disk that contains the EFI System Partition (ESP). If there are no disks or multiple disks with an ESP partition, this flag is not set for any disk.") : Amended ToSubclass] boolean BootFromDisk;

  [Description("If IsHighlyAvailable is TRUE, the disk is highly available.") : Amended ToSubclass] boolean IsHighlyAvailable;

  [Description("If IsScaleOut is TRUE, the disk is scaled out.") : Amended ToSubclass] boolean IsScaleOut;

  [Description("This method will attempt to create a new partition on the disk. By default, it creates a data partition using the largest available free extent. On MBR disks, CreatePartition will automatically create an extended partition when needed.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Disk is in use", "Object Not Found", "Size Not Supported", "Not enough available capacity", "Access denied", "There are not enough resources to complete the operation.", "Cache out of date", "You must specify a size by using either the Size or the UseMaximumSize parameter. You can specify only one of these parameters at a time.", "The disk has not been initialized.", "The disk is read only.", "The disk is offline.", "The disk's partition limit has been reached.", "The specified partition alignment is not valid. It must be a multiple of the disk's sector size.", "A parameter is not valid for this type of partition.", "The specified partition type is not valid.", "Only the first 2 TB are usable on MBR disks.", "The specified offset is not valid.", "There is no media in the device.", "Operation not supported on a non-empty removable disk.", "The specified partition layout is invalid.", "The specified object is managed by the Microsoft Failover Clustering component. The disk must be in cluster maintenance mode and the cluster resource status must be online to perform this operation.", "The requested access path is already in use.", "Cannot assign access paths to hidden partitions.", "The access path is not valid."} : Amended ToSubclass] uint32 CreatePartition([In,Units("Bytes") : Amended ToSubclass,Description("This parameter specifies the desired size (measured in bytes) for the partition. This must be equal to or less than the size specified by the disk's LargestFreeExtent property. This parameter cannot be used with UseMaximumSize.") : Amended ToSubclass] uint64 Size,[In,Description("If set to TRUE, the partition will fill the largest free extent on the disk. This parameter cannot be used with the Size parameter.") : Amended ToSubclass] boolean UseMaximumSize,[In,Units("Bytes") : Amended ToSubclass,Description("This parameter specifies the partition offset (measured in bytes). If the offset is not aligned and the Alignment parameter is not specified, the offset is rounded up or down to the closest alignment boundary depending on the size of the disk on which the partition is created.") : Amended ToSubclass] uint64 Offset,[In,Units("Bytes") : Amended ToSubclass] uint32 Alignment,[In,Description("This parameter allows the user to specify a drive letter for the partition at the time of creation. This parameter cannot be used in conjunction with AssignDriveLetter. If both parameters are specified, an Invalid Parameter error will be returned. If the drive letter is not available, the partition will be created, but error '42002' will be returned.") : Amended ToSubclass] char16 DriveLetter,[In,Description("If AssignDriveLetter is set to TRUE, the next available drive letter will be assigned to the created partition. If no more drive letters are available, the partition will be created with no drive letter. This parameter cannot be used in conjunction with DriveLetter. If both parameters are specified, an Invalid Parameter error will be returned.") : Amended ToSubclass] boolean AssignDriveLetter,[In,Description("Specifies the MBR partition type. MbrType can only be set if the disk's PartitionStyle property is set to 1 - 'MBR', otherwise an error will be returned. If this parameter is not specified, CreatePartition will default to type 6 - 'Huge'.") : Amended ToSubclass,Values{"FAT12", "FAT16", "Extended", "Huge", "IFS", "FAT32"} : Amended ToSubclass] uint16 MbrType,[In,Description("Specifies the GPT partition type. GptType is only valid if the disk's PartitionStyle property is set to 2 - 'GPT', otherwise an error will be returned. If this parameter is not specified, CreatePartition will default to {ebd0a0a2-b9e5-4433-87c0-68b6b72699c7} - 'Basic Data'.") : Amended ToSubclass,Values{"System Partition", "Microsoft Reserved", "Basic data", "LDM Metadata", "LDM Data", "Microsoft Recovery"} : Amended ToSubclass] string GptType,[In,Description("If TRUE, the partition will not be able to receive a drive letter assignment, nor will mount manager assign a volume GUID name. The partition will not be enumerated by the FindFirstVolume and FindNextVolume functions. The partition can be opened by its associated volume device name (i.e. \\?GLOBALROOT\\Device\\HarddiskVolumeX).") : Amended ToSubclass] boolean IsHidden,[In,Description("If TRUE, the partition's MBR active bit will be set, and the partition will become bootable. This parameter is only valid for MBR disks.") : Amended ToSubclass] boolean IsActive,[Out] MSFT_Partition CreatedPartition,[Out] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("This method initializes a RAW disk with a particular partition style. If no partition style is specified, GPT will be selected by default. If the disk is already initialized, this method will fail with a well defined error code.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Disk is in use", "Object Not Found", "Access denied", "There are not enough resources to complete the operation.", "Cache out of date", "The disk has already been initialized.", "The specified partition type is not valid.", "The disk is not large enough to support a GPT partition style.", "The specified object is managed by the Microsoft Failover Clustering component. The disk must be in cluster maintenance mode and the cluster resource status must be online to perform this operation."} : Amended ToSubclass] uint32 Initialize([In,Description("Specifies the desired partition style for the disk. If no value is given, Initialize will default to 2 - 'GPT'.") : Amended ToSubclass,Values{"MBR", "GPT"} : Amended ToSubclass] uint16 PartitionStyle,[Out] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("This method removes partition information and uninitializes a disk, sending it back into a RAW state. The caller must specify RemoveData, RemoveOEM or both with this method unless they first delete all data partitions, known OEM partitions, and ESP partitions on the disk. This requirement excludes metadata partitions such as the MSR, the LDM metadata partition, and unknown OEM partitions.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Disk is in use", "Object Not Found", "Method Parameters Checked - Job Started", "Access Denied", "There are not enough resources to complete the operation.", "Cache out of date", "The disk has not been initialized.", "The disk is read only.", "The disk is offline.", "Cannot clear with OEM partitions present. To clear OEM partitions, use the RemoveOEM flag.", "Cannot clear with data partitions present. To clear data partitions, use the RemoveData flag.", "Operation not supported on a critical disk.", "There is no media in the device.", "The specified object is managed by the Microsoft Failover Clustering component. The disk must be removed from the cluster to perform this operation."} : Amended ToSubclass] uint32 Clear([In,Description("This parameter indicates that it is OK to remove data partitions from the disk. If this parameter is FALSE or NULL, Clear will fail in the presence of a data partition.") : Amended ToSubclass] boolean RemoveData,[In,Description("This parameter indicates that it is OK to remove OEM and other special partitions. If this parameter is FALSE or not specified, Clear will fail in the presence of these types of partitions.") : Amended ToSubclass] boolean RemoveOEM,[In,Description("If TRUE, this parameter instructs Clear to zero out the entire disk in addition to removing all partition information. If the parameter is FALSE or NULL, only the first and last megabyte of the disk is zeroed.") : Amended ToSubclass] boolean ZeroOutEntireDisk,[In,Description("If TRUE, this parameter instructs Clear to send command to the disk to physically obliterate data.") : Amended ToSubclass] boolean Sanitize,[In,Description("This parameter controls the asynchronous behavior the method will follow.\nIf TRUE, this method will make use of the CreatedStorageJob out parameter when the request is taking a long time to service. If a storage job has been created to track the operation, this method will return 4096 - 'Method Parameters Checked - Job Started'. Note, even if RunAsJob is TRUE, the method can still return a result if it has finished in sufficient time. \nIf FALSE or NULL, this method will follow default WMI asynchronous behavior as determined by the client's method for invocation (i.e. synchronous unless requested otherwise).") : Amended ToSubclass] boolean RunAsJob,[Out,Description("If RunAsJob is set to TRUE and this method takes a while to execute, this parameter returns a reference to the storage job used to track the long running operation.") : Amended ToSubclass] MSFT_StorageJob Ref CreatedStorageJob,[Out] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("This method converts the partition style of an already initialized disk.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Disk is in use", "Object Not Found", "Access Denied", "There are not enough resources to complete the operation.", "Cache out of date", "The disk has not been initialized.", "The disk is read only.", "The disk is offline.", "Operation not supported on a critical disk.", "Cannot convert the style of a disk with data or other known partitions on it.", "The disk is not large enough to support a GPT partition style.", "The specified object is managed by the Microsoft Failover Clustering component. The disk must be removed from the cluster to perform this operation."} : Amended ToSubclass] uint32 ConvertStyle([In,Values{"MBR", "GPT"} : Amended ToSubclass] uint16 PartitionStyle,[Out] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("Takes the disk offline.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Disk is in use", "Object Not Found", "Access Denied", "There are not enough resources to complete the operation.", "Cache out of date", "Operation not supported on a critical disk.", "The specified object is managed by the Microsoft Failover Clustering component. The disk must be in cluster maintenance mode and the cluster resource status must be online to perform this operation."} : Amended ToSubclass] uint32 Offline([Out] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("Brings the disk online.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Disk is in use", "Object Not Found", "Access Denied", "There are not enough resources to complete the operation.", "Cache out of date", "The specified object is managed by the Microsoft Failover Clustering component. The disk must be in cluster maintenance mode and the cluster resource status must be online to perform this operation."} : Amended ToSubclass] uint32 Online([Out] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("Sets various attributes and properties of the disk. The disk must be online for most attributes to be set.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Disk is in use", "Object Not Found", "Access Denied", "There are not enough resources to complete the operation.", "Cache out of date", "The disk has not been initialized.", "The disk is offline.", "A parameter is not valid for this type of partition.", "Operation not supported on a critical disk.", "The specified object is managed by the Microsoft Failover Clustering component. The disk must be in cluster maintenance mode and the cluster resource status must be online to perform this operation."} : Amended ToSubclass] uint32 SetAttributes([In,Description("If TRUE, the disk will be made read-only. If FALSE, the disk will become writable.") : Amended ToSubclass] boolean IsReadOnly,[In,Description("Sets the MBR signature of the disk. This parameter is only valid when the disk's PartitionStyle property is set to 1 - 'MBR'. An error will be returned if the disk is any other partition style.") : Amended ToSubclass] uint32 Signature,[In,Description("Sets the GPT guid of the disk. This parameter is only valid when the disk's PartitionStyle property is set to 2 - 'GPT'. An error will be returned if the disk is any other partition style.") : Amended ToSubclass] string Guid,[Out] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("This method refreshes the cached disk layout information. This is useful when the backing disk has changed size (if the backing data store is a VHD or a virtual disk).") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Disk is in use", "Object Not Found", "Access Denied", "There are not enough resources to complete the operation.", "Cache out of date", "The disk has not been initialized.", "The disk is offline."} : Amended ToSubclass] uint32 Refresh([Out] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("This method creates a single volume using the remaining space on the disk.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Disk is in use", "Object Not Found", "Method Parameters Checked - Job Started", "Size Not Supported", "Not enough available capacity", "Access denied", "There are not enough resources to complete the operation.", "An unexpected I/O error has occurred", "The operation is not supported while the cluster is being upgraded.", "The disk has already been initialized.", "The disk is read only.", "The disk is offline.", "The disk's partition limit has been reached.", "The disk is not large enough to support a GPT partition style.", "Operation not supported on a non-empty removable disk.", "The specified object is managed by the Microsoft Failover Clustering component. The disk must be in cluster maintenance mode and the cluster resource status must be online to perform this operation.", "The specified object is managed by the Microsoft Failover Clustering component. The disk must be removed from the cluster to perform this operation.", "The requested access path is already in use.", "The access path is not valid.", "The specified cluster size is invalid.", "The specified file system is not supported", "The volume cannot be quick formatted", "The cluster size must be a multiple of the disk's physical sector size", "Cannot perform the requested operation when the drive is read only", "You must specify a name for this volume", "Starting offset of the thinly provisioned or DAX partition is not aligned to a cluster boundary.", "Cannot connect to the storage provider.", "The storage provider cannot connect to the storage subsystem.", "Failover clustering could not be enabled for this storage object.", "Failover clustering was enabled for the storage object but it failed to come online."} : Amended ToSubclass] uint32 CreateVolume([In,Description("This parameter allows the user to specify the FriendlyName at the time of the volume creation. FriendlyNames are expected to be descriptive, however they are not required to be unique. The filesystem's label will be set to this friendly name.") : Amended ToSubclass] string FriendlyName,[In,Description("Specifies the file system to format the created volume. Specifying a CSV file system is only supported on a storage spaces subsystem. For CSV the disk must be clusterable and the volume created will be a cluster shared volume.") : Amended ToSubclass,Values{"NTFS", "ReFS", "CSVFS_NTFS", "CSVFS_ReFS"} : Amended ToSubclass] uint16 FileSystem,[In,Description("If set to a valid access path, the system will attempt to use this path as a way to access the local volume. If the access path could not be set, or this parameter was left NULL, a new access path will be automatically assigned.") : Amended ToSubclass] string AccessPath,[In,Units("Bytes") : Amended ToSubclass,Description("Specifies the allocation unit size to use when formatting the volume.") : Amended ToSubclass] uint32 AllocationUnitSize,[Out] MSFT_Volume CreatedVolume,[In,Description("This parameter controls the asynchronous behavior the method will follow.\nIf TRUE, this method will make use of the CreatedStorageJob out parameter when the request is taking a long time to service. If a storage job has been created to track the operation, this method will return 4096 - 'Method Parameters Checked - Job Started'. Note, even if RunAsJob is TRUE, the method can still return a result if it has finished in sufficient time. \nIf FALSE or NULL, this method will follow default WMI asynchronous behavior as determined by the client's method for invocation (i.e. synchronous unless requested otherwise).") : Amended ToSubclass] boolean RunAsJob,[Out,Description("If RunAsJob is set to TRUE and this method takes a while to execute, this parameter returns a reference to the storage job used to track the long running operation.") : Amended ToSubclass] MSFT_StorageJob Ref CreatedStorageJob,[Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("This method enables High Availability and Scale Out features on this disk. These features are only available to disks that belong to a highly available storage subsystem.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Disk is in use", "Object Not Found", "Method Parameters Checked - Job Started", "Access denied", "An unexpected I/O error has occurred", "The operation is not supported while the cluster is being upgraded.", "The disk is read only.", "High Availability could not be enabled for this storage object.", "Scale Out could not be enabled for this storage object.", "The specified file system is not supported", "Cannot perform the requested operation when the drive is read only", "Cannot connect to the storage provider.", "The storage provider cannot connect to the storage subsystem.", "Failover clustering was enabled for the storage object but it failed to come online."} : Amended ToSubclass] uint32 EnableHighAvailability([In,Description("This parameter allows the user to specify whether the disk should enable Scale Out features. By default, this parameter is 'True', enabling Scale Out.") : Amended ToSubclass] boolean ScaleOut,[In,Description("This parameter controls the asynchronous behavior the method will follow.\nIf TRUE, this method will make use of the CreatedStorageJob out parameter when the request is taking a long time to service. If a storage job has been created to track the operation, this method will return 4096 - 'Method Parameters Checked - Job Started'. Note, even if RunAsJob is TRUE, the method can still return a result if it has finished in sufficient time. \nIf FALSE or NULL, this method will follow default WMI asynchronous behavior as determined by the client's method for invocation (i.e. synchronous unless requested otherwise).") : Amended ToSubclass] boolean RunAsJob,[Out,Description("If RunAsJob is set to TRUE and this method takes a while to execute, this parameter returns a reference to the storage job used to track the long running operation.") : Amended ToSubclass] MSFT_StorageJob Ref CreatedStorageJob,[Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("This method disables High Availability and Scale Out features of this disk. No data will be lost, however acces to the disk may be interrupted as part of this operation.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Disk is in use", "Object Not Found", "Method Parameters Checked - Job Started", "Access denied", "An unexpected I/O error has occurred", "The operation is not supported while the cluster is being upgraded.", "The disk is read only.", "High Availability could not be disabled for this storage object.", "Scale Out could not be disabled for this storage object.", "The specified file system is not supported", "Cannot perform the requested operation when the drive is read only", "Cannot connect to the storage provider.", "The storage provider cannot connect to the storage subsystem.", "Failed to offline the storage object in Failover cluster."} : Amended ToSubclass] uint32 DisableHighAvailability([In,Description("This parameter controls the asynchronous behavior the method will follow.\nIf TRUE, this method will make use of the CreatedStorageJob out parameter when the request is taking a long time to service. If a storage job has been created to track the operation, this method will return 4096 - 'Method Parameters Checked - Job Started'. Note, even if RunAsJob is TRUE, the method can still return a result if it has finished in sufficient time. \nIf FALSE or NULL, this method will follow default WMI asynchronous behavior as determined by the client's method for invocation (i.e. synchronous unless requested otherwise).") : Amended ToSubclass] boolean RunAsJob,[Out,Description("If RunAsJob is set to TRUE and this method takes a while to execute, this parameter returns a reference to the storage job used to track the long running operation.") : Amended ToSubclass] MSFT_StorageJob Ref CreatedStorageJob,[Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

};



[ClassVersion("1.0") : Amended,Description("Represents a disk image on the system.") : Amended ToSubclass,AMENDMENT, LOCALE("MS_409")] 

class MSFT_DiskImage

{

  [key,Values{"Unknown", "ISO", "VHD", "VHDX", "VHD Set"} : Amended ToSubclass] uint32 StorageType;

  [Units("Bytes") : Amended ToSubclass] uint64 FileSize;

  [Units("Bytes") : Amended ToSubclass] uint64 Size;

  [Units("Bytes") : Amended ToSubclass] uint64 LogicalSectorSize;

  [Units("Bytes") : Amended ToSubclass] uint64 BlockSize;

  uint32 Mount([In,Values{"Unknown", "Read Write", "Read-Only"} : Amended ToSubclass] uint16 Access,[In,Description("Indicates that the drive letter shouldn't be assigned after attach.") : Amended ToSubclass] boolean NoDriveLetter,[Out] MSFT_DiskImage DiskImage);

};



[ClassVersion("1.0") : Amended,Description("Association between DiskImage and Volume") : Amended ToSubclass,AMENDMENT, LOCALE("MS_409")] 

class MSFT_DiskImageToVolume

{

};



[ClassVersion("1.0") : Amended,Description("Association between Disk and Partition") : Amended ToSubclass,AMENDMENT, LOCALE("MS_409")] 

class MSFT_DiskToPartition

{

};



[ClassVersion("1.0") : Amended,AMENDMENT, LOCALE("MS_409")] 

class MSFT_DiskToStorageReliabilityCounter

{

};



[ClassVersion("1.0") : Amended,Description("This class manages file integrity.") : Amended ToSubclass,AMENDMENT, LOCALE("MS_409")] 

class MSFT_FileIntegrity

{

  [Description("Gets the file integrity information for the specified file.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter"} : Amended ToSubclass] uint32 Get([In,Description("The file to get the integrity information for.") : Amended ToSubclass] string FileName,[Out,Description("The file integrity information.") : Amended ToSubclass] MSFT_FileIntegrity FileIntegrity,[Out] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("Scrubs the data for the specified file.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter"} : Amended ToSubclass] uint32 Repair([In,Description("The file to scrub.") : Amended ToSubclass] string FileName,[Out] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("Sets the file integrity state for the specified file.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter"} : Amended ToSubclass] uint32 Set([In,Description("The file to set the integrity information for.") : Amended ToSubclass] string FileName,[In,Description("Specifies whether or not integrity streams are enabled for this file.") : Amended ToSubclass] boolean Enable,[In,Description("Specifies whether or not integrity streams are enforced for this file.") : Amended ToSubclass] boolean Enforce,[Out] MSFT_StorageExtendedStatus ExtendedStatus);

};



[Description("A file server object models the subsystems concept of a file server.") : Amended ToSubclass,ClassVersion("1.0") : Amended,AMENDMENT, LOCALE("MS_409")] 

class MSFT_FileServer : MSFT_StorageObject

{

  [Description("A user-friendly string representing the name of the file server. Friendly name can be set using the SetFriendlyName method.") : Amended ToSubclass] string FriendlyName;

  [Description("HostNames are semi-unique (scoped to the owning storage subsystem), human-readable strings used to identify a file server. There is a separate host name element per file sharing protocol.") : Amended ToSubclass] string HostNames[];

  [Description("Denotes the current health status of the file server.\n 0 - 'Healthy': TBD.\n1 - 'Warning': TBD.\n2 - 'Unhealthy': TBD.5 - 'Unknown': TBD.") : Amended ToSubclass,Values{"Healthy", "Warning", "Unhealthy", "Unknown"} : Amended ToSubclass] uint16 HealthStatus;

  [Description("Indicates the current operating conditions of the file server. Unlike HealthStatus, this field indicates the status of hardware, software, and infrastructure issues related to this server, and can contain multiple values. Various operational statuses are defined. Many of the enumeration's values are self-explanatory.") : Amended ToSubclass,Values{"Unknown", "Other", "OK", "Degraded", "Stressed", "Predictive Failure", "Error", "Non-Recoverable Error", "Starting", "Stopping", "Stopped", "In Service", "No Contact", "Lost Communication", "Aborted", "Dormant", "Supporting Entity in Error", "Completed", "Power Mode", "Relocating", "Microsoft Reserved", "Read-only", "Incomplete", "Microsoft Reserved"} : Amended ToSubclass] uint16 OperationalStatus[];

  [Description("A string representation of the vendor defined operational status. This field should only be set if the OperationalStatus array contains 1 - 'Other'.") : Amended ToSubclass] string OtherOperationalStatusDescription;

  [Description("If TRUE the server supports file share creation.") : Amended ToSubclass] boolean SupportsFileShareCreation;

  [Description("If TRUE the file server will support continuously available file shares.") : Amended ToSubclass] boolean SupportsContinuouslyAvailableFileShare;

  [Description("The file sharing protocols supported by the file server.") : Amended ToSubclass,Values{"NFS", "SMB"} : Amended ToSubclass] uint16 FileSharingProtocols[];

  [Description("Specifies the file sharing protocol versions supported.") : Amended ToSubclass] string FileSharingProtocolVersions[];

  [Description("This method creates a file share") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Method Parameters Checked - Job Started", "Size Not Supported", "Access denied", "There are not enough resources to complete the operation.", "The operation is not supported while the cluster is being upgraded.", "The requested access path is already in use.", "The access path is not valid.", "You must specify a name for this file share.", "You must specify a sharing protocol for this file share.", "You must specify a volume for this file share.", "Unable to find the mount point of the volume.", "The specified sharing protocol is not supported."} : Amended ToSubclass] uint32 CreateFileShare([In,Description("Name is a semi-unique (scoped to the owning file server), human-readable string used to identify a file share.") : Amended ToSubclass] string Name,[In,Description("Specifies a description of the share. This field can be used to store extra free-form information, such as notes or details about the intended usage.") : Amended ToSubclass] string Description,[In,Description("The volume on which the share is to be created.") : Amended ToSubclass] MSFT_Volume SourceVolume,[In,Description("The volume relative path of an existing directory to share. If this parameter is not provided, an empty share will be created.") : Amended ToSubclass] string VolumeRelativePath,[In,Description("If TRUE the share will be continuously available.") : Amended ToSubclass] boolean ContinuouslyAvailable,[In,Description("If TRUE the share will be encrypted during transport.") : Amended ToSubclass] boolean EncryptData,[In,Description("The file sharing protocol used by the share if the server supports more than one protocol.") : Amended ToSubclass,Values{"NFS", "CIFS(SMB)"} : Amended ToSubclass] uint16 FileSharingProtocol,[In,Description("This parameter controls the asynchronous behavior the method will follow.\nIf TRUE, this method will make use of the CreatedStorageJob out parameter when the request is taking a long time to service. If a storage job has been created to track the operation, this method will return 4096 - 'Method Parameters Checked - Job Started'. Note, even if RunAsJob is TRUE, the method can still return a result if it has finished in sufficient time. \nIf FALSE or NULL, this method will follow default WMI asynchronous behavior as determined by the client's method for invocation (i.e. synchronous unless requested otherwise).") : Amended ToSubclass] boolean RunAsJob,[Out] MSFT_FileShare CreatedFileShare,[Out,Description("If RunAsJob is set to TRUE and this method takes a while to execute, this parameter returns a reference to the storage job used to track the long running operation.") : Amended ToSubclass] MSFT_StorageJob Ref CreatedStorageJob,[Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("This method deletes file server. If the file server contains any file shares, these shares must be removed first.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Method Parameters Checked - Job Started", "Access denied", "There are not enough resources to complete the operation.", "Cache out of date", "The operation is not supported while the cluster is being upgraded.", "Cannot connect to the storage provider.", "The storage provider cannot connect to the storage subsystem.", "This operation is not supported for local file servers.", "The file server still contains file shares."} : Amended ToSubclass] uint32 DeleteObject([In,Description("This parameter controls the asynchronous behavior the method will follow.\nIf TRUE, this method will make use of the CreatedStorageJob out parameter when the request is taking a long time to service. If a storage job has been created to track the operation, this method will return 4096 - 'Method Parameters Checked - Job Started'. Note, even if RunAsJob is TRUE, the method can still return a result if it has finished in sufficient time. \nIf FALSE or NULL, this method will follow default WMI asynchronous behavior as determined by the client's method for invocation (i.e. synchronous unless requested otherwise).") : Amended ToSubclass] boolean RunAsJob,[Out,Description("If RunAsJob is set to TRUE and this method takes a while to execute, this parameter returns a reference to the storage job used to track the long running operation.") : Amended ToSubclass] MSFT_StorageJob Ref CreatedStorageJob,[Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("This method allows the file server to be renamed.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Access denied", "There are not enough resources to complete the operation.", "The operation is not supported while the cluster is being upgraded.", "Cannot connect to the storage provider.", "The storage provider cannot connect to the storage subsystem.", "This operation is not supported for local file servers."} : Amended ToSubclass] uint32 SetFriendlyName([In] string FriendlyName,[Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

};



[ClassVersion("1.0") : Amended,Description("Association between FileServer and its FileShares") : Amended ToSubclass,AMENDMENT, LOCALE("MS_409")] 

class MSFT_FileServerToFileShare

{

};



[ClassVersion("1.0") : Amended,Description("Association between FileServer and eligible Volumes for file shares") : Amended ToSubclass,AMENDMENT, LOCALE("MS_409")] 

class MSFT_FileServerToVolume

{

};



[Description("A file share object models the subsystem's concept of a file share.") : Amended ToSubclass,ClassVersion("1.0") : Amended,AMENDMENT, LOCALE("MS_409")] 

class MSFT_FileShare : MSFT_StorageObject

{

  [Description("Name is a semi-unique (scoped to the owning file server), human-readable string used to access and identify a file share.") : Amended ToSubclass] string Name;

  [Description("A user settable description of the file share. This field can be used to store extra free-form information, such as notes or details about the intended usage.") : Amended ToSubclass] string Description;

  [Description("The volume relative path to the directory that is being shared.") : Amended ToSubclass] string VolumeRelativePath;

  [Description("If TRUE the share is continuously available.") : Amended ToSubclass] boolean ContinuouslyAvailable;

  [Description("If TRUE the share data transmission is encrypted.") : Amended ToSubclass] boolean EncryptData;

  [Description("The file sharing protocol used by the share.") : Amended ToSubclass,Values{"NFS", "CIFS(SMB)"} : Amended ToSubclass] uint16 FileSharingProtocol;

  [Description("TODO") : Amended ToSubclass,Values{"Pending", "Online", "Offline"} : Amended ToSubclass] uint16 ShareState;

  [Description("Denotes the current health status of the file share.\n 0 - 'Healthy': TBD.\n1 - 'Warning': TBD.\n2 - 'Unhealthy': TBD.") : Amended ToSubclass,Values{"Healthy", "Warning", "Unhealthy", "Unknown"} : Amended ToSubclass] uint16 HealthStatus;

  [Description("An array of values that denote the current operational status of the fileshare.\n0 - 'Unknown': The operational status is unknown.\n1 - 'Other': A vendor-specific OperationalStatus has been specified by setting the OtherOperationalStatusDescription property.\n2 - 'OK': The disk is responding to commands and is in a normal operating state.\n3 - 'Degraded': The disk is responding to commands, but is not running in an optimal operating state.\n4 - 'Stressed': The disk is functioning, but needs attention. For example, the disk might be overloaded or overheated.\n5 - 'Predictive Failure': The disk is functioning, but a failure is likely to occur in the near future.\n6 - 'Error': An error has occurred.\n7 - 'Non-Recoverable Error': A non-recoverable error has occurred.\n8 - 'Starting': The disk is in the process of starting.\n9 - 'Stopping': The disk is in the process of stopping.\n10 - 'Stopped': The disk was stopped or shut down in a clean and orderly fashion.\n11 - 'In Service': The disk is being configured, maintained, cleaned, or otherwise administered.\n12 - 'No Contact': The storage provider has knowledge of the disk, but has never been able to establish communication with it.\n13 - 'Lost Communication': The storage provider has knowledge of the disk and has contacted it successfully in the past, but the disk is currently unreachable.\n14 - 'Aborted': Similar to Stopped, except that the disk stopped abruptly and may require configuration or maintenance.\n15 - 'Dormant': The disk is reachable, but it is inactive.\n16 - 'Supporting Entity in Error': This status value does not necessarily indicate trouble with the disk, but it does indicate that another device or connection that the disk depends on may need attention.\n17 - 'Completed': The disk has completed an operation. This status value should be combined with OK, Error, or Degraded, depending on the outcome of the operation.\n0xD010 - 'Online': In Windows-based storage subsystems, this indicates that the object is online.\n0xD011 - 'Not Ready': In Windows-based storage subsystems, this indicates that the object is not ready.\n0xD012 - 'No Media': In Windows-based storage subsystems, this indicates that the object has no media present.\n0xD013 - 'Offline': In Windows-based storage subsystems, this indicates that the object is offline.\n0xD014 - 'Failed': In Windows-based storage subsystems, this indicates that the object is in a failed state.") : Amended ToSubclass,Values{"Unknown", "Other", "OK", "Degraded", "Stressed", "Predictive Failure", "Error", "Non-Recoverable Error", "Starting", "Stopping", "Stopped", "In Service", "No Contact", "Lost Communication", "Aborted", "Dormant", "Supporting Entity in Error", "Completed", "Vendor Specific", "Online", "Not Ready", "No Media", "Offline", "Failed"} : Amended ToSubclass] uint16 OperationalStatus[];

  [Description("This method deletes a file share. Deleting the share does not delete the underlying volume.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Method Parameters Checked - Job Started", "Access denied", "There are not enough resources to complete the operation.", "Cache out of date", "The operation is not supported while the cluster is being upgraded."} : Amended ToSubclass] uint32 DeleteObject([In,Description("This parameter controls the asynchronous behavior the method will follow.\nIf TRUE, this method will make use of the CreatedStorageJob out parameter when the request is taking a long time to service. If a storage job has been created to track the operation, this method will return 4096 - 'Method Parameters Checked - Job Started'. Note, even if RunAsJob is TRUE, the method can still return a result if it has finished in sufficient time. \nIf FALSE or NULL, this method will follow default WMI asynchronous behavior as determined by the client's method for invocation (i.e. synchronous unless requested otherwise).") : Amended ToSubclass] boolean RunAsJob,[Out,Description("If RunAsJob is set to TRUE and this method takes a while to execute, this parameter returns a reference to the storage job used to track the long running operation.") : Amended ToSubclass] MSFT_StorageJob Ref CreatedStorageJob,[Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("This method allows a user to set the description field of the share.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Access denied", "There are not enough resources to complete the operation.", "Cache out of date", "The operation is not supported while the cluster is being upgraded.", "Cannot connect to the storage provider.", "The storage provider cannot connect to the storage subsystem.", "This operation is not supported for local file servers."} : Amended ToSubclass] uint32 SetDescription([In] string Description,[Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("This method allows the user to update or set various attributes on the file server. Note that not all parameters must be specified, and only those given will be updated.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Access denied", "There are not enough resources to complete the operation.", "Cache out of date", "The operation is not supported while the cluster is being upgraded.", "Cannot connect to the storage provider.", "The storage provider cannot connect to the storage subsystem."} : Amended ToSubclass] uint32 SetAttributes([In,Description("If TRUE the share will be encrypted during transport.") : Amended ToSubclass] boolean EncryptData,[Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("This method gets the access control entries for the specified accounts.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Access denied", "There are not enough resources to complete the operation.", "Cache out of date", "The operation is not supported while the cluster is being upgraded."} : Amended ToSubclass] uint32 GetAccessControlEntries([Out,Description("The access control entries for the share.") : Amended ToSubclass] MSFT_FileShareAccessControlEntry AccessControlEntries[],[Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("This method grants the specified user accounts the specified access to the file share. ") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Method Parameters Checked - Job Started", "Access denied", "There are not enough resources to complete the operation.", "Cache out of date", "The operation is not supported while the cluster is being upgraded.", "At least one account name needs to be specified", "You must specify an access right", "The specified user account could not be found"} : Amended ToSubclass] uint32 GrantAccess([In,Description("User accounts to grant access to the file share.") : Amended ToSubclass] string AccountNames[],[In,Description("Read, Modify or All.") : Amended ToSubclass] uint32 AccessRight,[Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("This method revokes accesses to the file share for the specified users.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Method Parameters Checked - Job Started", "Access denied", "There are not enough resources to complete the operation.", "Cache out of date", "The operation is not supported while the cluster is being upgraded.", "At least one account name needs to be specified", "The specified user account could not be found"} : Amended ToSubclass] uint32 RevokeAccess([In,Description("Users to revoke access to the file share.") : Amended ToSubclass] string AccountNames[],[Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("This method denies the specified users access to the file share.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Method Parameters Checked - Job Started", "Access denied", "There are not enough resources to complete the operation.", "Cache out of date", "The operation is not supported while the cluster is being upgraded.", "At least one account name needs to be specified", "The specified user account could not be found"} : Amended ToSubclass] uint32 BlockAccess([In,Description("User accounts to deny access to the file share.") : Amended ToSubclass] string AccountNames[],[Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("This method removes the specified users from the denied access list for the file share.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Method Parameters Checked - Job Started", "Access denied", "There are not enough resources to complete the operation.", "Cache out of date", "The operation is not supported while the cluster is being upgraded.", "At least one account name needs to be specified", "The specified user account could not be found"} : Amended ToSubclass] uint32 UnblockAccess([In,Description("User accounts to remove from the deny access list for the file share.") : Amended ToSubclass] string AccountNames[],[Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("This method performs a diagnostic on the storage subsystem, returning any actionable results.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Access denied", "There are not enough resources to complete the operation.", "Cache out of date", "The operation is not supported while the cluster is being upgraded.", "Failed to communicate with cluster health resource", "Method not supported in this subsystem.", "The Storage Health is not online."} : Amended ToSubclass] uint32 Diagnose([Out,Description("The actionable results of diagnose.") : Amended ToSubclass] MSFT_StorageDiagnoseResult DiagnoseResults[],[Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("This method retrieved the Health Actions being perfomed on the File Share.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Access denied", "There are not enough resources to complete the operation.", "Cache out of date", "The operation is not supported while the cluster is being upgraded.", "Failed to communicate with cluster health resource", "Method not supported in this subsystem.", "The Storage Health is not online."} : Amended ToSubclass] uint32 GetActions([Out,Description("Health Actions currently being performed on the File Share.") : Amended ToSubclass] MSFT_HealthAction ActionResults[],[Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

};



[ClassVersion("1.0") : Amended,Description("A file share access control entry object models the subsystem's concept of an access control entry for a file share.") : Amended ToSubclass,AMENDMENT, LOCALE("MS_409")] 

class MSFT_FileShareAccessControlEntry

{

  [Description("The name of the account to which the access right is granted.") : Amended ToSubclass] string AccountName;

  [Description("Denotes the access type ( Allow, Deny ).") : Amended ToSubclass,Values{"Allow", "Deny"} : Amended ToSubclass] uint16 AccessControlType;

  [Description("Denotes the access right.") : Amended ToSubclass,Values{"Full", "Modify", "Read", "Custom"} : Amended ToSubclass] uint16 AccessRight;

};



[ClassVersion("1.0") : Amended,Description("This class manages file pinning.") : Amended ToSubclass,AMENDMENT, LOCALE("MS_409")] 

class MSFT_FileStorageTier

{

  [Values{"Unknown", "OK", "Insufficient Capacity", "In Process", "Pending"} : Amended ToSubclass] uint16 State;

  [Values{"Unknown", "Completely on tier", "Partially on tier", "Not on tier"} : Amended ToSubclass] uint16 PlacementStatus;

  [Values{"Auto", "Capacity", "Performance"} : Amended ToSubclass] uint16 DesiredStorageTierClass;

  [Description("This method gets the tier information for pinned files.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "File not found.", "The specified volume does not support storage tiers.", "The Storage Tiers Management service detected that the specified volume is in the process of being dismounted.", "The file identifier specified is not valid on the volume.", "Storage tier operations must be called on the clustering node that owns the metadata volume.", "The specified storage tier could not be found on the volume. Confirm that the storage tier name is valid.", "The Storage Tiers Management service is already optimizing the storage tiers on the specified volume.", "The requested object type cannot be assigned to a storage tier."} : Amended ToSubclass] uint32 Get([In] string FilePath,[In] char16 VolumeDriveLetter,[In] string VolumePath,[In] MSFT_Volume Volume,[In] uint16 PinnedState,[In] uint16 PinnedStorageTierClass,[In] uint16 AllocatedStorageTierClass,[Out] MSFT_FileStorageTier FileStorageTier[]);

  [Description("This method is used to pin a file to a storage tier.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "File not found.", "The specified volume does not support storage tiers.", "The Storage Tiers Management service detected that the specified volume is in the process of being dismounted.", "The file identifier specified is not valid on the volume.", "Storage tier operations must be called on the clustering node that owns the metadata volume.", "The specified storage tier could not be found on the volume. Confirm that the storage tier name is valid.", "The Storage Tiers Management service is already optimizing the storage tiers on the specified volume.", "The requested object type cannot be assigned to a storage tier."} : Amended ToSubclass] uint32 Set([In] string FilePath,[In] string DesiredStorageTierFriendlyName,[In] string DesiredStorageTierUniqueId,[In] uint16 DesiredStorageTierClass,[In] MSFT_StorageTier DesiredStorageTier);

  [Description("This method is used to unpin a file from a storage tier.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "File not found.", "The specified volume does not support storage tiers.", "The Storage Tiers Management service detected that the specified volume is in the process of being dismounted.", "The file identifier specified is not valid on the volume.", "Storage tier operations must be called on the clustering node that owns the metadata volume.", "The specified storage tier could not be found on the volume. Confirm that the storage tier name is valid.", "The Storage Tiers Management service is already optimizing the storage tiers on the specified volume.", "The requested object type cannot be assigned to a storage tier.", "The requested file(s) is(are) not pinned to a tier."} : Amended ToSubclass] uint32 Clear([In] string FilePath);

};



[Description("This class represents health-related system activities that are rolled up and scoped by the three designated health-monitored classes, i.e. MSFT_StorageSubsystem, MSFT_FileShare, and MSFT_Volume.") : Amended ToSubclass,ClassVersion("1.0") : Amended,AMENDMENT, LOCALE("MS_409")] 

class MSFT_HealthAction : MSFT_StorageObject

{

  [Description("The type of Health Action.") : Amended ToSubclass] string Type;

  [Description("The short summary description of the action.") : Amended ToSubclass] string Reason;

  [Description("A identifier of the object that triggered the action.") : Amended ToSubclass] string ReportingObjectId;

  [Description("A unique identifier of the object that triggered the action.") : Amended ToSubclass] string ReportingObjectUniqueId;

  [Description("A string that uniquely identifies the type of the object that triggered the action.") : Amended ToSubclass] string ReportingObjectType;

  [Description("The message parameters that are plugged into the default message template for the Health Action type. These can be plugged into a custom message.") : Amended ToSubclass] string MessageParameters[];

  [Description("The full description of the action.") : Amended ToSubclass] string Description;

  [Description("This is the error code if the action failed. This should be set to 0 if the action was successful. This should be NULL until the action has completed.") : Amended ToSubclass] uint32 ErrorCode;

  [Description("A free-form string that can contain a vendor-specific error description if the action failed.") : Amended ToSubclass] string ErrorDescription;

  [Description("Current high level state of the action.") : Amended ToSubclass,Values{"None", "Scheduled", "Running", "Paused", "Succeeded", "Canceled", "Failed"} : Amended ToSubclass] uint16 State;

  [Description("A free-form string that provides implementation-specific status of the action.") : Amended ToSubclass] string Status;

  [Description("The percentage of the action that has completed at the time that this value is requested.") : Amended ToSubclass,Units("Percent") : Amended ToSubclass] uint16 PercentComplete;

  [Description("The time that the action was started.") : Amended ToSubclass] datetime StartTime;

};



[ClassVersion("1.0") : Amended,Description("Base storage event indication") : Amended ToSubclass,AMENDMENT, LOCALE("MS_409")] 

class MSFT_StorageEvent

{

  [Description("This field allows the Storage Management Provider (SMP) to provide a brief description explaining the indication.") : Amended ToSubclass] string Description;

  [Description("Denotes the date and time in which the event that triggered this indication occurred.") : Amended ToSubclass] datetime EventTime;

  [Description("Denotes the perceived severity of the event from the notifier's point of view. \n0 - 'Unknown': The severity is unknown or indeterminate. \n2 - 'Information': The event is for informative purposes. \n3 - 'Degraded/Warning': Action may be required by the user. \n4 - 'Minor': Action is needed, but the situation is not serious at this time. \n5 - 'Major': Immediate action is needed. \n6 - 'Critical': Immediate action is needed and the scope of the issue is broad. \n7 - 'Fatal/NonRecoverable': An error has occurred, but it is too late to take remedial action. \n") : Amended ToSubclass,Values{"Unknown", "Information", "Degraded/Warning", "Minor", "Major", "Critical", "Fatal/NonRecoverable", "Microsoft Reserved"} : Amended ToSubclass] uint16 PerceivedSeverity;

  [Description("This field indicates the object that caused the indication.") : Amended ToSubclass] string SourceObjectId;

  [Description("This field indicates the class of the object which caused the indication. For example: if the object causing the indication is a storage pool, this field should be set to MSFT_StoragePool (not the vendor derived class).") : Amended ToSubclass] string SourceClassName;

};



[Description("Storage health action event") : Amended ToSubclass,ClassVersion("1.0") : Amended,AMENDMENT, LOCALE("MS_409")] 

class MSFT_HealthActionEvent : MSFT_StorageEvent

{

  [Description("A globally unique identifier for the storage subsystem") : Amended ToSubclass] string StorageSubsystemUniqueId;

  [Description("The state change of the alert.") : Amended ToSubclass,Values{"Creation", "Deletion", "Modification", "Progress Update"} : Amended ToSubclass] uint16 ChangeType;

  [Description("A unique identifier for the health action instance.") : Amended ToSubclass] string HealthActionId;

  [Description("A string that uniquely identifies the type of health action.") : Amended ToSubclass] string HealthActionType;

  [Description("The short summary description of the health action.") : Amended ToSubclass] string Reason;

  [Description("The percentage of the action that has completed at the time that this value is requested.") : Amended ToSubclass,Units("Percent") : Amended ToSubclass] uint16 PercentComplete;

  [Description("Current high level state of the action.") : Amended ToSubclass,Values{"None", "Scheduled", "Running", "Paused", "Succeeded", "Canceled", "Failed"} : Amended ToSubclass] uint16 State;

  [Description("A free-form string that provides implementation-specific status of the action.") : Amended ToSubclass] string Status;

  [Description("The time that the action was started.") : Amended ToSubclass] datetime StartTime;

};



[ClassVersion("1.0") : Amended,AMENDMENT, LOCALE("MS_409")] 

class MSFT_HealthRecord

{

  [Values{"Bytes", "BytesPerSecond", "CountPerSecond", "Seconds", "Percentage", "Dimensionless"} : Amended ToSubclass] uint16 Units;

};



[ClassVersion("1.0") : Amended,AMENDMENT, LOCALE("MS_409")] 

class MSFT_HealthRecordReal64 : MSFT_HealthRecord

{

};



[ClassVersion("1.0") : Amended,AMENDMENT, LOCALE("MS_409")] 

class MSFT_HealthRecordUInt64 : MSFT_HealthRecord

{

};



[Description("This object represents the storage subsystem's view of an initiator port. This is used in conjunction with target port to establish which initiator port is allowed to access to the subsystem's virtual disks.") : Amended ToSubclass,ClassVersion("1.0") : Amended,AMENDMENT, LOCALE("MS_409")] 

class MSFT_InitiatorId : MSFT_StorageObject

{

  [Description("This field contains the address or unique identifier for the corresponding initiator port.") : Amended ToSubclass] string InitiatorAddress;

  [Description("This field specifies the type of the identifier used for initiator address.") : Amended ToSubclass,Values{"Other", "PortWWN", "NodeWWN", "Hostname", "iSCSI Name", "SwitchWWN", "SASAddress"} : Amended ToSubclass] uint16 Type;

  [Description("This field specifies the operating system, version, driver, and other host environment factors that influence the behavior exposed by storage systems.") : Amended ToSubclass,Values{"Unknown", "Other", "Standard", "Solaris", "HPUX", "OpenVMS", "Tru64", "Netware", "Sequent", "AIX", "DGUX", "Dynix", "Irix", "Cisco iSCSI Storage Router", "Linux", "Microsoft Windows", "OS400", "TRESPASS", "HI-UX", "VMware ESXi", "Microsoft Windows Server 2008", "Microsoft Windows Server 2003", "Microsoft Reserved", "Vendor Specific"} : Amended ToSubclass] uint16 HostType[];

  [Description("When the corresponding array entry in HostType[] is \"Other\", this entry provides a string describing the manufacturer and OS/Environment. When the corresponding HostType[] entry is not \"Other\", this entry allows variations or qualifications of ClientTypes - for example, different versions of Solaris.") : Amended ToSubclass] string OtherHostTypeDescription[];

  [Description("Allows the user to delete an instance of an initiator id") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Access denied", "There are not enough resources to complete the operation.", "Cache out of date", "Cannot connect to the storage provider.", "The storage provider cannot connect to the storage subsystem."} : Amended ToSubclass] uint32 DeleteObject([Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

};



[ClassVersion("1.0") : Amended,Description("Association between InitiatorId and VirtualDisk") : Amended ToSubclass,AMENDMENT, LOCALE("MS_409")] 

class MSFT_InitiatorIdToVirtualDisk

{

};



[ClassVersion("1.0") : Amended,Description("This class represents a Host Bus Adapter (HBA) an initiator port on the host system.") : Amended ToSubclass,AMENDMENT, LOCALE("MS_409")] 

class MSFT_InitiatorPort

{

  [Values{"Unknown", "Other", "Not present", "Fabric", "Public Loop", "FL Port", "Fabric Port", "Fabric expansion port", "Generic Fabric Port", "Private Loop", "Point to Point", "SAS", "SATA", "SAS Expander"} : Amended ToSubclass] uint16 PortType;

  [Values{"Other", "Fibre Channel", "iSCSI", "SAS"} : Amended ToSubclass] uint16 ConnectionType;

  [Values{"Unknown", "Operational", "User Offline", "Bypassed", "In diagnostics mode", "Link Down", "Port Error", "Loopback"} : Amended ToSubclass] uint16 OperationalStatus[];

  [Description("Allows setting the NodeAddress for an iSCSI initiator port by passing an IQN as the NodeAddress string.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter"} : Amended ToSubclass] uint32 SetNodeAddress([In] string NodeAddress,[Out] MSFT_StorageExtendedStatus ExtendedStatus);

};



[Description("A masking set is a collection of virtual disks, target ports, and initiator ids that are used for bulk Show and Hide operations. When a resource is added to a masking set it is made available for access to all other resources in the masking set. For example, adding a virtual disk object to a masking set will allow all initiator IDs in the masking set to access the virtual disk object.") : Amended ToSubclass,ClassVersion("1.0") : Amended,AMENDMENT, LOCALE("MS_409")] 

class MSFT_MaskingSet : MSFT_StorageObject

{

  [Description("FriendlyName is a user-friendly name of the masking set. It is specified during the creation of the masking set, and can be changed using the SetFriendlyName method.") : Amended ToSubclass] string FriendlyName;

  [Description("Name is a user-friendly system defined name for the masking set. Name is unique within the scope of the owning storage subsystem.") : Amended ToSubclass] string Name;

  [Description("This field specifies the operating system, version, driver, and other host environment factors that influence the behavior exposed by the storage subsystem.") : Amended ToSubclass,Values{"Unknown", "Other", "Standard", "Solaris", "HPUX", "OpenVMS", "Tru64", "Netware", "Sequent", "AIX", "DGUX", "Dynix", "Irix", "Cisco iSCSI Storage Router", "Linux", "Microsoft Windows", "OS400", "TRESPASS", "HI-UX", "VMware ESXi", "Microsoft Windows Server 2008", "Microsoft Windows Server 2003", "Microsoft Reserved", "Vendor Specific"} : Amended ToSubclass] uint16 HostType;

  [Description("This method adds an initiator to the masking set. All virtual disks in the masking set will be accessible (shown) to these initiators.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Method Parameters Checked - Job Started", "Access denied", "There are not enough resources to complete the operation.", "Cannot connect to the storage provider.", "The storage provider cannot connect to the storage subsystem.", "The initiator address specified is not valid", "Only one initiator address is acceptable for this operation."} : Amended ToSubclass] uint32 AddInitiatorId([In,Description("This parameter is an array of initiator addresses. For each address contained in this array, a corresponding initiator ID instance should be created and then associated with this masking set.") : Amended ToSubclass] string InitiatorIds[],[In,Values{"Unknown", "Other", "Standard", "Solaris", "HPUX", "OpenVMS", "Tru64", "Netware", "Sequent", "AIX", "DGUX", "Dynix", "Irix", "Cisco iSCSI Storage Router", "Linux", "Microsoft Windows", "OS400", "TRESPASS", "HI-UX", "VMware ESXi", "Microsoft Windows Server 2008", "Microsoft Windows Server 2003", "Microsoft Reserved", "Vendor Specific"} : Amended ToSubclass] uint16 HostType,[In,Description("This parameter controls the asynchronous behavior the method will follow.\nIf TRUE, this method will make use of the CreatedStorageJob out parameter when the request is taking a long time to service. If a storage job has been created to track the operation, this method will return 4096 - 'Method Parameters Checked - Job Started'. Note, even if RunAsJob is TRUE, the method can still return a result if it has finished in sufficient time. \nIf FALSE or NULL, this method will follow default WMI asynchronous behavior as determined by the client's method for invocation (i.e. synchronous unless requested otherwise).") : Amended ToSubclass] boolean RunAsJob,[Out,Description("If RunAsJob is set to TRUE and this method takes a while to execute, this parameter returns a reference to the storage job used to track the long running operation.") : Amended ToSubclass] MSFT_StorageJob Ref CreatedStorageJob,[Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("This method removes one or more initiator ids from the masking set. Note that the initiator id instances themselves should not be deleted from the system.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Method Parameters Checked - Job Started", "Access denied", "There are not enough resources to complete the operation.", "Cannot connect to the storage provider.", "The storage provider cannot connect to the storage subsystem.", "The initiator address specified is not valid"} : Amended ToSubclass] uint32 RemoveInitiatorId([In] string InitiatorIds[],[In,Description("This parameter controls the asynchronous behavior the method will follow.\nIf TRUE, this method will make use of the CreatedStorageJob out parameter when the request is taking a long time to service. If a storage job has been created to track the operation, this method will return 4096 - 'Method Parameters Checked - Job Started'. Note, even if RunAsJob is TRUE, the method can still return a result if it has finished in sufficient time. \nIf FALSE or NULL, this method will follow default WMI asynchronous behavior as determined by the client's method for invocation (i.e. synchronous unless requested otherwise).") : Amended ToSubclass] boolean RunAsJob,[Out,Description("If RunAsJob is set to TRUE and this method takes a while to execute, this parameter returns a reference to the storage job used to track the long running operation.") : Amended ToSubclass] MSFT_StorageJob Ref CreatedStorageJob,[Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("This method adds one or more target ports to the masking set.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Method Parameters Checked - Job Started", "Access denied", "There are not enough resources to complete the operation.", "Cannot connect to the storage provider.", "The storage provider cannot connect to the storage subsystem.", "The target port address specified is not valid."} : Amended ToSubclass] uint32 AddTargetPort([In] string TargetPortAddresses[],[In,Description("This parameter controls the asynchronous behavior the method will follow.\nIf TRUE, this method will make use of the CreatedStorageJob out parameter when the request is taking a long time to service. If a storage job has been created to track the operation, this method will return 4096 - 'Method Parameters Checked - Job Started'. Note, even if RunAsJob is TRUE, the method can still return a result if it has finished in sufficient time. \nIf FALSE or NULL, this method will follow default WMI asynchronous behavior as determined by the client's method for invocation (i.e. synchronous unless requested otherwise).") : Amended ToSubclass] boolean RunAsJob,[Out,Description("If RunAsJob is set to TRUE and this method takes a while to execute, this parameter returns a reference to the storage job used to track the long running operation.") : Amended ToSubclass] MSFT_StorageJob Ref CreatedStorageJob,[Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("This method removes one or more target ports from the masking set.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Method Parameters Checked - Job Started", "Access denied", "There are not enough resources to complete the operation.", "Cannot connect to the storage provider.", "The storage provider cannot connect to the storage subsystem.", "The target port address specified is not valid."} : Amended ToSubclass] uint32 RemoveTargetPort([In] string TargetPortAddresses[],[In,Description("This parameter controls the asynchronous behavior the method will follow.\nIf TRUE, this method will make use of the CreatedStorageJob out parameter when the request is taking a long time to service. If a storage job has been created to track the operation, this method will return 4096 - 'Method Parameters Checked - Job Started'. Note, even if RunAsJob is TRUE, the method can still return a result if it has finished in sufficient time. \nIf FALSE or NULL, this method will follow default WMI asynchronous behavior as determined by the client's method for invocation (i.e. synchronous unless requested otherwise).") : Amended ToSubclass] boolean RunAsJob,[Out,Description("If RunAsJob is set to TRUE and this method takes a while to execute, this parameter returns a reference to the storage job used to track the long running operation.") : Amended ToSubclass] MSFT_StorageJob Ref CreatedStorageJob,[Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("This method adds a virtual disk to the masking set, allowing it to be shown to the initiators contained in the set.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Method Parameters Checked - Job Started", "Access denied", "There are not enough resources to complete the operation.", "Cannot connect to the storage provider.", "The storage provider cannot connect to the storage subsystem.", "The specified virtual disk could not be found.", "The device number specified is not valid.", "DeviceAccess must be specified for each virtual disk."} : Amended ToSubclass] uint32 AddVirtualDisk([In] string VirtualDiskNames[],[In] string DeviceNumbers[],[In,Values{"Read Write", "Read-Only", "No Access"} : Amended ToSubclass] uint16 DeviceAccesses[],[In,Description("This parameter controls the asynchronous behavior the method will follow.\nIf TRUE, this method will make use of the CreatedStorageJob out parameter when the request is taking a long time to service. If a storage job has been created to track the operation, this method will return 4096 - 'Method Parameters Checked - Job Started'. Note, even if RunAsJob is TRUE, the method can still return a result if it has finished in sufficient time. \nIf FALSE or NULL, this method will follow default WMI asynchronous behavior as determined by the client's method for invocation (i.e. synchronous unless requested otherwise).") : Amended ToSubclass] boolean RunAsJob,[Out,Description("If RunAsJob is set to TRUE and this method takes a while to execute, this parameter returns a reference to the storage job used to track the long running operation.") : Amended ToSubclass] MSFT_StorageJob Ref CreatedStorageJob,[Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("This method removes a virtual disk from the masking set. Once removed, this virtual disk will no longer be shown to the initiators contained in this masking set.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Method Parameters Checked - Job Started", "Access denied", "There are not enough resources to complete the operation.", "Cannot connect to the storage provider.", "The storage provider cannot connect to the storage subsystem.", "The specified virtual disk could not be found."} : Amended ToSubclass] uint32 RemoveVirtualDisk([In] string VirtualDiskNames[],[In,Description("This parameter controls the asynchronous behavior the method will follow.\nIf TRUE, this method will make use of the CreatedStorageJob out parameter when the request is taking a long time to service. If a storage job has been created to track the operation, this method will return 4096 - 'Method Parameters Checked - Job Started'. Note, even if RunAsJob is TRUE, the method can still return a result if it has finished in sufficient time. \nIf FALSE or NULL, this method will follow default WMI asynchronous behavior as determined by the client's method for invocation (i.e. synchronous unless requested otherwise).") : Amended ToSubclass] boolean RunAsJob,[Out,Description("If RunAsJob is set to TRUE and this method takes a while to execute, this parameter returns a reference to the storage job used to track the long running operation.") : Amended ToSubclass] MSFT_StorageJob Ref CreatedStorageJob,[Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("This method deletes the masking set instance.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Method Parameters Checked - Job Started", "Access denied", "There are not enough resources to complete the operation.", "Cache out of date", "Cannot connect to the storage provider.", "The storage provider cannot connect to the storage subsystem."} : Amended ToSubclass] uint32 DeleteObject([In,Description("This parameter controls the asynchronous behavior the method will follow.\nIf TRUE, this method will make use of the CreatedStorageJob out parameter when the request is taking a long time to service. If a storage job has been created to track the operation, this method will return 4096 - 'Method Parameters Checked - Job Started'. Note, even if RunAsJob is TRUE, the method can still return a result if it has finished in sufficient time. \nIf FALSE or NULL, this method will follow default WMI asynchronous behavior as determined by the client's method for invocation (i.e. synchronous unless requested otherwise).") : Amended ToSubclass] boolean RunAsJob,[Out,Description("If RunAsJob is set to TRUE and this method takes a while to execute, this parameter returns a reference to the storage job used to track the long running operation.") : Amended ToSubclass] MSFT_StorageJob Ref CreatedStorageJob,[Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("This method allows the FriendlyName to be set.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Access denied", "There are not enough resources to complete the operation.", "Cache out of date", "Cannot connect to the storage provider.", "The storage provider cannot connect to the storage subsystem."} : Amended ToSubclass] uint32 SetFriendlyName([In] string FriendlyName,[Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("This method returns the security descriptor that controls access to this specific object instance.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Access denied", "There are not enough resources to complete the operation.", "Cannot connect to the storage provider.", "The storage provider cannot connect to the storage subsystem."} : Amended ToSubclass] uint32 GetSecurityDescriptor([Out,Description("A Security Descriptor Definition Language (SDDL) formed string describing the access control list of the object.") : Amended ToSubclass] string SecurityDescriptor,[Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("This method allows a user with sufficient privileges to set the security descriptor that control access to this specific object instance. If the call is not made in the context of a user specified in the security descriptor's access control list, this method will fail with 40001 - 'Access Denied'. If an empty security descriptor is passed to this function, the behavior is left to the specific implementation so long as there is some user context (typically domain administrators) that can access and administer the object.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Access denied", "There are not enough resources to complete the operation.", "Cannot connect to the storage provider.", "The storage provider cannot connect to the storage subsystem."} : Amended ToSubclass] uint32 SetSecurityDescriptor([In,Description("A Security Descriptor Definition Language (SDDL) formed string describing the desired access control list for this object.") : Amended ToSubclass] string SecurityDescriptor,[Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

};



[ClassVersion("1.0") : Amended,Description("Association between MaskingSet and InitiatorId") : Amended ToSubclass,AMENDMENT, LOCALE("MS_409")] 

class MSFT_MaskingSetToInitiatorId

{

};



[ClassVersion("1.0") : Amended,Description("Association between MaskingSet and TargetPort") : Amended ToSubclass,AMENDMENT, LOCALE("MS_409")] 

class MSFT_MaskingSetToTargetPort

{

};



[ClassVersion("1.0") : Amended,Description("Association between MaskingSet and VirtualDisk") : Amended ToSubclass,AMENDMENT, LOCALE("MS_409")] 

class MSFT_MaskingSetToVirtualDisk

{

};



[Description("This class exposes offload data transfer (ODX) settings for a subsystem.") : Amended ToSubclass,ClassVersion("1.0") : Amended,AMENDMENT, LOCALE("MS_409")] 

class MSFT_OffloadDataTransferSetting : MSFT_StorageObject

{

  [Description("Supports transfer of data using tokens across different subystems.") : Amended ToSubclass] boolean SupportInterSubsystem;

  [Description("Maximum number of tokens avaiable per subsystem") : Amended ToSubclass] uint32 NumberOfTokensMax;

  [Description("Number of tokens in use for the subsystem.") : Amended ToSubclass] uint32 NumberOfTokensInUse;

};



[Description("Represents a partition on a disk.") : Amended ToSubclass,ClassVersion("1.0") : Amended,AMENDMENT, LOCALE("MS_409")] 

class MSFT_Partition : MSFT_StorageObject

{

  [Description("This property is identical to the ObjectId field of the disk object that contains this partition.") : Amended ToSubclass] string DiskId;

  [Description("The operating system's number for the disk that contains this partition. Disk numbers may not necessarily remain the same across reboots.") : Amended ToSubclass] uint32 DiskNumber;

  [Description("The operating system's number for the partition. Ordering is based on the partition's offset, relative to other partitions. This means that the value for this property may change based off of the partition configuration in the offset range preceding this partition.") : Amended ToSubclass] uint32 PartitionNumber;

  [Description("The currently assigned drive letter to the partition. This property is NULL if no drive letter has been assigned.") : Amended ToSubclass] char16 DriveLetter;

  [Description("This property is an array of all the various mount points for the partition. This list includes drive letters, as well as mounted folders.") : Amended ToSubclass] string AccessPaths[];

  [Values{"Unknown", "Online", "No Media", "Failed", "Offline"} : Amended ToSubclass] uint16 OperationalStatus;

  [Description("This property indicates the partition's offset from the beginning of the disk, measured in bytes.") : Amended ToSubclass,Units("Bytes") : Amended ToSubclass] uint64 Offset;

  [Description("Total size of the partition, measured in bytes.") : Amended ToSubclass,Units("Bytes") : Amended ToSubclass] uint64 Size;

  [Description("This property indicates the partition's MBR type. This property is only valid when the disk's PartitionStyle property is set to 1 - 'MBR' and will be NULL for all other partition styles.") : Amended ToSubclass,Values{"FAT12", "FAT16", "Extended", "Huge", "IFS", "FAT32"} : Amended ToSubclass] uint16 MbrType;

  [Description("This property indicates the partition's GPT type. This property is only valid when the disk's PartitionStyle property is set to 2 - 'GPT' and will be NULL for all other partition styles.") : Amended ToSubclass,Values{"System Partition", "Microsoft Reserved", "Basic data", "LDM Metadata", "LDM Data", "Microsoft Recovery"} : Amended ToSubclass] string GptType;

  [Description("This property is a string representation of the partition's GPT GUID. This property is only valid if the disk's PartitionStyle property is set to 2 - 'GPT' and will be NULL for all other partition stlyes.") : Amended ToSubclass] string Guid;

  [Description("Signifies whether or not the partition is active and can be booted. This property is only relevant for MBR disks.") : Amended ToSubclass] boolean IsActive;

  [Description("If this property is set to TRUE, the partition is not detected by the mount manager. As a result, the partition does not receive a drive letter, does not receive a volume GUID path, does not host volume mount points, and is not enumerated by calls to FindFirstVolume and FindNextVolume. This ensures that applications such as disk defragmenter do not access the partition. The Volume Shadow Copy Service (VSS) uses this attribute on its shadow copies.") : Amended ToSubclass] boolean IsHidden;

  [Description("If this property is set to TRUE, the partition is a shadow copy of another partition. This attribute is used by the Volume Shadow Copy service (VSS). This attribute is an indication for file system filter driver-based software (such as antivirus programs) to avoid attaching to the volume. An application can use this attribute to differentiate a shadow copy partition from a production partition. For example, an application that performs a fast recovery will break a shadow copy virtual disk by clearing the read-only and hidden attributes and this attribute. This attribute is set when the shadow copy is created and cleared when the shadow copy is broken.") : Amended ToSubclass] boolean IsShadowCopy;

  [Description("If this property is set to TRUE, the partition is in direct access mode. In this mode a memory mapped file doesn't reside in RAM, instead it is mapped directly onto the Storage Class Memory device and IOs bypass the storage stack. If set to FALSE, the partiton is in the standard block mode.") : Amended ToSubclass] boolean IsDAX;

  [Description("If this property is set to TRUE, the operating system does not assign a drive letter automatically when the partition is discovered. This is only honored for GPT disks and is assumed to be FALSE for MBR disks. This attribute is useful in storage area network (SAN) environments.") : Amended ToSubclass] boolean NoDefaultDriveLetter;

  [Description("Deletes the partition and corresponding volume.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "In use", "Access denied", "There are not enough resources to complete the operation.", "The disk is read only.", "The specified object is managed by the Microsoft Failover Clustering component. The disk must be in cluster maintenance mode and the cluster resource status must be online to perform this operation.", "The partition was deleted, although its access paths were not.", "The extended partition still contains other partitions.", "The operation is not allowed on a system or critical partition."} : Amended ToSubclass] uint32 DeleteObject([Out] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("This method returns all mount points and drive letters that can be used to access the partition.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter"} : Amended ToSubclass] uint32 GetAccessPaths([Out] string AccessPaths[],[Out] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("This method adds a mount path or drive letter assignment to the partition. The AccessPath and AssignDriveLetter parameters are mutually exclusive, and will result in an invalid parameters error if both are specified at once. This method adds the access path by creating a mounted folder (also called a volume mount point). Note that mounted folders are supported only on NTFS formatted partitions. This method returns an error if the path specified in AccessPath is a folder that is already in use (even if the directory is empty) or if it contains a path to a non-empty directory.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Access denied", "There are not enough resources to complete the operation.", "The requested access path is already in use.", "Cannot assign access paths to hidden partitions.", "The access path is not valid.", "Cannot assign multiple drive letters to a partition.", "Cannot assign drive letter to this type of partition."} : Amended ToSubclass] uint32 AddAccessPath([In,Description("This parameter is a string indicating the access path, which is a user-mode path that can be used to open the partition. An access path can be a drive letter (in the form C: or C:\\) or a path to an empty directory on an NTFS volume. The access path string does not require a trailing backslash.") : Amended ToSubclass] string AccessPath,[In,Description("If this parameter is specified as TRUE, the next available drive letter will be assigned to the partition.") : Amended ToSubclass] boolean AssignDriveLetter,[Out] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("This method removes the access path from the partition regardless of whether or not it is in use.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Access denied", "There are not enough resources to complete the operation.", "Cannot remove a volume GUID path.", "Cannot remove the drive letter of a boot or paging file partition.", "The access path is not valid."} : Amended ToSubclass] uint32 RemoveAccessPath([In] string AccessPath,[Out] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("This method resizes the partition and any associated filesystem to the size specified by the Size parameter. If the size is outside of the bounds returned by the GetSupportedSize method, then this method will fail with a well defined error code. The resize operation is only supported on NTFS formatted partitions and RAW partitions.\nIf the specified size is smaller than the original size, this method will move files so that they are as close as possible to the beginning of the partition, in order to consolidate free space at the end of the partition. It then truncates the file system volume, reducing its size, and then truncates the partition.\nIn almost all cases, there will be some files that are immovable. For example, file system and storage driver metadata files are likely to be immovable. For this reason, the amount by which a partition can be shrunk is usually less than the total amount of free space on the partition.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "In Use", "Size Not Supported", "Not enough available capacity", "Access denied", "There are not enough resources to complete the operation.", "The disk is read only.", "Cannot shrink a partition containing a volume with errors.", "Cannot resize a partition containing an unknown file system.", "This operation is only supported on data partitions."} : Amended ToSubclass] uint32 Resize([In] uint64 Size,[Out] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("This method returns the minimum and maximum sizes that the partition can be resized to using the Resize method. The minimum size is determined by the disk defragmenter and takes into account the location of immovable files. The maximum size is determined by adding the size of any free extents immediately after the current partition.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "In Use", "Access denied", "There are not enough resources to complete the operation.", "Cannot shrink a partition containing a volume with errors.", "Cannot resize a partition containing an unknown file system."} : Amended ToSubclass] uint32 GetSupportedSize([Out,Description("This output parameter contains the minimum size that this partition can become. Note that if this method is run multiple times, this value can change slightly depending on the placement of various temporary files.") : Amended ToSubclass] uint64 SizeMin,[Out,Description("This output parameter contains the maximum size that this partition can become.") : Amended ToSubclass] uint64 SizeMax,[Out] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("Brings the partition online by mounting the associated volume (if one exists).") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "In Use", "Access denied", "There are not enough resources to complete the operation.", "This operation is only supported on data partitions."} : Amended ToSubclass] uint32 Online([Out] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("Takes the partition offline by dismounting the associated volume (if one exists). The partition remains offline until explicitly brought online or an access path is added to the partition.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "In Use", "Access denied", "There are not enough resources to complete the operation.", "The specified object is managed by the Microsoft Failover Clustering component. The disk must be in cluster maintenance mode and the cluster resource status must be online to perform this operation.", "This operation is only supported on data partitions.", "The volume still has access path to it."} : Amended ToSubclass] uint32 Offline([Out] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("Sets various attributes and properties of the partition.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "In Use", "Access denied", "There are not enough resources to complete the operation.", "Cache out of date", "The disk has not been initialized.", "The disk is read only.", "The disk is offline.", "A parameter is not valid for this type of partition.", "The specified partition type is not valid.", "The specified object is managed by the Microsoft Failover Clustering component. The disk must be in cluster maintenance mode and the cluster resource status must be online to perform this operation.", "The operation is not allowed on a system or critical partition.", "This operation is only supported on data partitions."} : Amended ToSubclass] uint32 SetAttributes([In] boolean IsReadOnly,[In] boolean NoDefaultDriveLetter,[In] boolean IsActive,[In] boolean IsHidden,[In] boolean IsShadowCopy,[In] boolean IsDAX,[In] uint16 MbrType,[In] string GptType,[Out] MSFT_StorageExtendedStatus ExtendedStatus);

};



[ClassVersion("1.0") : Amended,Description("Synchronized status of a storage object and its Snapshots / Clones / Mirrors.") : Amended ToSubclass,AMENDMENT, LOCALE("MS_409")] 

class MSFT_Synchronized

{

  [Description("The point in time that the virtual disks were synchronized.") : Amended ToSubclass] datetime SyncTime;

  [Description("Boolean indicating whether synchronization is maintained.") : Amended ToSubclass] boolean SyncMaintained;

  [Description("CopyState describes the state of the association with respect to replication activity. Values are: \n2 - 'Initialized': The link to enable replication is established and source/replica elements are associated, but the copy operation has not started. \n3 - 'Unsynchronized': Not all the source element data has been copied to the target element. \n4 - 'Synchronized': For the Mirror, Snapshot, or Clone replication, the target represents a copy of the source. \n5 - 'Broken': The relationship is non-functional due to errors in the source, the target, the path between the two or space constraints. \n6 - 'Fractured': Target is split from the source. \n7 - 'Split': The target element was gracefully (or systematically) split from its source element -- consistency is guaranteed. \n8 - 'Inactive': Copy operation has stopped, writes to source element will not be sent to target element. \n9 - 'Suspended': Data flow between the source and target elements has stopped. Writes to source element are held until the association is resumed. \n10 - 'Failedover': Reads and writes to/from the target element. Source element is not reachable. \n11 - 'Prepared': Initialization completed and the copy operation started; however, the data flow has not started. \n12 - 'Aborted': The copy operation is aborted with the Abort operation. Use the Resync Replica operation to restart the copy operation. \n13 - 'Skewed': The target has been modified and is no longer synchronized with the source element or the point-in-time view. \n14 - 'Mixed': Applies to the CopyState of GroupSynchronized. It indicates the StorageSynchronized associations of the elements in the groups have different CopyState values.") : Amended ToSubclass,Values{"Initialized", "Unsynchronized", "Synchronized", "Broken", "Fractured", "Split", "Inactive", "Suspended", "Failedover", "Prepared", "Aborted", "Skewed", "Mixed", "Not Applicable", "Microsoft Reserved", "Vendor Specific"} : Amended ToSubclass] uint16 CopyState;

  [Description("RequestedCopyState is an integer enumeration that indicates the last requested or desired state for the association. The actual state of the association is represented by CopyState. Note that when CopyState reaches the requested state, this property will be set to 'Not Applicable.") : Amended ToSubclass] uint16 RequestedCopyState;

  [Description("SyncType describes the intended outcome of the replication. Values are: \n6 - 'Mirror': create and maintain a copy of the source. \n7 - 'Snapshot': create a point-in-time, virtual copy of the source. \n8 - 'Clone': create a point-in-time, full copy the source.") : Amended ToSubclass,Values{"Microsoft Reserved", "Mirror", "Snapshot", "Clone", "Microsoft Reserved", "Vendor Specific"} : Amended ToSubclass] uint16 SyncType;

  [Description("Mode describes whether the target elements will be updated synchronously or asynchronously. If NULL, implementation decides the mode.") : Amended ToSubclass,Values{"Unknown", "Synchronous", "Asynchronous", "Microsoft Reserved", "Vendor Specific"} : Amended ToSubclass] uint16 SyncMode;

  [Description("ProgressStatus describes the status of the association with respect to Replication activity. Values are: \n2 - 'Completed': The request is completed. Copy operation is idle. \n3 - 'Dormant': Indicates that the copy operation is inactive suspended or quiesced. \n4 - 'Initializing': In the process of establishing source/replica association and the copy operation has not started. \n5 - 'Preparing': preparation-in-progress. \n6 - 'Synchronizing': sync-in-progress. \n7 - 'Resyncing': resync-in-progress. \n8 - 'Restoring': restore-in-progress. \n9 - 'Fracturing': fracture-in-progress. \n10 - 'Splitting': split-in-progress. \n11 - 'Failing over': in the process of switching source and target. \n12 - 'Failing back': Undoing the result of failover. \n13 - 'Detaching': detach-in-progress. \n14 - 'Aborting': abort-in-progress. \n15 - 'Mixed': Applies to groups with element pairs with different statuses. Generally, the individual statuses need to be examined. \n16 - 'Suspending': The copy operation is in the process of being suspended. \n17 - 'Requires fracture': The requested operation has completed, however, the synchronization relationship needs to be fractured before further copy operations can be issued. \n18 - 'Requires resync': The requested operation has completed, however, the synchronization relationship needs to be resynced before further copy operations can be issued. \n19 - 'Requires activate': The requested operation has completed, however, the synchronization relationship needs to be activated before further copy operations can be issued. \n20 - 'Pending': The flow of data has stopped momentarily due to limited bandwidth or busy system.") : Amended ToSubclass,Values{"Unknown", "Completed", "Dormant", "Initializing", "Preparing", "Synchronizing", "Resyncing", "Restoring", "Fracturing", "Splitting", "Failing over", "Failing back", "Aborting", "Mixed", "Not Applicable", "Suspending", "Requires fracture", "Requires resync", "Requires activate", "Pending", "Detaching", "Microsoft Reserved", "Vendor Specific"} : Amended ToSubclass] uint16 ProgressStatus;

  [Description("Specifies the percent of the work completed to reach synchronization. Must be set to NULL if implementation is not capable of providing this information.") : Amended ToSubclass] uint16 PercentSynced;

  [Description("CopyType describes the Replication Policy. Values are: \n2 - 'Async': create and maintain an asynchronous copy of the source. \n3 - 'Sync': create and maintain a synchronized copy of the source. \n4 - 'UnSyncAssoc': create an unsynchronized copy and maintain an association to the source. \n5 - 'UnSyncUnAssoc': create an unsynchronized copy with a temporary association that is deleted upon completion of the copy operation.") : Amended ToSubclass,Values{"Async", "Sync", "UnSyncAssoc", "UnSyncUnAssoc", "Microsoft Reserved", "Vendor Specific"} : Amended ToSubclass] uint16 CopyType;

  [Description("ReplicaType provides information on how the Replica is being maintained. Values are: \n2 - 'Full Copy': This indicates that a full copy of the source object is (or will be) generated . \n3 - 'Before Delta': This indicates that the source object will be maintained as a delta data from the replica. \n4 - 'After Delta': This indicates that the replica will be maintained as delta data from the source object. \n5 - 'Log': This indicates that the replica object is being maintained as a log of changes to the source. \n0 - 'Not Specified': The method of maintaining the copy is not specified.") : Amended ToSubclass,Values{"Not Specified", "Full Copy", "Before Delta", "After Delta", "Log", "Microsoft Reserved", "Vendor Specific"} : Amended ToSubclass] uint16 ReplicaType;

  [Description("SyncState describes the state of the association with respect to Replication activity. Values are: \n2 - 'Initialized': The link to enable replication is established and source/replica elements are associated, but the Copy engine has not started. \n3 - 'PrepareInProgress': Preparation for Replication is in progress and the Copy engine has started. \n4 - 'Prepared': All necessary preparation has completed. \n5 - 'ResyncInProgress': Synchronization or Resynchronization is in progress. This may be the initial 'copy' or subsequent changes being copied. \n6 - 'Synchronized': An Async or Sync replication is currently synchronized. When this value is set, SyncMaintained will be true. \n7 - 'FractureInProgress': An operation to fracture an Async or Sync replication is in progress. \n8 - 'QuiesceInProgress': A quiesce operation is in progress. \n9 - 'Quiesced': The replication has been quiesced and is ready for a change. \n10 - 'RestoreInProgress': An operation is in progress to copy the Synced object to the System object. \n11 - 'Idle': The 'normal' state for an UnSyncAssoc replica. \n12 - 'Broken': The relationship is non-functional due to errors in the source, the target, the path between the two or space constraints. \n13 - 'Fractured': An Async or Sync replication is fractured. \n14 - 'Frozen': All blocks copied from source to an UnSyncAssoc replica and the copy engine is stopped. \n15 - 'CopyInProgress': A deferred background copy operation is in progress to copy the source to the replica target for an UnSyncAssoc association. \n") : Amended ToSubclass,Values{"Initialized", "PrepareInProgress", "Prepared", "ResyncInProgress", "Synchronized", "Fracture In Progress", "QuiesceInProgress", "Quiesced", "Restore In Progresss", "Idle", "Broken", "Fractured", "Frozen", "Copy In Progress", "Microsoft Reserved", "Vendor Specific"} : Amended ToSubclass] uint16 SyncState;

  [Description("CopyPriority allows the priority of background copy engine I/O to be managed relative to host I/O operations during a sequential background copy operation. Values are: \n1 - 'Low': copy engine I/O lower priority than host I/O. \n2 - 'Same': copy engine I/O has the same priority as host I/O. \n3 - 'High': copy engine I/O has higher priority than host I/O.") : Amended ToSubclass,Values{"Not Managed", "Low", "Same", "High", "Microsoft Reserved", "Vendor Specific"} : Amended ToSubclass] uint16 CopyPriority;

  [Description("CopyMethodology specifies what copy methodology the copy engine uses to create and/or maintain the target element. Values are: \n0 - 'Not Specified': The method of maintaining the copy is not specified. \n3 - 'Full Copy': This indicates that a full copy of the source object is (or will be) generated. \n4 - 'Incremental-Copy': Only changed data from source element is copied to target element. \n5 - 'Differential-Copy': Only the new writes to the source element are copied to the target element. \n6 - 'Copy-On-Write': Affected data is copied on the first write to the source or to the target elements. \n7 - 'Copy-On-Access': Affected data is copied on the first access to the source element. \n8 - 'Delta-Update': Difference based replication where after the initial copy, only updates to source are copied to target. \n9 - 'Snap-And-Clone': The service creates a snapshot of the source element first, then uses the snapshot as the source of the copy operation to the target element.") : Amended ToSubclass,Values{"Not Specified", "Other", "Implementation decides", "Full Copy", "Incremental-Copy", "Differential-Copy", "Copy-On-Write", "Copy-On-Access", "Delta-Update", "Snap-And-Clone", "Microsoft Reserved", "Vendor Specific"} : Amended ToSubclass] uint16 CopyMethodology;

  [Description("Recovery Point Objective indicates the maximum interval in which data might be lost. For synchronous copy operations, RPO is 0. For asynchronous copy operations RPO represents the interval since the most recent transmission of data to the target element.") : Amended ToSubclass] uint32 RecoveryPointObjective;

};



[Description("Association between replicated partitions") : Amended ToSubclass,ClassVersion("1.0") : Amended,AMENDMENT, LOCALE("MS_409")] 

class MSFT_PartitionToReplicaPeer : MSFT_Synchronized

{

};



[ClassVersion("1.0") : Amended,Description("Association between Partition and Volume") : Amended ToSubclass,AMENDMENT, LOCALE("MS_409")] 

class MSFT_PartitionToVolume

{

};



[Description("Common base class for all storage fault domain objects") : Amended ToSubclass,ClassVersion("1.0") : Amended,AMENDMENT, LOCALE("MS_409")] 

class MSFT_StorageFaultDomain : MSFT_StorageObject

{

  [Description("A user-friendly string representing the name of the fault domain object.") : Amended ToSubclass] string FriendlyName;

  [Description("A user settable description of the fault domain object.") : Amended ToSubclass] string Description;

  [Description("This field represents the name of the company responsible for the hardware backing the fault domain oject. For physical disk it must match the disk's SCSI inquiry data.") : Amended ToSubclass] string Manufacturer;

  [Description("This field represents the model number of the hardware. For physical disk it must match the disk's SCSI inquiry data.") : Amended ToSubclass] string Model;

  [Description("This field represents the serial number of the hardware. For physical disk it must match the disk's SCSI inquiry data.") : Amended ToSubclass] string SerialNumber;

  [Description("This field is a free-form string indicating where the hardware is located.") : Amended ToSubclass] string PhysicalLocation;

  [Values{"Healthy", "Warning", "Unhealthy", "Unknown"} : Amended ToSubclass] uint16 HealthStatus;

  [Values{"Unknown", "Other", "OK", "Degraded", "Stressed", "Predictive Failure", "Error", "Non-Recoverable Error", "Starting", "Stopping", "Stopped", "In Service", "No Contact", "Lost Communication", "Aborted", "Dormant", "Supporting Entity in Error", "Completed", "Power Mode", "Relocating", "Microsoft Reserved", "Failed Media", "Split", "Stale Metadata", "IO Error", "Unrecognized Metadata", "Removing From Pool", "In Maintenance Mode", "Updating Firmware", "Device Hardware Error", "Not Usable", "Transient Error", "Starting Maintenance Mode", "Stopping Maintenance Mode", "Threshold Exceeded", "Abnormal Latency", "Microsoft Reserved"} : Amended ToSubclass] uint16 OperationalStatus[];

  [Description("This field contains details on the operation of the fault domain object.") : Amended ToSubclass] string OperationalDetails[];

};



[Description("A subsystem drive or spindle.") : Amended ToSubclass,ClassVersion("1.0") : Amended,AMENDMENT, LOCALE("MS_409")] 

class MSFT_PhysicalDisk : MSFT_StorageFaultDomain

{

  [Description("UniqueIdFormat indicates the type of identifier used in the UniqueId field. The identifier used in UniqueId must be the highest available identifier using the following order of preference: 8 (highest), 3, 2, 1, 0 (lowest). For example: if the physical disk device exposes identifiers of type 0, 1, and 3, UniqueId must be the identifier of type 3, and UniqueIdFormat should be set to 3.") : Amended ToSubclass,Values{"Vendor Specific", "Vendor Id", "EUI64", "FCPH Name", "SCSI Name String"} : Amended ToSubclass] uint16 UniqueIdFormat;

  [Description("DeviceId is an address or other identifier that uniquely names the physical disk.") : Amended ToSubclass] string DeviceId;

  [Description("This field describes the intended usage of this physical disk within a concrete pool. Storage pools are required to follow the assigned policy for a physical disk. \n1 - 'Auto-Select': This physical disk should only be used for data storage. \n2 - 'Manual-Select': This physical disk should only be used if manually selected by an administrator at the time of virtual disk creation. A manual-select disk is selected using the PhysicalDisksToUse parameter to CreateVirtualDisk. \n3 - 'Hot Spare': This physical disk should be used as a hot spare. \n4 - 'Retired': This physical disk should be retired from use. At a minimum, no new allocations should go to this disk. If the virtual disks that reside on this disk are repaired, the data should be moved to another active physical disk.") : Amended ToSubclass,Values{"Unknown", "Auto-Select", "Manual-Select", "Hot Spare", "Retired", "Journal"} : Amended ToSubclass] uint16 Usage;

  [Description("This field describes the supported usages of this physical disk.") : Amended ToSubclass,Values{"Auto-Select", "Manual-Select", "Hot Spare", "Retired", "Journal"} : Amended ToSubclass] uint16 SupportedUsages[];

  [Description("This field is a string representation of the physical disk's part number or SKU.") : Amended ToSubclass] string PartNumber;

  [Description("This field is a string representation of the physical disk's firmware version.") : Amended ToSubclass] string FirmwareVersion;

  [Description("This field is a string representation of the physical disk's software version.") : Amended ToSubclass] string SoftwareVersion;

  [Description("Indicates the total physical storage size of the disk in bytes") : Amended ToSubclass,Units("Bytes") : Amended ToSubclass] uint64 Size;

  [Description("This field indicates the sum of used space on this physical disk. This should include usage from all storage pools and other data stored on the disk.") : Amended ToSubclass,Units("Bytes") : Amended ToSubclass] uint64 AllocatedSize;

  [Description("This field indicates the size in bytes of the user data footprint from virtual disks on this physical disk.") : Amended ToSubclass,Units("Bytes") : Amended ToSubclass] uint64 VirtualDiskFootprint;

  [Values{"Unknown", "SCSI", "ATAPI", "ATA", "1394", "SSA", "Fibre Channel", "USB", "RAID", "iSCSI", "SAS", "SATA", "SD", "MMC", "Virtual", "File Backed Virtual", "Storage Spaces", "NVMe", "SCM", "UFS", "Microsoft Reserved"} : Amended ToSubclass] uint16 BusType;

  [Description("This field indicates the physical sector size of the physical disk in bytes. For example: for 4K native and 512 emulated disks, the value should be 4096.") : Amended ToSubclass,Units("Bytes") : Amended ToSubclass] uint64 PhysicalSectorSize;

  [Description("This field indicates the logical sector size of the physical disk in bytes. For example: a 4K native disk should report 4096, while a 512 emulated disk should report 512.") : Amended ToSubclass,Units("Bytes") : Amended ToSubclass] uint64 LogicalSectorSize;

  [Units("RPM") : Amended ToSubclass] uint32 SpindleSpeed;

  [Description("Indicates whether the physical disk's identification LEDs are active or not. This is typically used in maintenance operations.") : Amended ToSubclass] boolean IsIndicationEnabled;

  [Description("Indicates the enclosure number in which the disk physically resides") : Amended ToSubclass] uint16 EnclosureNumber;

  [Description("Indicates the enclosure slot number in which the disk physically resides") : Amended ToSubclass] uint16 SlotNumber;

  [Description("Unique id of the non-primordial storage pool the disk is a member of") : Amended ToSubclass] string StoragePoolUniqueId;

  [Description("Indicates whether this physical disk can be added to a concrete pool or not") : Amended ToSubclass] boolean CanPool;

  [Description("Indicates the reason why this physical disk cannot be added to a concrete pool") : Amended ToSubclass,Values{"Unknown", "Other", "In a Pool", "Not Healthy", "Removable Media", "In Use by Cluster", "Offline", "Insufficient Capacity", "Spare Disk", "Reserved by subsystem", "Starting", "Partial SCM", "Discovery Disabled", "Microsoft Reserved", "Verification in progress", "Verification failed", "Firmware not compliant", "Hardware not compliant", "Vendor Reserved"} : Amended ToSubclass] uint16 CannotPoolReason[];

  [Description("If CannotPoolReason contains 1 - 'Other', this field contains the string representing the vendor defined reason why this physical disk cannot be added to a concrete pool. This property must be NULL if CannotPoolReason does not contain 1 - 'Other'.") : Amended ToSubclass] string OtherCannotPoolReasonDescription;

  [Description("Indicates whether this physical disk is partially consumed by a system or service whose use is outside of normal storage pool operations.") : Amended ToSubclass] boolean IsPartial;

  [Description("Media type of this physical disk") : Amended ToSubclass,Values{"Unspecified", "HDD", "SSD", "SCM"} : Amended ToSubclass] uint16 MediaType;

  [Description("A string representation of the Adapter's serial number.") : Amended ToSubclass] string AdapterSerialNumber;

  [Description("FruId is an identifier of the replacement unit housing the physical disk.") : Amended ToSubclass] string FruId;

  [Description("This method returns the physical extents on the physical disk.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Currently unsafe to perform the operation", "Access denied", "There are not enough resources to complete the operation.", "Cannot connect to the storage provider.", "The storage provider cannot connect to the storage subsystem.", "This operation is not supported on primordial storage pools.", "The storage pool could not complete the operation because its health or operational status does not permit it.", "The storage pool could not complete the operation because its configuration is read-only."} : Amended ToSubclass] uint32 GetPhysicalExtent([Out,Description("Physical extents on the physical disk.") : Amended ToSubclass] MSFT_PhysicalExtent PhysicalExtents[],[Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("This method allows a user to perform certain maintenance tasks on the physical disk. ") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Currently unsafe to perform the operation", "Access denied", "There are not enough resources to complete the operation.", "Cannot connect to the storage provider.", "The storage provider cannot connect to the storage subsystem.", "The storage pool could not complete the operation because its health or operational status does not permit it.", "The storage pool could not complete the operation because its configuration is read-only."} : Amended ToSubclass] uint32 Maintenance([In,Description("If set to TRUE, this instructs the physical disk to enable its indication LED. The indication LED should remain enabled until a second call to Maintenance is made with this parameter specified as FALSE.") : Amended ToSubclass] boolean EnableIndication,[In,Description("If set to TRUE, this instructs the physical disk to validate if enabling maintenance mode will be successful.") : Amended ToSubclass] boolean ValidateMaintenanceMode,[In,Description("If set to TRUE, this instructs the physical disk to enable maintenance mode.") : Amended ToSubclass] boolean EnableMaintenanceMode,[In,Description("This indicates the time in seconds before stale data will be moved off of this physical disk.") : Amended ToSubclass] uint32 Timeout,[In,Description("Ignore any detached virtual disks with allocations on this physical disk.") : Amended ToSubclass] boolean IgnoreDetachedVirtualDisks,[Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("This method resets the health and operational status of the physical disk. Exact behavior of this method is dependent on whether this physical disk belongs to a concrete pool. \nIf it is a member of a concrete pool, the health and operational statuses should be reset to 1 - 'Healthy', and 1 - 'OK', respectively. If any additional errors are detected after Reset, the health and operational statuses should reflect these new errors. \nIf the physical disk is not a member of a concrete pool, then this method should not only reset the health and operational statuses, but it should return the disk into a state where it is usable as storage for a concrete pool. For example: If a physical disk had become missing and then has reappeared (after it has been replaced) this physical disk is expected to be in the primordial pool only with an operational status indicating its data is either split or unrecognized. Calling Reset should clear the physical disk of any data, remove any remaining ties to its former concrete pool, and return the disk to a healthy, usable state.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Access denied", "There are not enough resources to complete the operation.", "Cannot connect to the storage provider.", "The storage provider cannot connect to the storage subsystem.", "The storage pool could not complete the operation because its health or operational status does not permit it.", "The storage pool could not complete the operation because its configuration is read-only."} : Amended ToSubclass] uint32 Reset([Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("This method allows the physical disk to be renamed.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Access denied", "There are not enough resources to complete the operation.", "Cannot connect to the storage provider.", "The storage provider cannot connect to the storage subsystem.", "This operation is not supported on primordial storage pools.", "The storage pool could not complete the operation because its health or operational status does not permit it.", "The storage pool could not complete the operation because its configuration is read-only."} : Amended ToSubclass] uint32 SetFriendlyName([In] string FriendlyName,[Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("This method allows the physical disk's description to be changed.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Access denied", "There are not enough resources to complete the operation.", "Cannot connect to the storage provider.", "The storage provider cannot connect to the storage subsystem.", "The storage pool could not complete the operation because its health or operational status does not permit it.", "The storage pool could not complete the operation because its configuration is read-only."} : Amended ToSubclass] uint32 SetDescription([In] string Description,[Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("This method allows the physical disk's usage to be updated.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Access denied", "There are not enough resources to complete the operation.", "Cannot connect to the storage provider.", "The storage provider cannot connect to the storage subsystem.", "The storage pool could not complete the operation because its health or operational status does not permit it.", "The storage pool could not complete the operation because its configuration is read-only."} : Amended ToSubclass] uint32 SetUsage([In,Description("This field describes the intended usage of this physical disk within a concrete pool. Storage pools are required to follow the assigned policy for a physical disk. \n1 - 'Auto-Select': This physical disk should only be used for data storage. \n2 - 'Manual-Select': This physical disk should only be used if manually selected by an administrator at the time of virtual disk creation. A manual-select disk is selected using the PhysicalDisksToUse parameter to CreateVirtualDisk. \n3 - 'Hot Spare': This physical disk should be used as a hot spare. \n4 - 'Retired': This physical disk should be retired from use. At a minimum, no new allocations should go to this disk. If the virtual disks that reside on this disk are repaired, the data should be moved to another active physical disk.") : Amended ToSubclass,Values{"Auto-Select", "Manual-Select", "Hot Spare", "Retired", "Journal"} : Amended ToSubclass] uint16 Usage,[Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("This method allows the physical disk's attributes to be updated.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Access denied", "There are not enough resources to complete the operation.", "Cannot connect to the storage provider.", "The storage provider cannot connect to the storage subsystem.", "The storage pool could not complete the operation because its health or operational status does not permit it.", "The storage pool could not complete the operation because its configuration is read-only."} : Amended ToSubclass] uint32 SetAttributes([In,Description("Media type of this physical disk") : Amended ToSubclass,Values{"HDD", "SSD", "SCM"} : Amended ToSubclass] uint16 MediaType,[In,Description("Id of the storage enclosure containing this physical disk") : Amended ToSubclass] string StorageEnclosureId,[In,Description("Id of the storage scale unit containing this physical disk") : Amended ToSubclass] string StorageScaleUnitId,[In,Description("Indicates whether this physical disk is hidden or not") : Amended ToSubclass] boolean IsHidden,[Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("Indicates whether write caching is enabled on this physical disk or not.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Access denied", "There are not enough resources to complete the operation.", "Cannot connect to the storage provider.", "The storage provider cannot connect to the storage subsystem."} : Amended ToSubclass] uint32 IsDeviceCacheEnabled([Out] boolean IsDeviceCacheEnabled,[Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("Indicates whether this physical disk is equipped to tolerate a power loss without loss of data.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Access denied", "There are not enough resources to complete the operation.", "Cannot connect to the storage provider.", "The storage provider cannot connect to the storage subsystem."} : Amended ToSubclass] uint32 IsPowerProtected([Out] boolean IsPowerProtected,[Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("This method returns the firmware information for a physical disk.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Access denied", "There are not enough resources to complete the operation.", "Cannot connect to the storage provider.", "The storage provider cannot connect to the storage subsystem."} : Amended ToSubclass] uint32 GetFirmwareInformation([Out,Description("Indicates whether this physical disk supports firmware update operation used by Windows") : Amended ToSubclass] boolean SupportsUpdate,[Out,Description("Indicates how many firmware slots this physical disk supports") : Amended ToSubclass] uint16 NumberOfSlots,[Out,Description("Indicates the current active firmware slot number of this physical disk") : Amended ToSubclass] uint16 ActiveSlotNumber,[Out,Description("Indicates the number associated with the firmware slot") : Amended ToSubclass] uint16 SlotNumber[],[Out,Description("Indicates whether the firmware slot can be used to download new firmware image to") : Amended ToSubclass] boolean IsSlotWritable[],[Out,Description("Indicates the firmware revision represented by firmware in slot") : Amended ToSubclass] string FirmwareVersionInSlot[],[Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("This method updates firmware to the physical disk.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Object Not Found", "Currently unsafe to perform the operation", "Access denied", "There are not enough resources to complete the operation.", "An unexpected I/O error has occurred", "Cannot connect to the storage provider.", "The storage provider cannot connect to the storage subsystem."} : Amended ToSubclass] uint32 UpdateFirmware([In,Description("The path and name of firmware image file.") : Amended ToSubclass] string ImagePath,[In,Description("The firmware slot number to download the firmware image to.") : Amended ToSubclass] uint16 SlotNumber,[Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

};



[ClassVersion("1.0") : Amended,AMENDMENT, LOCALE("MS_409")] 

class MSFT_PhysicalDiskToStorageReliabilityCounter

{

};



[ClassVersion("1.0") : Amended,Description("Physical extent properties.") : Amended ToSubclass,AMENDMENT, LOCALE("MS_409")] 

class MSFT_PhysicalExtent

{

  [Description("The unique id of the storage tier associated with this extent.") : Amended ToSubclass] string StorageTierUniqueId;

  [Description("The unique id of the virtual disk associated with this extent.") : Amended ToSubclass] string VirtualDiskUniqueId;

  [Description("The byte offset of this extent from the start of the virtual disk.") : Amended ToSubclass] uint64 VirtualDiskOffset;

  [Description("The column number associated with this extent.") : Amended ToSubclass] uint16 ColumnNumber;

  [Description("The copy number associated with this extent.") : Amended ToSubclass] uint16 CopyNumber;

  [Description("The copy number of the replacement for this extent.") : Amended ToSubclass] uint16 ReplacementCopyNumber;

  [Description("The unique id of the physical disk associated with this extent.") : Amended ToSubclass] string PhysicalDiskUniqueId;

  [Description("The byte offset of this extent from the start of the physical disk.") : Amended ToSubclass] uint64 PhysicalDiskOffset;

  [Description("The size of this extent in bytes.") : Amended ToSubclass] uint64 Size;

  [Description("The flags associated with this extent.") : Amended ToSubclass] uint64 Flags;

  [Description("The operational statuses associated with this extent.") : Amended ToSubclass,Values{"Unknown", "Lost Communication", "Stale Metadata", "Active", "Need Reallocation", "Need Regeneration", "Regenerating", "Not Allocated", "Pending Deletion"} : Amended ToSubclass] uint16 OperationalStatus[];

  [Description("The operational details associated with this extent.") : Amended ToSubclass] string OperationalDetails[];

};



[Description("An enumerable object that represents an object in a target subsystem for which there is a replication relationship.") : Amended ToSubclass,ClassVersion("1.0") : Amended,AMENDMENT, LOCALE("MS_409")] 

class MSFT_ReplicaPeer : MSFT_StorageObject

{

  [Description("The object type of this replica peer.") : Amended ToSubclass,Values{"VirtualDisk", "Volume", "Partition", "ReplicationGroup", "StorageSubSystem"} : Amended ToSubclass] uint16 PeerObjectType;

  [Description("The ObjectId of the replica peer within the replica's storage subsystem.") : Amended ToSubclass] string PeerObjectId;

  [Description("The name of the replica peer within the replica's storage subsystem.") : Amended ToSubclass] string PeerObjectName;

  [Description("The UniqueId of the replica peer within the replica's storage subsystem.") : Amended ToSubclass] string PeerUniqueId;

  [Description("The subsystem name of the replica peer within the replica's storage subsystem.") : Amended ToSubclass] string PeerSubsystemName;

  [Description("If the SMP is of type 2 - 'SMI-S', this field contains the protocol, computer host name, and port of the SMI-S server. This field will be NULL otherwise.") : Amended ToSubclass] string PeerProviderURI;

  [Description("Indicates if the ReplicaPeer is primary i.e: If the ReplicaPeer is a System Element and not a Synced Element") : Amended ToSubclass] boolean IsPrimary;

  [Description("Populated when \"Type\" has the value of \"EmbeddedInstance\".") : Amended ToSubclass] MSFT_StorageObject PeerObject;

};



[Description("Represents the replication capabilities of a storage subsystem.") : Amended ToSubclass,ClassVersion("1.0") : Amended,AMENDMENT, LOCALE("MS_409")] 

class MSFT_ReplicationCapabilities : MSFT_StorageObject

{

  [Description("Enumeration indicating the supported object types associated with these replication capabilities.") : Amended ToSubclass,Values{"VirtualDisk", "Volume", "ReplicaPeer", "Partition", "ReplicationGroup", "StorageSubSystem"} : Amended ToSubclass] uint16 SupportedObjectTypes[];

  [Description("Enumeration indicating the supported SyncType/Mode/Local-or-Remote combinations.") : Amended ToSubclass,Values{"Synchronous Mirror Local", "Asynchronous Mirror Local", "Synchronous Mirror Remote", "Asynchronous Mirror Remote", "Synchronous Snapshot Local", "Asynchronous Snapshot Local", "Synchronous Snapshot Remote", "Asynchronous Snapshot Remote", "Synchronous Clone Local", "Asynchronous Clone Local", "Synchronous Clone Remote", "Asynchronous Clone Remote", "Synchronous TokenizedClone Local", "Asynchronous TokenizedClone Local", "Synchronous TokenizedClone Remote", "Asynchronous TokenizedClone Remote", "Adaptive Mirror Local", "Adaptive Mirror Remote", "Adaptive Snapshot Local", "Adaptive Snapshot Remote", "Adaptive Clone Local", "Adaptive Clone Remote", "Adaptive TokenizedClone Local", "Adaptive TokenizedClone Remote", "DMTF Reserved", "Vendor Specific"} : Amended ToSubclass] uint16 SupportedReplicationTypes[];

  [Description("An array of supported features of partition objects for replication.") : Amended ToSubclass,Values{"Supports GUID Partition Table", "Supports MBR Partition", "DMTF Reserved", "Vendor Specific"} : Amended ToSubclass] uint16 SupportedReplicatedPartitionFeatures[];

  [Description("An array of supported features of partition objects for replication.") : Amended ToSubclass,Values{"Supports GUID Partition Table", "Supports MBR Partition", "Supports NTFS File System", "Supports ReFS File System", "Supports Cluster Shared Volume", "DMTF Reserved", "Vendor Specific"} : Amended ToSubclass] uint16 SupportedLogVolumeFeatures[];

  [Description("Minimum log size in bytes supported for replication.") : Amended ToSubclass] uint64 SupportedMinimumLogSize;

  [Description("Maximum log size in bytes supported for replication.") : Amended ToSubclass] uint64 SupportedMaximumLogSize;

  [Description("Default value for recovery point") : Amended ToSubclass] uint32 DefaultRecoveryPointObjective;

  [Description("Indicates if Replication Groups is supported") : Amended ToSubclass] boolean SupportsReplicationGroup;

  [Description("Indicates if empty Replicaiotn Groups are allowed") : Amended ToSubclass] boolean SupportsEmptyReplicationGroup;

  [Description("Indicates if this is a fully discovered model") : Amended ToSubclass] boolean SupportsFullDiscovery;

  [Description("Indicates if CreateReplicationShip operation is supported") : Amended ToSubclass] boolean SupportsCreateReplicationRelationshipMethod;

  [Description("Enumeration indicating what operations will be executed as asynchronous jobs. If an operation is included in both this and SupportedSynchronousActions properties then the underlying implementation is indicating that it may or may not create a job.\nNote: the following methods are not supported asynchronously, hence the gap between 11 and 19: \n\t - CreateGroup \n\t - DeleteGroup \n\t - AddMembers \n\t - RemoveMembers \n\t - AddReplicationEntity \n\t - AddServiceAccessPoint \n\t - AddSharedSecret.") : Amended ToSubclass,Values{"CreateElementReplica", "CreateGroupReplica", "CreateSynchronizationAspect", "ModifyReplicaSynchronization", "ModifyListSynchronization", "ModifySettingsDefineState", "GetAvailableTargetElements", "GetPeerSystems", "GetReplicationRelationships", "GetServiceAccessPoints", "CreateListReplica", "CreateGroupReplicaFromElements", "GetReplicationRelationshipInstances", "ModifyListSettingsDefineState", "CreateRemoteReplicationCollection", "AddToRemoteReplicationCollection", "RemoveFromRemoteReplicationCollection", "GetSynchronizationAspects", "GetSynchronizationAspectInstances", "CreateGroupReplicaFromElementSynchronizations", "AddElementsToGroupSynchronized", "ConfirmTargetData", "CreateListSynchronizationAspect", "DMTF Reserved", "Vendor Specific"} : Amended ToSubclass] uint16 SupportedAsynchronousActions[];

  [Description("Enumeration indicating what operations will be executed synchronously -- without the creation of a job. If an operation is included in both this property and SupportedAsynchronousActions then the underlying implementation is indicating that it may or may not create a job.\nNote: the following methods are not supported asynchronously: \n\t - CreateGroup \n\t - DeleteGroup \n\t - AddMembers \n\t - RemoveMembers \n\t - AddReplicationEntity \n\t - AddServiceAccessPoint \n\t - AddSharedSecret.") : Amended ToSubclass,Values{"CreateElementReplica", "CreateGroupReplica", "CreateSynchronizationAspect", "ModifyReplicaSynchronization", "ModifyListSynchronization", "ModifySettingsDefineState", "GetAvailableTargetElements", "GetPeerSystems", "GetReplicationRelationships", "GetServiceAccessPoints", "CreateGroup", "DeleteGroup", "AddMembers", "RemoveMembers", "AddReplicationEntity", "AddServiceAccessPoint", "AddSharedSecret", "CreateListReplica", "CreateGroupReplicaFromElements", "GetReplicationRelationshipInstances", "ModifyListSettingsDefineState", "CreateRemoteReplicationCollection", "AddToRemoteReplicationCollection", "RemoveFromRemoteReplicationCollection", "GetSynchronizationAspects", "GetSynchronizationAspectInstances", "CreateGroupReplicaFromElementSynchronizations", "AddElementsToGroupSynchronized", "ConfirmTargetData", "CreateListSynchronizationAspect", "DMTF Reserved", "Vendor Specific"} : Amended ToSubclass] uint16 SupportedSynchronousActions[];

  [Description("This method for a given ReplicationType returns the supported Operations on a StorageSynchronized association that can be supplied to the ModifyReplicaSynchronization method.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unknown", "Timeout", "Failed", "Invalid Parameter", "In Use", "DMTF Reserved", "Vendor Specific"} : Amended ToSubclass] uint32 GetSupportedOperations([In,Description("A value representing the ReplicationType.") : Amended ToSubclass] uint16 ReplicationType,[Out,Description("An array of Supported Operations.") : Amended ToSubclass,Values{"Abort", "Activate Consistency", "Activate", "AddSyncPair", "Deactivate Consistency", "Deactivate", "Detach", "Dissolve", "Failover", "Failback", "Fracture", "RemoveSyncPair", "Resync Replica", "Restore from Replica", "Resume", "Reset To Sync", "Reset To Async", "Return To ResourcePool", "Reverse Roles", "Split", "Suspend", "Unprepare", "Prepare", "Reset To Adaptive", "DMTF Reserved", "Vendor Specific"} : Amended ToSubclass] uint16 SupportedOperations[],[Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("This method for a given ReplicationType returns the supported Operations on a GroupSynchronized association that can be supplied to the ModifyReplicaSynchronization method.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unknown", "Timeout", "Failed", "Invalid Parameter", "In Use", "DMTF Reserved", "Vendor Specific"} : Amended ToSubclass] uint32 GetSupportedGroupOperations([In,Description("A value representing the ReplicationType.") : Amended ToSubclass] uint16 ReplicationType,[Out,Description("An array of Supported group Operations.") : Amended ToSubclass,Values{"Abort", "Activate Consistency", "Activate", "AddSyncPair", "Deactivate Consistency", "Deactivate", "Detach", "Dissolve", "Failover", "Failback", "Fracture", "RemoveSyncPair", "Resync Replica", "Restore from Replica", "Resume", "Reset To Sync", "Reset To Async", "Return To ResourcePool", "Reverse Roles", "Split", "Suspend", "Unprepare", "Prepare", "Reset To Adaptive", "DMTF Reserved", "Vendor Specific"} : Amended ToSubclass] uint16 SupportedGroupOperations[],[Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("This method, for a given ReplicationType, returns the supported features.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unknown", "Timeout", "Failed", "Invalid Parameter", "In Use", "DMTF Reserved", "Vendor Specific"} : Amended ToSubclass] uint32 GetSupportedFeatures([In,Description("A value representing the ReplicationType.") : Amended ToSubclass] uint16 ReplicationType,[Out,Description("An array of Supported Features.") : Amended ToSubclass,Values{"Replication groups", "Multi-hop element replication", "Multi-hop elements must have same SyncType", "Multi-hop requires advance notice", "Requires full discovery of target ComputerSystem", "Service suspends source I/O when necessary", "Targets allocated from Any storage pool", "Targets allocated from Shared storage pool", "Targets allocated from Exclusive storage pool", "Targets allocated from Multiple storage pools", "Targets require reserved elements", "Target is associated to SynchronizationAspect", "Source is associated to SynchronizationAspect", "Error recovery from Broken state Automatic", "Target must remain associated to source", "Remote resource requires remote CIMOM", "Synchronized clone target detaches automatically", "Reverse Roles operation requires Read Only source", "Reverse Roles operation requires subsequent resync", "Restore operation requires subsequent fracture", "Resync operation requires subsequent activate", "Copy operation requires offline source", "Adjustable CopyPriority", "Source requires reserved element", "Supports undiscovered resources", "Restore operation requires subsequent detach", "Target element can be added to collections", "Reverse Roles operation requires Synchronized state", "Reverse Roles operation requires Fractured state", "Reverse Roles operation requires Split state", "Reverse Roles operation requires FailedOver state", "Reverse Roles operation requires Suspended state", "Provider can manage remote source", "Provider can manage remote target", "Supports temporary ReplicationEntity", "Supports persistent ReplicationEntity", "ReplicationEntity supports embedded instance", "TargetElement shall not be supplied", "TargetPool shall not be supplied", "TargetGoal shall not be supplied", "Provider can create remote elements", "Creating remote elements requires TargetPool", "Local targets allocated from sources resource pool", "Supports SynchronizationAspect", "Accepts foreign object paths", "Failover operation requires subsequent fracture", "Failover operation requires subsequent split", "Restore operation requires subsequent resume", "GetPeerSystems can return access points", "Client can supply target ElementName", "Reverse Roles operation does not change CopyState", "Failover operation requires subsequent failback", "Planned Failover operation requires fractured state", "Target element requires resource pool reserved for replication", "DMTF Reserved", "Vendor Specific"} : Amended ToSubclass] uint16 Features[],[Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("This method, for a given ReplicationType, returns the supported group features.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unknown", "Timeout", "Failed", "Invalid Parameter", "In Use", "DMTF Reserved", "Vendor Specific"} : Amended ToSubclass] uint32 GetSupportedGroupFeatures([In,Description("A value representing the ReplicationType.") : Amended ToSubclass] uint16 ReplicationType,[Out,Description("An array of Supported Features.") : Amended ToSubclass,Values{"One-to-many replication", "Many-to-many groups", "Consistency enabled for all groups", "Empty replication groups allowed", "Source group must have more than one element", "Composite Groups", "Multihop element replication", "Multi-hop elements must have same SyncType", "Group can only have one single relationship active", "Source element can be removed from group", "Target element can be removed from group", "Group can be temporary", "Group is nameable", "Supports target element count", "Synchronized clone target detaches automatically", "Reverse Roles operation requires Read Only source", "Reverse Roles operation requires subsequent resync", "Restore operation requires subsequent fracture", "Resync operation requires subsequent activate", "Copy operation requires offline source", "Restore operation requires subsequent detach", "Element can be member of multiple groups", "Elements of group can be mix of thin and thick", "TokenizedClone ConsistentPointInTime", "Target elements can be added to collections", "Reverse Roles operation requires Synchronized state", "Reverse Roles operation requires Fractured state", "Reverse Roles operation requires Split state", "Reverse Roles operation requires FailedOver state", "Reverse Roles operation requires Suspended state", "Provider can manage remote source group", "Provider can manage remote target group", "TargetGroup shall not be supplied", "TargetPool shall not be supplied", "TargetSettingGoal shall not be supplied", "Provider can create remote target group", "Provider can create local target group", "Provider must create remote group", "Creating remote elements requires TargetPool", "Target group shall be supplied", "CreateGroupReplica only accepts empty groups", "One replication group per storage pool", "Supports ConsistencyExempt when adding to group", "Add or Remove to group requires Fractured state", "Add or Remove to group requires Split state", "Add or Remove to group requires Suspended state", "Add or Remove to group requires FailedOver state", "Supports SynchronizationAspect of replication group", "No element level StorageSynchronized", "Accepts foreign object paths", "Failover operation requires subsequent fracture", "Failover operation requires subsequent split", "Restore operation requires subsequent resume", "One consistent async per RemoteReplicationCollection", "Client can supply RelationshipName", "Implementation decides group member order", "Reverse Roles operation does not change CopyState", "Failover operation requires subsequent failback", "Planned Failover operation requires split state", "Planned Failover operation requires fractured state", "Target element requires resource pool reserved for replication", "AddSyncPair requires Synchronized mirror pair", "Provider can create remote elements using TargetPools", "DMTF Reserved", "Vendor Specific"} : Amended ToSubclass] uint16 GroupFeatures[],[Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("This method for a given ReplicationType returns the supported CopyStates and a parallel array to indicate for a given CopyState the target element is host accessible or not. \nIf the Operation parameter is supplied, the method returns only the CopyStates that the operation can be accepted.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unknown", "Timeout", "Failed", "Invalid Parameter", "In Use", "DMTF Reserved", "Vendor Specific"} : Amended ToSubclass] uint32 GetSupportedCopyStates([In,Description("A value representing the ReplicationType.") : Amended ToSubclass] uint16 ReplicationType,[Out,Description("Supported Copy States.") : Amended ToSubclass] uint16 SupportedCopyStates[],[Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("This method, for a given ReplicationType, returns the supported replication group CopyStates.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unknown", "Timeout", "Failed", "Invalid Parameter", "In Use", "DMTF Reserved", "Vendor Specific"} : Amended ToSubclass] uint32 GetSupportedGroupCopyStates([In,Description("A value representing the ReplicationType.") : Amended ToSubclass] uint16 ReplicationType,[Out,Description("Supported Copy States.") : Amended ToSubclass] uint16 SupportedCopyStates[],[Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("This method, for a given ReplicationType, returns recovery point data.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unknown", "Timeout", "Failed", "Invalid Parameter", "In Use", "Property Is Not Supported"} : Amended ToSubclass] uint32 GetRecoveryPointData([In,Description("A value representing the ReplicationType.") : Amended ToSubclass] uint16 ReplicationType,[Out,Description("Default recovery point value") : Amended ToSubclass] uint32 DefaultRecoveryPoint,[Out,Description("List of recovery point values based on recovery point indicator") : Amended ToSubclass] uint32 RecoveryPointValues[],[Out,Description("An Out parameter to indicate the semantics of the supported values.") : Amended ToSubclass,Values{"Range", "Discrete"} : Amended ToSubclass] uint16 RecoveryPointIndicator,[Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

};



[Description("A replication group represents a consistency grouping of storage replicas.") : Amended ToSubclass,ClassVersion("1.0") : Amended,AMENDMENT, LOCALE("MS_409")] 

class MSFT_ReplicationGroup : MSFT_StorageObject

{

  [Description("A user-friendly string representing the name of the replication group.") : Amended ToSubclass] string FriendlyName;

  [Description("A user-friendly string representing the description of the replication group.") : Amended ToSubclass] string Description;

  [Description("Denotes the current health status of the replication group. Health of a group is derived from the health of the backing storage replicas.\n 0 - 'Healthy': All replicas are in a healthy state. \n1 - 'Warning': The majority of replicas are healthy, but one or more may be not fully synchronized. \n2 - 'Unhealthy': The majority of replicas are unhealthy or in a failed state.") : Amended ToSubclass,Values{"Healthy", "Warning", "Unhealthy", "Unknown"} : Amended ToSubclass] uint16 HealthStatus;

  [Description("Indicates the current operating conditions of the group. Unlike HealthStatus, this field indicates the status of hardware, software, and infrastructure issues related to this group, and can contain multiple values.") : Amended ToSubclass,Values{"Unknown", "Other", "OK", "Degraded", "Stressed", "Predictive Failure", "Error", "Non-Recoverable Error", "Starting", "Stopping", "Stopped", "In Service", "No Contact", "Lost Communication", "Aborted", "Dormant", "Supporting Entity in Error", "Completed", "Power Mode", "Relocating", "Microsoft Reserved"} : Amended ToSubclass] uint16 OperationalStatus[];

  [Description("This method allows for the creation of a replication relationship between replication groups.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Object Not Found", "Method Parameters Checked - Job Started", "Access denied", "There are not enough resources to complete the operation.", "Cache out of date", "The operation is not supported while the cluster is being upgraded."} : Amended ToSubclass] uint32 CreateReplica([In,Description("A end user relevant name for the element being created. If NULL, then a system supplied default name can be used. The value will be stored in the \\'FriendlyName\\' property for the created element.") : Amended ToSubclass] string FriendlyName,[In,Description("This parameter allows the user to specify the replica target subsystem.") : Amended ToSubclass] MSFT_ReplicaPeer TargetStorageSubsystem,[In,Description("This parameter allows the user to specify the replication group target on the target machine.") : Amended ToSubclass] string TargetGroupObjectId,[In,Description("A storage pool on the target to be used as the source for creating the necessary TargetStorageElements. This parameter is ignored if the target group contains any elements.") : Amended ToSubclass] string TargetStoragePoolObjectId,[In,Description("Recovery Point Objective indicates the maximum interval in which data might be lost in seconds. For synchronous copy operations, RPO is 0. For asynchronous copy operations RPO represents the interval since the most recent transmission of data to the target element.") : Amended ToSubclass] uint32 RecoveryPointObjective,[In,Description("The replication settings.") : Amended ToSubclass] MSFT_ReplicationSettings ReplicationSettings,[In,Description("SyncType describes the type of copy that will be made.") : Amended ToSubclass,Values{"DMTF Reserved", "Mirror", "Snapshot", "Clone", "TokenizedClone", "DMTF Reserved", "Vendor Specific"} : Amended ToSubclass] uint16 SyncType,[In,Description("This parameter controls the asynchronous behavior the method will follow.\nIf TRUE, this method will make use of the CreatedStorageJob out parameter when the request is taking a long time to service. If a storage job has been created to track the operation, this method will return 4096 - 'Method Parameters Checked - Job Started'. Note, even if RunAsJob is TRUE, the method can still return a result if it has finished in sufficient time. \nIf FALSE or NULL, this method will follow default WMI asynchronous behavior as determined by the client's method for invocation (i.e. synchronous unless requested otherwise).") : Amended ToSubclass] boolean RunAsJob,[Out] MSFT_ReplicaPeer CreatedReplicaPeer,[Out,Description("If RunAsJob is set to TRUE and this method takes a while to execute, this parameter returns a reference to the storage job used to track the long running operation.") : Amended ToSubclass] MSFT_StorageJob Ref CreatedStorageJob,[Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("Modifies the relationship between replication groups.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Object Not Found", "Method Parameters Checked - Job Started", "Access denied", "There are not enough resources to complete the operation.", "Cache out of date", "The operation is not supported while the cluster is being upgraded."} : Amended ToSubclass] uint32 SetReplicationRelationship([In,Values{"Abort", "ActivateConsistency", "Activate", "AddSyncPair", "DeactivateConsistency", "Deactivate", "Detach", "Dissolve", "Failover", "Failback", "Fracture", "RemoveSyncPair", "ResyncReplica", "RestoreFromReplica", "Resume", "ResetToSync", "ResetToAsync", "ReturnToResourcePool", "ReverseRoles", "Split", "Suspend", "Unprepare"} : Amended ToSubclass] uint16 Operation,[In,Description("This parameter is used to specify the replica peer for the target group.") : Amended ToSubclass] MSFT_ReplicaPeer TargetGroup,[In,Description("This parameter is used to specify an array of source storage objects by Ids to be replicated. Consistency ordering is based on the order of objects in this array.") : Amended ToSubclass] MSFT_StorageObject SourceStorageObjects[],[In,Description("This parameter is used to specify an array of target objects by Id to be replicated. Consistency ordering is based on the order of objects in this array.") : Amended ToSubclass] MSFT_StorageObject TargetStorageObjects[],[In,Description("Specifies the element replicas for Add or RemoveSyncPair.") : Amended ToSubclass] MSFT_Synchronized SyncPairs[],[In,Description("This parameter controls the asynchronous behavior the method will follow.\nIf TRUE, this method will make use of the CreatedStorageJob out parameter when the request is taking a long time to service. If a storage job has been created to track the operation, this method will return 4096 - 'Method Parameters Checked - Job Started'. Note, even if RunAsJob is TRUE, the method can still return a result if it has finished in sufficient time. \nIf FALSE or NULL, this method will follow default WMI asynchronous behavior as determined by the client's method for invocation (i.e. synchronous unless requested otherwise).") : Amended ToSubclass] boolean RunAsJob,[Out,Description("If RunAsJob is set to TRUE and this method takes a while to execute, this parameter returns a reference to the storage job used to track the long running operation.") : Amended ToSubclass] MSFT_StorageJob Ref CreatedStorageJob,[Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("This method allows the user to specify the replication settings for this replication group.") : Amended ToSubclass] uint32 SetReplicationSettings([In,Description("The replication settings.") : Amended ToSubclass] MSFT_ReplicationSettings ReplicationSettings,[Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("This method returns the replication settings for this replication group.") : Amended ToSubclass] uint32 GetReplicationSettings([Out,Description("The replication settings.") : Amended ToSubclass] MSFT_ReplicationSettings ReplicationSettings,[Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("This method allows the user to add members to this replication group.") : Amended ToSubclass] uint32 AddMember([In,Description("The storage objects to add to the group.") : Amended ToSubclass] MSFT_StorageObject StorageObjects[],[Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("This method allows the user to remove members from this replication group.") : Amended ToSubclass] uint32 RemoveMember([In,Description("The storage objects to remove from the group.") : Amended ToSubclass] MSFT_StorageObject StorageObjects[],[Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("This method allows the replication group to be renamed.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Access denied", "There are not enough resources to complete the operation.", "The operation is not supported while the cluster is being upgraded.", "Cannot connect to the storage provider.", "The storage provider cannot connect to the storage subsystem."} : Amended ToSubclass] uint32 SetFriendlyName([In] string FriendlyName,[Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("This method deletes an empty replication group. If the group contains any replicas, these replicas must be removed first.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Access denied", "There are not enough resources to complete the operation.", "The operation is not supported while the cluster is being upgraded.", "Cannot connect to the storage provider.", "The storage provider cannot connect to the storage subsystem.", "The replication group contains replicas."} : Amended ToSubclass] uint32 DeleteObject([Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

};



[ClassVersion("1.0") : Amended,Description("Association between ReplicationGroup and Partition") : Amended ToSubclass,AMENDMENT, LOCALE("MS_409")] 

class MSFT_ReplicationGroupToPartition

{

};



[Description("Association between replicated groups") : Amended ToSubclass,ClassVersion("1.0") : Amended,AMENDMENT, LOCALE("MS_409")] 

class MSFT_ReplicationGroupToReplicaPeer : MSFT_Synchronized

{

};



[ClassVersion("1.0") : Amended,Description("Association between a replication group and its virtual disks") : Amended ToSubclass,AMENDMENT, LOCALE("MS_409")] 

class MSFT_ReplicationGroupToVirtualDisk

{

};



[ClassVersion("1.0") : Amended,Description("Represents the settings to be configured on a group or sync pair.") : Amended ToSubclass,AMENDMENT, LOCALE("MS_409")] 

class MSFT_ReplicationSettings

{

  [Description("TODO") : Amended ToSubclass] uint16 TargetElementSupplier;

  [Description("TODO") : Amended ToSubclass] uint16 ThinProvisioningPolicy;

  [Description("A set of volumes where the replication journal for the ReplicationGroup is hosted.") : Amended ToSubclass] MSFT_Volume LogDevices[];

  [Description("Size of replication journal in units of bytes. Size must be in multiples of gigabytes.") : Amended ToSubclass] uint64 LogSizeInBytes;

  [Description("Minimum number of synchronous replication partnerships that are in synchronous replication state for I/O to continue on source Replication Group.") : Amended ToSubclass] uint16 ReplicationQuorum;

  [Description("Mode describes whether the target elements will be updated synchronously or asynchronously. If NULL, implementation decides the mode.") : Amended ToSubclass,Values{"Unknown", "Synchronous", "Asynchronous", "Microsoft Reserved", "Vendor Specific"} : Amended ToSubclass] uint16 SyncMode;

};



[Description("ResiliencySetting is a detailed description of the resiliency capabilities offered by a storage pool. A storage pool can have one or more of these settings. It specifies a series of properties with a minimum, maximum, and default value. The minimum and maximum values may not reflect the current capabilities of the storage pool, but rather the ideal range of capabilities offered by the subsystem. The default values will be used when creating new virtual disks unless overridden.") : Amended ToSubclass,ClassVersion("1.0") : Amended,AMENDMENT, LOCALE("MS_409")] 

class MSFT_ResiliencySetting : MSFT_StorageObject

{

  [Description("A system set, user-friendly, display-oriented string which describes the resiliency setting.") : Amended ToSubclass] string Name;

  [Description("A system set description of the capabilities of the resiliency setting, including (but not limited to) when a setting should be used, its strengths and drawbacks, performance information, and any other information that the vendor feels is helpful to the user. ") : Amended ToSubclass] string Description;

  [Description("This field reports the minimum number of complete copies of data that will be maintained by the storage pool.") : Amended ToSubclass] uint16 NumberOfDataCopiesMin;

  [Description("This field reports the maximum number of complete copies of data that can be maintained by the storage pool.") : Amended ToSubclass] uint16 NumberOfDataCopiesMax;

  [Description("This field is a user-settable preference for the number of complete data copies to maintain. Its value must be within the range defined by NumberofDataCopiesMin and NumberOfDataCopiesMax (inclusive). For new concrete pools, the default should be inherited from the corresponding primordial pool's capability. In the case of the primordial pool, the initial value for this field is left to the Storage Management Provider software.") : Amended ToSubclass] uint16 NumberOfDataCopiesDefault;

  [Description("This field reports the minimum number of tolerable physical disk failures that can occur before data loss would occur.") : Amended ToSubclass] uint16 PhysicalDiskRedundancyMin;

  [Description("This field reports the maximum number of tolerable physical disk failures that could occur before data loss would occur.") : Amended ToSubclass] uint16 PhysicalDiskRedundancyMax;

  [Description("This field is a user-settable preference for how many physical disk failures a virtual disk should be able to withstand before data loss occurs.") : Amended ToSubclass] uint16 PhysicalDiskRedundancyDefault;

  [Description("This field describes the minimum number of underlying physical disks across which data can be striped in the common striping-based resiliency settings.") : Amended ToSubclass] uint16 NumberOfColumnsMin;

  [Description("This field describes the maximum number of underlying physical disks across which data can be striped in the common striping-based resiliency settings.") : Amended ToSubclass] uint16 NumberOfColumnsMax;

  [Description("This field is a user-settable preference for the number of underlying physical disks across which data should be striped.") : Amended ToSubclass] uint16 NumberOfColumnsDefault;

  [Description("This field describes the minimum number of bytes that can form a strip in common striping-based resiliency settings. The strip is defined as the size of the portion of a stripe that lies on one physical disk.") : Amended ToSubclass,Units("Bytes") : Amended ToSubclass] uint64 InterleaveMin;

  [Description("This field describes the maximum number of bytes that can form a strip in common striping-based resiliency settings. The strip is defined as the size of the portion of a stripe that lies on one physical disk.") : Amended ToSubclass,Units("Bytes") : Amended ToSubclass] uint64 InterleaveMax;

  [Description("This field describes the desired number of bytes that will form a strip in common striping-based resiliency settings. The strip is defined as the size of the portion of a stripe that lies on one physical disk. Thus, Interleave * NumberOfColumns will yield the total size of one stripe.") : Amended ToSubclass,Units("Bytes") : Amended ToSubclass] uint64 InterleaveDefault;

  [Description("This field describes the minimum number of light parities that can be formed for parity-based resiliency settings. If the resiliency setting is not parity-based, this field will be set to 1.") : Amended ToSubclass] uint16 NumberOfGroupsMin;

  [Description("This field describes the maximum number of light parities that can be formed for parity-based resiliency settings. If the resiliency setting is not parity-based, this field will be set to 1.") : Amended ToSubclass] uint16 NumberOfGroupsMax;

  [Description("This field describes the desired number of light parities that will be formed for parity-based resiliency settings. If the resiliency setting is not parity-based, this field will be set to 1.") : Amended ToSubclass] uint16 NumberOfGroupsDefault;

  [Description("This field specifies whether a parity-based resiliency setting is using a rotated or non-rotated parity layout. If the resiliency setting is not parity based, this field must be set to NULL") : Amended ToSubclass,Values{"Non-rotated Parity", "Rotated Parity"} : Amended ToSubclass] uint16 ParityLayout;

  [Description("This method allows a user to modify the default values for this resiliency setting.The updated values will take effect only for subsequent virtual disk creations and are not retroactively applied.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Access denied", "There are not enough resources to complete the operation.", "Cannot connect to the storage provider.", "The storage provider cannot connect to the storage subsystem.", "This operation is not supported on primordial storage pools.", "The storage pool could not complete the operation because its health or operational status does not permit it.", "The storage pool could not complete the operation because its configuration is read-only.", "The value for PhysicalDiskRedundancy is outside of the supported range of values.", "The value for NumberOfDataCopies is outside of the supported range of values.", "The value for Interleave is outside of the supported range of values.", "The value for NumberOfColumns is outside of the supported range of values.", "The value for NumberOfGroups is outside of the supported range of values."} : Amended ToSubclass] uint32 SetDefaults([In,Description("The desired number of full data copies to maintain. This value must be between NumberofDataCopiesMin and NumberofDataCopiesMax.") : Amended ToSubclass] uint16 NumberOfDataCopiesDefault,[In,Description("The desired level of physical disk failure tolerance. This value must be between PhyscialDiskRedundancyMin and PhysicalDiskRedundancyMax.") : Amended ToSubclass] uint16 PhysicalDiskRedundancyDefault,[In,Description("Specifies the desired number of physical disks to stripe data across. This value must be between NumberOfColumnsMin and NumberofColumnsMax.") : Amended ToSubclass] uint16 NumberOfColumnsDefault,[In,Description("If TRUE, this field instructs the storage provider (or subsystem) to automatically pick what it determines to be the best number of columns for this resiliency setting. If this field is TRUE, then the NumberOfColumnsDefault parameter must be NULL.") : Amended ToSubclass] boolean AutoNumberOfColumns,[In,Description("Specifies the desired size of a data strip on a single physical disk in a striping based resiliency setting. This value must be between InterleaveMin and InterleaveMax. ") : Amended ToSubclass] uint64 InterleaveDefault,[In,Description("Specifies the desired number of light parities to form in a parity-based resiliency setting. This value must be between NumberOfGroupsMin and NumberOfGroupsMax.") : Amended ToSubclass] uint16 NumberOfGroupsDefault,[Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

};



[Description("Soft error can be returned by intrinsic methods (EnumerateInstances, GetInstance, etc.) to help distinguish between a query with no results (no error) and a query that failed for a specific reason.") : Amended ToSubclass,ClassVersion("1.0") : Amended,AMENDMENT, LOCALE("MS_409")] 

class MSFT_SoftError : CIM_Error

{

  [Description("This error is of the type 'Software Error'.") : Amended ToSubclass,Values{"Software Error"} : Amended ToSubclass] uint16 ErrorType;

  [Description("Corresponds to the SMP's StorageProvider.Name field.") : Amended ToSubclass] string OwningEntity;

  [Description("An opaque string that uniquely identifies, within the scope of the OwningEntity, the format of the Message.") : Amended ToSubclass] string MessageID;

  [Description("This field is the message displayed to the user. %1 should be replaced with the corresponding storage provider's Name field. %2 should be replaced with the error message.") : Amended ToSubclass] string Message;

  [Description("This error is informative only.") : Amended ToSubclass,Values{"Information"} : Amended ToSubclass] uint16 PerceivedSeverity;

  [Description("This field should contain the CIM Object Path to the SMP storage provider object.") : Amended ToSubclass] string ErrorSource;

  [Description("ErrorSourceFormat should be the CIM Object Path.") : Amended ToSubclass,Values{"CIMObjectPath"} : Amended ToSubclass] uint16 ErrorSourceFormat;

};



[Description("Soft error can be returned by intrinsic methods (EnumerateInstances, GetInstance, etc.) to help distinguish between a query with no results (no error) and a query that failed for a specific reason.") : Amended ToSubclass,ClassVersion("1.0") : Amended,AMENDMENT, LOCALE("MS_409")] 

class MSFT_SoftError_EmptyCache : MSFT_SoftError

{

  [Description("This field denotes the specific error code used for 'Cache out of date'.") : Amended ToSubclass] string MessageID;

  [Description("This field is the message displayed to the user. %1 should be replaced with the corresponding storage provider's Name field. %2 can be replaced with extra error information.") : Amended ToSubclass] string Message;

};



[Description("Soft error can be returned by intrinsic methods (EnumerateInstances, GetInstance, etc.) to help distinguish between a query with no results (no error) and a query that failed for a specific reason.") : Amended ToSubclass,ClassVersion("1.0") : Amended,AMENDMENT, LOCALE("MS_409")] 

class MSFT_SoftError_NotAuthenticated : MSFT_SoftError

{

  [Description("This field denotes the specific error code used for 'Access Denied'.") : Amended ToSubclass] string MessageID;

  [Description("This field is the message displayed to the user. %1 should be replaced with the corresponding storage provider's Name field. %2 should be replaced with the subsystem FriendlyName. %3 can be replaced with extra error information.") : Amended ToSubclass] string Message;

};



[Description("Soft error can be returned by intrinsic methods (EnumerateInstances, GetInstance, etc.) to help distinguish between a query with no results (no error) and a query that failed for a specific reason.") : Amended ToSubclass,ClassVersion("1.0") : Amended,AMENDMENT, LOCALE("MS_409")] 

class MSFT_SoftError_NotInCache : MSFT_SoftError

{

  [Description("This field denotes the specific error code used for 'Not in Cache'.") : Amended ToSubclass] string MessageID;

  [Description("This field is the message displayed to the user. %1 should be replaced with the corresponding storage provider's Name field. %2 can be replaced with extra error information.") : Amended ToSubclass] string Message;

};



[Description("Soft error can be returned by intrinsic methods (EnumerateInstances, GetInstance, etc.) to help distinguish between a query with no results (no error) and a query that failed for a specific reason.") : Amended ToSubclass,ClassVersion("1.0") : Amended,AMENDMENT, LOCALE("MS_409")] 

class MSFT_SoftError_RelativePath : MSFT_SoftError

{

  [Description("This field denotes the specific error code used for 'Relative paths not supported'.") : Amended ToSubclass] string MessageID;

  [Description("This field is the message displayed to the user.") : Amended ToSubclass] string Message;

};



[Description("Storage alert event") : Amended ToSubclass,ClassVersion("1.0") : Amended,AMENDMENT, LOCALE("MS_409")] 

class MSFT_StorageAlertEvent : MSFT_StorageEvent

{

  [Description("This field describes the type of alert being received.") : Amended ToSubclass,Values{"Thin provisioning threshold reached", "Microsoft Reserved", "Vendor Specific"} : Amended ToSubclass] uint16 AlertType;

};



[Description("Storage arrival events are used whenever a storage object is added or created.") : Amended ToSubclass,ClassVersion("1.0") : Amended,AMENDMENT, LOCALE("MS_409")] 

class MSFT_StorageArrivalEvent : MSFT_StorageEvent

{

};



[Description(" Represents a storage chassis in a data center.") : Amended ToSubclass,ClassVersion("1.0") : Amended,AMENDMENT, LOCALE("MS_409")] 

class MSFT_StorageChassis : MSFT_StorageFaultDomain

{

};



[Description("Storage departure events are used whenever a storage object is removed or deleted.") : Amended ToSubclass,ClassVersion("1.0") : Amended,AMENDMENT, LOCALE("MS_409")] 

class MSFT_StorageDepartureEvent : MSFT_StorageEvent

{

};



[ClassVersion("1.0") : Amended,Description("Object representing the result of a Diagnose method call on a storage object.") : Amended ToSubclass,AMENDMENT, LOCALE("MS_409")] 

class MSFT_StorageDiagnoseResult

{

  [Description("A unique identifier for the fault") : Amended ToSubclass] string FaultId;

  [Description("A string that uniquely identifies the type of fault.") : Amended ToSubclass] string FaultType;

  [Description("A unique identifier of the object that triggered the fault.") : Amended ToSubclass] string FaultingObjectUniqueId;

  [Description("A string that uniquely identifies the type of the object that triggered the fault.") : Amended ToSubclass] string FaultingObjectType;

  [Description("The description of the object that triggered the fault") : Amended ToSubclass] string FaultingObjectDescription;

  [Description("The location of the object that triggered the fault") : Amended ToSubclass] string FaultingObjectLocation;

  [Description("The formatted message describing the reason for the fault.") : Amended ToSubclass] string Reason;

  [Description("Free form descriptions of the recommended actions to take to resolve the cause of the fault.") : Amended ToSubclass] string RecommendedActions[];

  [Description("Denotes the perceived severity of the event from the notifier's point of view. \n0 - 'Unknown': The severity is unknown or indeterminate. \n2 - 'Information': The event is for informative purposes. \n3 - 'Degraded/Warning': Action may be required by the user. \n4 - 'Minor': Action is needed, but the situation is not serious at this time. \n5 - 'Major': Immediate action is needed. \n6 - 'Critical': Immediate action is needed and the scope of the issue is broad. \n7 - 'Fatal/NonRecoverable': An error has occurred, but it is too late to take remedial action. \n") : Amended ToSubclass,Values{"Unknown", "Information", "Degraded/Warning", "Minor", "Major", "Critical", "Fatal/NonRecoverable"} : Amended ToSubclass] uint16 PerceivedSeverity;

  [Description("Time at which the fault was first detected.") : Amended ToSubclass] datetime FaultTime;

};



[Description("Represents a manageable physical disk enclosure.") : Amended ToSubclass,ClassVersion("1.0") : Amended,AMENDMENT, LOCALE("MS_409")] 

class MSFT_StorageEnclosure : MSFT_StorageFaultDomain

{

  [Description("DeviceId is an address or other identifier that uniquely names the enclosure. For example, DeviceId is the enclosure GUID in Storage Spaces provider.") : Amended ToSubclass] string DeviceId;

  [Description("This field is a string representation of the enclosure's firmware version.") : Amended ToSubclass] string FirmwareVersion;

  [Values{"Unknown", "SCSI", "ATAPI", "ATA", "1394", "SSA", "Fibre Channel", "USB", "RAID", "iSCSI", "SAS", "SATA", "SD", "MMC", "Virtual", "File Backed Virtual", "Storage Spaces", "NVMe", "SCM", "UFS", "Microsoft Reserved"} : Amended ToSubclass] uint16 BusType;

  [Description("Number of slots hosted within the enclosure") : Amended ToSubclass] uint32 NumberOfSlots;

  [Description("An array containing the operational status of each slot of the enclosure. \n0 - 'Unknown' \n2 - 'OK': The element is present and working with no issues detected. \n3 - 'Degraded': The element detected one or more non-critical issues. \n6 - 'Error': The element detected one or more critical issues. \n7 - 'Non-Recoverable Error': The element detected one or more non-recoverable issues. \n0xD009 - 'Not Installed': The element is not present. \n0xD00A - 'Off': The element has not been turned on. \n0xD00B - 'No Access Allowed': No access is allowed to the element. \n0xD00C - 'Not Reported' ") : Amended ToSubclass,Values{"Unknown", "OK", "Degraded", "Error", "Non-Recoverable Error", "Not Installed", "Off", "No Access Allowed", "Not Reported"} : Amended ToSubclass] uint16 SlotOperationalStatus[];

  [Description("An array containing the operational status of each power supply of the enclosure. \n0 - 'Unknown' \n2 - 'OK': The element is present and working with no issues detected. \n3 - 'Degraded': The element detected one or more non-critical issues. \n6 - 'Error': The element detected one or more critical issues. \n7 - 'Non-Recoverable Error': The element detected one or more non-recoverable issues. \n0xD009 - 'Not Installed': The element is not present. \n0xD00A - 'Off': The element has not been turned on. \n0xD00B - 'No Access Allowed': No access is allowed to the element. \n0xD00C - 'Not Reported' ") : Amended ToSubclass,Values{"Unknown", "OK", "Degraded", "Error", "Non-Recoverable Error", "Not Installed", "Off", "No Access Allowed", "Not Reported"} : Amended ToSubclass] uint16 PowerSupplyOperationalStatus[];

  [Description("An array containing the operational status of each fan of the enclosure. \n0 - 'Unknown' \n2 - 'OK': The element is present and working with no issues detected. \n3 - 'Degraded': The element detected one or more non-critical issues. \n6 - 'Error': The element detected one or more critical issues. \n7 - 'Non-Recoverable Error': The element detected one or more non-recoverable issues. \n0xD009 - 'Not Installed': The element is not present. \n0xD00A - 'Off': The element has not been turned on. \n0xD00B - 'No Access Allowed': No access is allowed to the element. \n0xD00C - 'Not Reported' ") : Amended ToSubclass,Values{"Unknown", "OK", "Degraded", "Error", "Non-Recoverable Error", "Not Installed", "Off", "No Access Allowed", "Not Reported"} : Amended ToSubclass] uint16 FanOperationalStatus[];

  [Description("An array containing the operational status of each temperature sensor of the enclosure. \n0 - 'Unknown' \n2 - 'OK': The element is present and working with no issues detected. \n3 - 'Degraded': The element detected one or more non-critical issues. \n6 - 'Error': The element detected one or more critical issues. \n7 - 'Non-Recoverable Error': The element detected one or more non-recoverable issues. \n0xD009 - 'Not Installed': The element is not present. \n0xD00A - 'Off': The element has not been turned on. \n0xD00B - 'No Access Allowed': No access is allowed to the element. \n0xD00C - 'Not Reported' ") : Amended ToSubclass,Values{"Unknown", "OK", "Degraded", "Error", "Non-Recoverable Error", "Not Installed", "Off", "No Access Allowed", "Not Reported"} : Amended ToSubclass] uint16 TemperatureSensorOperationalStatus[];

  [Description("An array containing the operational status of each voltage sensor of the enclosure. \n0 - 'Unknown' \n2 - 'OK': The element is present and working with no issues detected. \n3 - 'Degraded': The element detected one or more non-critical issues. \n6 - 'Error': The element detected one or more critical issues. \n7 - 'Non-Recoverable Error': The element detected one or more non-recoverable issues. \n0xD009 - 'Not Installed': The element is not present. \n0xD00A - 'Off': The element has not been turned on. \n0xD00B - 'No Access Allowed': No access is allowed to the element. \n0xD00C - 'Not Reported' ") : Amended ToSubclass,Values{"Unknown", "OK", "Degraded", "Error", "Non-Recoverable Error", "Not Installed", "Off", "No Access Allowed", "Not Reported"} : Amended ToSubclass] uint16 VoltageSensorOperationalStatus[];

  [Description("An array containing the operational status of each current sensor of the enclosure. \n0 - 'Unknown' \n2 - 'OK': The element is present and working with no issues detected. \n3 - 'Degraded': The element detected one or more non-critical issues. \n6 - 'Error': The element detected one or more critical issues. \n7 - 'Non-Recoverable Error': The element detected one or more non-recoverable issues. \n0xD009 - 'Not Installed': The element is not present. \n0xD00A - 'Off': The element has not been turned on. \n0xD00B - 'No Access Allowed': No access is allowed to the element. \n0xD00C - 'Not Reported' ") : Amended ToSubclass,Values{"Unknown", "OK", "Degraded", "Error", "Non-Recoverable Error", "Not Installed", "Off", "No Access Allowed", "Not Reported"} : Amended ToSubclass] uint16 CurrentSensorOperationalStatus[];

  [Description("An array containing the operational status of each controller of the enclosure. \n0 - 'Unknown' \n2 - 'OK': The element is present and working with no issues detected. \n3 - 'Degraded': The element detected one or more non-critical issues. \n6 - 'Error': The element detected one or more critical issues. \n7 - 'Non-Recoverable Error': The element detected one or more non-recoverable issues. \n0xD009 - 'Not Installed': The element is not present. \n0xD00A - 'Off': The element has not been turned on. \n0xD00B - 'No Access Allowed': No access is allowed to the element. \n0xD00C - 'Not Reported' ") : Amended ToSubclass,Values{"Unknown", "OK", "Degraded", "Error", "Non-Recoverable Error", "Not Installed", "Off", "No Access Allowed", "Not Reported"} : Amended ToSubclass] uint16 IOControllerOperationalStatus[];

  [Description("This method allows a user to perform certain identification tasks on the enclosure and its elements.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Access denied", "There are not enough resources to complete the operation.", "Cannot connect to the storage provider.", "The storage provider cannot connect to the storage subsystem.", "One or more slot numbers provided are not valid.", "The enclosure does not support identification of the enclosure element."} : Amended ToSubclass] uint32 IdentifyElement([In,Description("If set to TRUE, this instructs the enclosure to enable its identification LED on the specified element. The identification LED should remain enabled until a second call to IdentifyElement on the same element is made with this parameter specified as FALSE.") : Amended ToSubclass] boolean Enable,[In,Description("The numbers of the slots on which to enable or disable identification.") : Amended ToSubclass] uint32 SlotNumbers[],[Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("This method returns the vendor specific data from an enclosure.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Access denied", "There are not enough resources to complete the operation.", "Cannot connect to the storage provider.", "The storage provider cannot connect to the storage subsystem.", "The given page number has not been implemented."} : Amended ToSubclass] uint32 GetVendorData([In,Description("Denotes the page number for which vendor data is requested.") : Amended ToSubclass] uint16 PageNumber,[Out,Description("The vendor specific data (page 04h for example) from an enclosure.") : Amended ToSubclass] string VendorData,[Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("This method allows a user to perform certain maintenance tasks on the physical disks in the storage enclosure. ") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Currently unsafe to perform the operation", "Access denied", "There are not enough resources to complete the operation.", "Cannot connect to the storage provider.", "The storage provider cannot connect to the storage subsystem.", "The storage pool could not complete the operation because its health or operational status does not permit it.", "The storage pool could not complete the operation because its configuration is read-only."} : Amended ToSubclass] uint32 Maintenance([In,Description("If set to TRUE, this instructs the physical disks in the storage enclosure to validate if enabling maintenance mode will be successful.") : Amended ToSubclass] boolean ValidateMaintenanceMode,[In,Description("If set to TRUE, this instructs the physical disks in the storage enclosure to enable maintenance mode.") : Amended ToSubclass] boolean EnableMaintenanceMode,[In,Description("This indicates the time in seconds before stale data will be moved off the physical disks in this storage enclosure") : Amended ToSubclass] uint32 Timeout,[In,Description("The model of the physical disks to put into maintenance mode.") : Amended ToSubclass] string Model,[In,Description("The manufacturer of the physical disks to be put into maintenance mode.") : Amended ToSubclass] string Manufacturer,[In,Description("Ignore any detached virtual disks.") : Amended ToSubclass] boolean IgnoreDetachedVirtualDisks,[Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("This method allows a user to set the power of enclosure elements to either Off or On") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Access denied", "There are not enough resources to complete the operation.", "Cannot connect to the storage provider.", "The storage provider cannot connect to the storage subsystem.", "One or more slot numbers provided are not valid.", "The enclosure does not support setting the power of the enclosure element."} : Amended ToSubclass] uint32 PowerElement([In,Description("If set to TRUE, this instructs the enclosure to set the power of the specified element to Off. The element should remain Off until a second call to PowerElement on the same element is made with this parameter specified as FALSE.") : Amended ToSubclass] boolean Off,[In,Description("The numbers of the slots on which to set the power state.") : Amended ToSubclass] uint32 SlotNumbers[],[Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("This method returns the firmware information for a storage enclosure.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Access denied", "There are not enough resources to complete the operation.", "Cannot connect to the storage provider.", "The storage provider cannot connect to the storage subsystem."} : Amended ToSubclass] uint32 GetFirmwareInformation([Out,Description("Indicates whether this storage enclosure supports firmware update operation used by Windows") : Amended ToSubclass] boolean SupportsUpdate,[Out,Description("Indicates how many firmware slots this storage enclosure supports") : Amended ToSubclass] uint16 NumberOfSlots,[Out,Description("Indicates the current active firmware slot number of this storage enclosure") : Amended ToSubclass] uint16 ActiveSlotNumber,[Out,Description("Indicates the number associated with the firmware slot") : Amended ToSubclass] uint16 SlotNumber[],[Out,Description("Indicates whether the firmware slot can be used to download new firmware image to") : Amended ToSubclass] boolean IsSlotWritable[],[Out,Description("Indicates the firmware revision represented by firmware in slot") : Amended ToSubclass] string FirmwareVersionInSlot[],[Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("This method updates firmware to the storage enclosure.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Object Not Found", "Currently unsafe to perform the operation", "Access denied", "There are not enough resources to complete the operation.", "An unexpected I/O error has occurred", "Cannot connect to the storage provider.", "The storage provider cannot connect to the storage subsystem."} : Amended ToSubclass] uint32 UpdateFirmware([In,Description("The path and name of firmware image file.") : Amended ToSubclass] string ImagePath,[In,Description("The firmware slot number to download the firmware image to.") : Amended ToSubclass] uint16 SlotNumber,[Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

};



[ClassVersion("1.0") : Amended,Description("Association between StorageEnclosure and PhysicalDisk") : Amended ToSubclass,AMENDMENT, LOCALE("MS_409")] 

class MSFT_StorageEnclosureToPhysicalDisk

{

};



[Description("Provides extra status information about an extrinsic method's invocation") : Amended ToSubclass,ClassVersion("1.0") : Amended,AMENDMENT, LOCALE("MS_409")] 

class MSFT_StorageExtendedStatus : CIM_Error

{

};



[ClassVersion("1.0") : Amended,Description("Association between a StorageFaultDomain object and its ancestor or descendent StorageFaultDomain objects.") : Amended ToSubclass,AMENDMENT, LOCALE("MS_409")] 

class MSFT_StorageFaultDomainToStorageFaultDomain

{

};



[Description("Storage fault event") : Amended ToSubclass,ClassVersion("1.0") : Amended,AMENDMENT, LOCALE("MS_409")] 

class MSFT_StorageFaultEvent : MSFT_StorageEvent

{

  [Description("A globally unique identifier for the storage subsystem") : Amended ToSubclass] string StorageSubsystemUniqueId;

  [Description("The state change of the alert.") : Amended ToSubclass,Values{"Creation", "Deletion", "Modification"} : Amended ToSubclass] uint16 ChangeType;

  [Description("A unique identifier for the fault") : Amended ToSubclass] string FaultId;

  [Description("A string that uniquely identifies the type of fault.") : Amended ToSubclass] string FaultType;

  [Description("A unique identifier of the object that triggered the fault.") : Amended ToSubclass] string FaultingObjectUniqueId;

  [Description("A string that uniquely identifies the type of the object that triggered the fault.") : Amended ToSubclass] string FaultingObjectType;

  [Description("The description of the object that triggered the fault.") : Amended ToSubclass] string FaultingObjectDescription;

  [Description("The location of the object that triggered the fault") : Amended ToSubclass] string FaultingObjectLocation;

  [Description("The formatted message describing the reason for the fault") : Amended ToSubclass] string Reason;

  [Description("Free form descriptions of the recommended actions to take to resolve the cause of the fault.") : Amended ToSubclass] string RecommendedActions[];

  [Description("A unique identifier for the object reporting the fault.") : Amended ToSubclass] string SourceUniqueId;

};



[Description("Represent the Storage Health in the Subsystem.") : Amended ToSubclass,ClassVersion("1.0") : Amended,AMENDMENT, LOCALE("MS_409")] 

class MSFT_StorageHealth : MSFT_StorageObject

{

  [Description("Gets the settings for the current storage health.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Access denied", "The operation is not supported while the cluster is being upgraded.", "Cannot connect to the storage provider.", "The storage provider cannot connect to the storage subsystem.", "Failed to communicate with cluster health resource", "Method not supported in this subsystem.", "The name specified is invalid."} : Amended ToSubclass] uint32 GetSetting([In,Description("Name of the setting in storage health that wants to be retrieved. If omitted, all the settings are retrieved.") : Amended ToSubclass] string Name,[Out,Description("List of storage health settings.") : Amended ToSubclass] MSFT_StorageHealthSetting StorageHealthSetting[],[Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("Set a setting to the current storage health. If the setting doesn't exist, it creates it.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Access denied", "The operation is not supported while the cluster is being upgraded.", "Cannot connect to the storage provider.", "The storage provider cannot connect to the storage subsystem.", "Failed to communicate with cluster health resource", "Method not supported in this subsystem.", "You must specify a name.", "The name specified is invalid.", "You must specify a value.", "The value specified is invalid.", "The Storage Health is not online."} : Amended ToSubclass] uint32 SetSetting([In,Description("Name of the storage health setting being set.") : Amended ToSubclass] string Name,[In,Description("Value of the storage health setting being set.") : Amended ToSubclass] string Value,[Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("Removes a setting from the current storage health.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Access denied", "The operation is not supported while the cluster is being upgraded.", "Cannot connect to the storage provider.", "The storage provider cannot connect to the storage subsystem.", "Failed to communicate with cluster health resource", "Method not supported in this subsystem.", "You must specify a name.", "The name specified is invalid.", "The Storage Health is not online."} : Amended ToSubclass] uint32 RemoveSetting([In,Description("Name of the storage health setting to be removed.") : Amended ToSubclass] string Name,[Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("Get Health Report for the Target Storage Object.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Access denied", "The operation is not supported while the cluster is being upgraded.", "Cannot connect to the storage provider.", "The storage provider cannot connect to the storage subsystem.", "Failed to communicate with cluster health resource", "Method not supported in this subsystem.", "The Storage Health is not online.", "The Storage Object is not supported for report."} : Amended ToSubclass] uint32 GetReport([In,Description("Storage Object on which the health report will be collected.") : Amended ToSubclass] MSFT_StorageObject TargetObject,[In,Description("Number of reports to be collected before the the api returns.") : Amended ToSubclass] uint32 Count,[Out,Description("Instances containing the health reports on the specified target object.") : Amended ToSubclass] MSFT_StorageHealthReport Reports[],[Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("Set the storage fault domain object maintenance mode.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Object Not Found", "Currently unsafe to perform the operation", "Access denied", "The operation is not supported while the cluster is being upgraded.", "Cannot connect to the storage provider.", "The storage provider cannot connect to the storage subsystem.", "Failed to communicate with cluster health resource", "Method not supported in this subsystem.", "The Storage Health is not online."} : Amended ToSubclass] uint32 Maintenance([In,Description("Storage Fault domain on which the maintenance mode will be enabled/disabled.") : Amended ToSubclass] MSFT_StorageFaultDomain TargetObject,[In,Description("If set to TRUE, this instructs the physical disks in the storage scale unit to validate if enabling maintenance mode will be successful.") : Amended ToSubclass] boolean ValidateMaintenanceMode,[In,Description("If set to TRUE, this instructs the fault domain to enable maintenance mode.") : Amended ToSubclass] boolean EnableMaintenanceMode,[In,Description("Ignore any detached virtual disks.") : Amended ToSubclass] boolean IgnoreDetachedVirtualDisks,[In,Description("This indicates the time before stale data will be moved off of this fault domain object.") : Amended ToSubclass] uint32 Timeout,[In,Description("The model of the physical disks in the storage fault domain to put into maintenance mode.") : Amended ToSubclass] string Model,[In,Description("The manufacturer of the physical disks in the storage fault domain to be put into maintenance mode.") : Amended ToSubclass] string Manufacturer,[In,Description("Flags for validations that may be supported. Combinations of these may also be supported.") : Amended ToSubclass,Values{"None", "VirtualDisksHealthy"} : Amended ToSubclass] uint16 ValidationFlags,[Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("Removes a storage health intent on a storage object.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Access denied", "The operation is not supported while the cluster is being upgraded.", "Cannot connect to the storage provider.", "The storage provider cannot connect to the storage subsystem.", "Failed to communicate with cluster health resource", "Method not supported in this subsystem.", "You must specify a name.", "The name specified is invalid.", "The Storage Health is not online."} : Amended ToSubclass] uint32 RemoveIntent([In,Description("Storage object on which the storage health intent will be removed.") : Amended ToSubclass] MSFT_StorageObject TargetObject,[Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

};



[ClassVersion("1.0") : Amended,Description("Storage Health report generated for the current state of the MSFT_Volume.") : Amended ToSubclass,AMENDMENT, LOCALE("MS_409")] 

class MSFT_StorageHealthReport

{

  [Description("A globally unique identifier for the storage subsystem") : Amended ToSubclass] string StorageSubsystemUniqueId;

  [Description("The Report instance object UniqueId.") : Amended ToSubclass] string ReportedObjectUniqueId;

  [Description("Report Records") : Amended ToSubclass] MSFT_HealthRecord Records[];

};



[ClassVersion("1.0") : Amended,Description("This class represents the Name - Value pairs for storage health settings related to the subsystem.") : Amended ToSubclass,AMENDMENT, LOCALE("MS_409")] 

class MSFT_StorageHealthSetting

{

  [Description("Name of the storage health setting") : Amended ToSubclass] string Name;

  [Description("Value of the storage health setting.") : Amended ToSubclass] string Value;

};



[Description("Storage health status change event") : Amended ToSubclass,ClassVersion("1.0") : Amended,AMENDMENT, LOCALE("MS_409")] 

class MSFT_StorageHealthStatusChangeEvent : MSFT_StorageEvent

{

  [Description("A globally unique identifier for the storage subsystem") : Amended ToSubclass] string StorageSubsystemUniqueId;

  [Description("Denotes the previous health status of the source object.\n 0 - 'Healthy': TBD.\n1 - 'Warning': TBD.\n2 - 'Unhealthy': TBD.") : Amended ToSubclass,Values{"Healthy", "Warning", "Unhealthy", "Unknown"} : Amended ToSubclass] uint16 PreviousHealthStatus;

  [Description("Denotes the current health status of the source object.\n 0 - 'Healthy': TBD.\n1 - 'Warning': TBD.\n2 - 'Unhealthy': TBD.") : Amended ToSubclass,Values{"Healthy", "Warning", "Unhealthy", "Unknown"} : Amended ToSubclass] uint16 CurrentHealthStatus;

  [Description("A unique identifier for the source object.") : Amended ToSubclass] string SourceUniqueId;

};



[Description("Storage jobs represent long running operations on a storage subsystem. These operations can either be user-initiated through the various management interfaces defined by this MOF, or automatically by intelligent storage subsystems.") : Amended ToSubclass,ClassVersion("1.0") : Amended,AMENDMENT, LOCALE("MS_409")] 

class MSFT_StorageJob : MSFT_StorageObject

{

  [Description("A system defined name for this storage job.") : Amended ToSubclass] string Name;

  [Description("The Description property provides a textual description of the storage job operation.") : Amended ToSubclass] string Description;

  [Description("The time interval that the job has been executing or the total execution time if the storage job is complete.") : Amended ToSubclass] datetime ElapsedTime;

  [Description("If the operation that this storage job was tracking has failed, the provider will set this with an error code defined by the method that invoked the operation. If this job tracked a background task, the error code can be set to any valid Storage Management error code as defined in the value map below. If there was no error, this property must be set to 0 - 'Success'. This property should be NULL until the operation has completed.") : Amended ToSubclass] uint16 ErrorCode;

  [Description("A free-form string that contains the vendor error description.") : Amended ToSubclass] string ErrorDescription;

  [Description("The current execution state of the storage job.") : Amended ToSubclass,Values{"New", "Starting", "Running", "Suspended", "Shutting Down", "Completed", "Terminated", "Killed", "Exception", "Service", "Query Pending", "Microsoft Reserved", "Vendor Reserved"} : Amended ToSubclass] uint16 JobState;

  [Description("A free-form string that represents the status of the job. The primary status is reflected in the inherited OperationalStatus property. JobStatus provides additional, implementation-specific details.") : Amended ToSubclass] string JobStatus;

  [Description("This property indicates whether the times represented in the StartTime, TimeOfLastStateChange, and TimeSubmitted properties represent local times or UTC times. Time values are synchronized worldwide by using the enumeration value 2 - 'UTC Time'.") : Amended ToSubclass,Values{"Local Time", "UTC Time"} : Amended ToSubclass] uint16 LocalOrUtcTime;

  [Description("Indicates the current statuses of the element.") : Amended ToSubclass,Values{"Unknown", "Other", "OK", "Degraded", "Stressed", "Predictive Failure", "Error", "Non-Recoverable Error", "Starting", "Stopping", "Stopped", "In Service", "No Contact", "Lost Communication", "Aborted", "Dormant", "Supporting Entity in Error", "Completed", "Power Mode", "Relocating", "Microsoft Reserved"} : Amended ToSubclass] uint16 OperationalStatus[];

  [Description("Strings describing the various OperationalStatus array values. For example, if \"Stopping\" is the value assigned to OperationalStatus, this property may contain an explanation as to why an object is being stopped. Note that entries in this array are correlated with those at the same array index in OperationalStatus.") : Amended ToSubclass] string StatusDescriptions[];

  [Description("The percentage of the job that has completed at the time that this value is requested.") : Amended ToSubclass,Units("Percent") : Amended ToSubclass] uint16 PercentComplete;

  [Description("Indicates the number of bytes processed by this job so far.") : Amended ToSubclass,Units("Bytes") : Amended ToSubclass] uint64 BytesProcessed;

  [Description("Indicates the total number of bytes being processed by this job.") : Amended ToSubclass,Units("Bytes") : Amended ToSubclass] uint64 BytesTotal;

  [Description("The time that the job was actually started.") : Amended ToSubclass] datetime StartTime;

  [Description("The amount of time that the Job is retained after it has finished executing, regardless of whether it failed during execution. The job must remain in existence for some period of time regardless of the value of the DeleteOnCompletion property. \n") : Amended ToSubclass] datetime TimeBeforeRemoval;

  [Description("The date or time when the state of the job last changed. If the state of the job has not changed and this property is populated, it must be set to a 0 interval value. If a state change was requested, but was rejected or not yet processed, the property must not be updated.") : Amended ToSubclass] datetime TimeOfLastStateChange;

  [Description("The time that the job was submitted to execute. A value of all zeroes indicates that the owning element is not capable of reporting a date and time.") : Amended ToSubclass] datetime TimeSubmitted;

  [Description("If TRUE, the storage job will be automatically deleted after a short time interval.") : Amended ToSubclass] boolean DeleteOnCompletion;

  [Description("If TRUE, this storage job represents an automated background task initiated by the storage subsystem. For all user / management initiated operations, this value should be set to FALSE.") : Amended ToSubclass] boolean IsBackgroundTask;

  [Description("Describes the recovery action to be taken for an unsuccessfully run job. The possible values are: \n0 - 'Unknown' meaning it is unknown as to what recovery action to take \n1 - 'Other' indicating that the recovery action will be specified in the OtherRecoveryAction property \n2 - 'Do Not Continue' meaning stop the execution of the job and appropriately update its status \n3 - 'Continue With Next Job' meaning continue with the next job in the queue \n4 - 'Re-run Job' indicating that the job should be re-run \n") : Amended ToSubclass,Values{"Unknown", "Other", "Do Not Continue", "Continue With Next Job", "Re-run Job"} : Amended ToSubclass] uint16 RecoveryAction;

  [Description("Denotes a vendor-specific recovery action to be taken for an unsuccessfully run job. This value should only be set if RecoveryAction is set to 1 - 'Other'.") : Amended ToSubclass] string OtherRecoveryAction;

  [Description("Requests that the state of the job be changed to the value specified in the RequestedState parameter. Invoking the RequestStateChange method multiple times could result in earlier requests being overwritten or lost.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Object Not Found", "State transition started", "Invalid state transition", "Access denied", "There are not enough resources to complete the operation.", "Cannot connect to the storage provider.", "The storage provider cannot connect to the storage subsystem."} : Amended ToSubclass] uint32 RequestStateChange([In,Description("RequestStateChange changes the state of a job. The possible values are as follows: \n2 - 'Start' changes the state to 'Running'. \n3 - 'Suspend' stops the job temporarily. The intention is to subsequently restart the job with a second call to RequestStateChange requesting 1 - 'Start'. It might be possible to enter the 'Service' state while suspended. (This is job-specific.) \n4 - 'Terminate' stops the job cleanly, saving data, preserving the state, and shutting down all underlying processes in an orderly manner. \n5 - 'Kill' terminates the job immediately with no requirement to save data or preserve the state. \n6 - 'Service' puts the job into a vendor-specific service state. It might be possible to restart the job.") : Amended ToSubclass,Values{"Start", "Suspend", "Terminate", "Kill", "Service", "DMTF Reserved", "Vendor Reserved"} : Amended ToSubclass] uint16 RequestedState,[Out] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("This method retrieves the extended status information for an unsuccessful job.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "No extended status object was found for the storage job."} : Amended ToSubclass] uint32 GetExtendedStatus([Out] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("This method retrieves various messages returned by a job.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter"} : Amended ToSubclass] uint32 GetMessages([Out,Values{"Warning", "Verbose", "Debug"} : Amended ToSubclass] uint16 Channels[],[Out] string Messages[]);

  [Description("This method retrieves various messages returned by a job.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter"} : Amended ToSubclass] uint32 GetOutParameters([Out] MSFT_StorageJobOutParams OutParameters);

};



[ClassVersion("1.0") : Amended,AMENDMENT, LOCALE("MS_409")] 

class MSFT_StorageJobOutParams

{

};



[ClassVersion("1.0") : Amended,Description("Association between a StorageJob and objects affected by the job's operation. Instances of this association should only exist once the storage job has been completed, and should remain for a period of time (recommended 24-hours) after.") : Amended ToSubclass,AMENDMENT, LOCALE("MS_409")] 

class MSFT_StorageJobToAffectedStorageObject

{

};



[Description("Storage modification events are used when the underlying state of an object has changed. Not all properties should be tracked (for example AllocatedSize may change so frequently that sending events would be impractical). At a minimum, an event should be sent any time an objects HealthStatus or OperationalStatus properties change.") : Amended ToSubclass,ClassVersion("1.0") : Amended,AMENDMENT, LOCALE("MS_409")] 

class MSFT_StorageModificationEvent : MSFT_StorageEvent

{

};



[Description("Represents a storage node in a cluster.") : Amended ToSubclass,ClassVersion("1.0") : Amended,AMENDMENT, LOCALE("MS_409")] 

class MSFT_StorageNode : MSFT_StorageObject

{

  [Description("Name is a human-readable string used to identify a storage node.") : Amended ToSubclass] string Name;

  [Description("NameFormat describes the format of the Name identifier.") : Amended ToSubclass,Values{"Other", "IP", "Dial", "HID", "NWA", "HWA", "X25", "ISDN", "IPX", "DCC", "ICD", "E.164", "SNA", "OID/OSI", "WWN", "NAA"} : Amended ToSubclass] uint16 NameFormat;

  [Description("This field is an array of custom identifier for the node. If this field is set, the OtherIdentifyingInfoDescription field must also be set.") : Amended ToSubclass] string OtherIdentifyingInfo[];

  [Description("An array of string description of the format used in the custom identifiers defined in the OtherIdentifyingInfo field. There must be a 1:1 mapping between this array and OtherIdentifyingInfo.") : Amended ToSubclass] string OtherIdentifyingInfoDescription[];

  [Description("Indicates the current status of the node.") : Amended ToSubclass,Values{"Unknown", "Up", "Down", "Joining", "Paused"} : Amended ToSubclass] uint16 OperationalStatus;

  [Description("This field is a string representation of the node's firmware version.") : Amended ToSubclass] string FirmwareVersion;

};



[ClassVersion("1.0") : Amended,Description("Association between StorageNode and Disk.") : Amended ToSubclass,AMENDMENT, LOCALE("MS_409")] 

class MSFT_StorageNodeToDisk

{

  [Description("The operating system's number for the disk. Disk 0 is typically the boot device. Disk numbers may not necessarily remain the same across reboots.") : Amended ToSubclass] uint32 DiskNumber;

  [Description("An array of values that denote the current operational status of the volume.\n0 - 'Unknown': The operational status is unknown.\n1 - 'Other': A vendor-specific OperationalStatus has been specified by setting the OtherOperationalStatusDescription property.\n2 - 'OK': The disk is responding to commands and is in a normal operating state.\n3 - 'Degraded': The disk is responding to commands, but is not running in an optimal operating state.\n4 - 'Stressed': The disk is functioning, but needs attention. For example, the disk might be overloaded or overheated.\n5 - 'Predictive Failure': The disk is functioning, but a failure is likely to occur in the near future.\n6 - 'Error': An error has occurred.\n7 - 'Non-Recoverable Error': A non-recoverable error has occurred.\n8 - 'Starting': The disk is in the process of starting.\n9 - 'Stopping': The disk is in the process of stopping.\n10 - 'Stopped': The disk was stopped or shut down in a clean and orderly fashion.\n11 - 'In Service': The disk is being configured, maintained, cleaned, or otherwise administered.\n12 - 'No Contact': The storage provider has knowledge of the disk, but has never been able to establish communication with it.\n13 - 'Lost Communication': The storage provider has knowledge of the disk and has contacted it successfully in the past, but the disk is currently unreachable.\n14 - 'Aborted': Similar to Stopped, except that the disk stopped abruptly and may require configuration or maintenance.\n15 - 'Dormant': The disk is reachable, but it is inactive.\n16 - 'Supporting Entity in Error': This status value does not necessarily indicate trouble with the disk, but it does indicate that another device or connection that the disk depends on may need attention.\n17 - 'Completed': The disk has completed an operation. This status value should be combined with OK, Error, or Degraded, depending on the outcome of the operation.\n0xD010 - 'Online': In Windows-based storage subsystems, this indicates that the object is online.\n0xD011 - 'Not Ready': In Windows-based storage subsystems, this indicates that the object is not ready.\n0xD012 - 'No Media': In Windows-based storage subsystems, this indicates that the object has no media present.\n0xD013 - 'Offline': In Windows-based storage subsystems, this indicates that the object is offline.\n0xD014 - 'Failed': In Windows-based storage subsystems, this indicates that the object is in a failed state.") : Amended ToSubclass,Values{"Unknown", "Other", "OK", "Degraded", "Stressed", "Predictive Failure", "Error", "Non-Recoverable Error", "Starting", "Stopping", "Stopped", "In Service", "No Contact", "Lost Communication", "Aborted", "Dormant", "Supporting Entity in Error", "Completed", "Vendor Specific", "Online", "Not Ready", "No Media", "Offline", "Failed"} : Amended ToSubclass] uint16 OperationalStatus[];

  [Description("The health status of the Volume.\n0 - 'Healthy': The disk is functioning normally.\n1 - 'Warning': The disk is still functioning, but has detected errors or issues that require administrator intervention.\n2 - 'Unhealthy': The volume is not functioning, due to errors or failures. The volume needs immediate attention from an administrator.") : Amended ToSubclass,Values{"Healthy", "Warning", "Unhealthy"} : Amended ToSubclass] uint16 HealthStatus;

  [Description("If IsOffline is TRUE, this property informs the user of the specific reason for the disk being offline. \n1 - 'Policy': The user requested the disk to be offline. \n2 - 'Redundant Path': The disk is used for multi-path I/O. \n3 - 'Snapshot': The disk is a snapshot disk. \n4 - 'Collision': There was a signature or identifier collision with another disk. \n5 - 'Resource Exhaustion': There were insufficient resources to bring the disk online. \n6 - 'Critical Write Failures': There were critical write failures on the disk. \n7 - 'Data Integrity Scan Required': A data integrity scan is required.") : Amended ToSubclass,Values{"Policy", "Redundant Path", "Snapshot", "Collision", "Resource Exhaustion", "Critical Write Failures", "Data Integrity Scan Required"} : Amended ToSubclass] uint16 OfflineReason;

};



[ClassVersion("1.0") : Amended,Description("Association between StorageNode and PhysicalDisk.") : Amended ToSubclass,AMENDMENT, LOCALE("MS_409")] 

class MSFT_StorageNodeToPhysicalDisk

{

  [Description("Denotes the operational status of the PhysicalDisk on this StorageNode.") : Amended ToSubclass,Values{"Unknown", "Other", "OK", "Degraded", "Stressed", "Predictive Failure", "Error", "Non-Recoverable Error", "Starting", "Stopping", "Stopped", "In Service", "No Contact", "Lost Communication", "Aborted", "Dormant", "Supporting Entity in Error", "Completed", "Power Mode", "Relocating", "Microsoft Reserved", "Failed Media", "Split", "Stale Metadata", "IO Error", "Unrecognized Metadata", "Removing from pool", "In Maintenance Mode", "Updating firmware", "Device Hardware Error", "Not Usable", "Transient Error", "Starting Maintenance Mode", "Stopping Maintenance Mode", "Threshold Exceeded", "Abnormal Latency", "Microsoft Reserved"} : Amended ToSubclass] uint16 OperationalStatus[];

  [Description("Denotes the health status of the PhysicalDisk on this StorageNode.") : Amended ToSubclass,Values{"Healthy", "Warning", "Unhealthy", "Unknown"} : Amended ToSubclass] uint16 HealthStatus;

  [Description("The operating system's number for the disk on this StorageNode. Disk 0 is typically the boot device. Disk numbers may not necessarily remain the same across reboot, and are not necessarily the same on different nodes.") : Amended ToSubclass] uint32 DiskNumber;

  [Description("Indicates whether the physical disk is physically connected to this storage node.") : Amended ToSubclass] boolean IsPhysicallyConnected;

  [Description("Indicates whether the physical disk uses MPIO.") : Amended ToSubclass] boolean IsMpioEnabled;

  [Description("The MPIO load balance policy being used by the disk.") : Amended ToSubclass,Values{"Unknown", "Fail Over", "Round Robin", "Round Robin with Subset", "Least Queue Depth", "Weighted Paths", "Least Blocks", "Vendor Specific"} : Amended ToSubclass] uint16 LoadBalancePolicy;

  [Description("Collection of MPIO path IDs, reported by the MPIO DSM, when applicable.") : Amended ToSubclass] string PathId[];

  [Description("The current state of MPIO paths between the node and physical disk.") : Amended ToSubclass,Values{"Unavailable", "Active/Unoptimized", "Standby", "Active/Optimized"} : Amended ToSubclass] uint16 PathState[];

};



[ClassVersion("1.0") : Amended,Description("Association between StorageNode and StorageEnclosure") : Amended ToSubclass,AMENDMENT, LOCALE("MS_409")] 

class MSFT_StorageNodeToStorageEnclosure

{

  [Description("The device number for the enclosure on this storage node.") : Amended ToSubclass] uint32 EnclosureNumber;

  [Description("Indicates whether the storage enclosure is physically connected to this storage node.") : Amended ToSubclass] boolean IsPhysicallyConnected;

  [Description("Denotes the current health status of the enclosure.") : Amended ToSubclass,Values{"Healthy", "Warning", "Unhealthy", "Unknown"} : Amended ToSubclass] uint16 HealthStatus;

  [Description("An array containing the operational status of each slot of the enclosure. \n0 - 'Unknown' \n2 - 'OK': The element is present and working with no issues detected. \n3 - 'Degraded': The element detected one or more non-critical issues. \n6 - 'Error': The element detected one or more critical issues. \n7 - 'Non-Recoverable Error': The element detected one or more non-recoverable issues. \n0xD009 - 'Not Installed': The element is not present. \n0xD00A - 'Off': The element has not been turned on. \n0xD00B - 'No Access Allowed': No access is allowed to the element. \n0xD00C - 'Not Reported' ") : Amended ToSubclass,Values{"Unknown", "OK", "Degraded", "Error", "Non-Recoverable Error", "Not Installed", "Off", "No Access Allowed", "Not Reported"} : Amended ToSubclass] uint16 SlotOperationalStatus[];

  [Description("An array containing the operational status of each power supply of the enclosure. \n0 - 'Unknown' \n2 - 'OK': The element is present and working with no issues detected. \n3 - 'Degraded': The element detected one or more non-critical issues. \n6 - 'Error': The element detected one or more critical issues. \n7 - 'Non-Recoverable Error': The element detected one or more non-recoverable issues. \n0xD009 - 'Not Installed': The element is not present. \n0xD00A - 'Off': The element has not been turned on. \n0xD00B - 'No Access Allowed': No access is allowed to the element. \n0xD00C - 'Not Reported' ") : Amended ToSubclass,Values{"Unknown", "OK", "Degraded", "Error", "Non-Recoverable Error", "Not Installed", "Off", "No Access Allowed", "Not Reported"} : Amended ToSubclass] uint16 PowerSupplyOperationalStatus[];

  [Description("An array containing the operational status of each fan of the enclosure. \n0 - 'Unknown' \n2 - 'OK': The element is present and working with no issues detected. \n3 - 'Degraded': The element detected one or more non-critical issues. \n6 - 'Error': The element detected one or more critical issues. \n7 - 'Non-Recoverable Error': The element detected one or more non-recoverable issues. \n0xD009 - 'Not Installed': The element is not present. \n0xD00A - 'Off': The element has not been turned on. \n0xD00B - 'No Access Allowed': No access is allowed to the element. \n0xD00C - 'Not Reported' ") : Amended ToSubclass,Values{"Unknown", "OK", "Degraded", "Error", "Non-Recoverable Error", "Not Installed", "Off", "No Access Allowed", "Not Reported"} : Amended ToSubclass] uint16 FanOperationalStatus[];

  [Description("An array containing the operational status of each temperature sensor of the enclosure. \n0 - 'Unknown' \n2 - 'OK': The element is present and working with no issues detected. \n3 - 'Degraded': The element detected one or more non-critical issues. \n6 - 'Error': The element detected one or more critical issues. \n7 - 'Non-Recoverable Error': The element detected one or more non-recoverable issues. \n0xD009 - 'Not Installed': The element is not present. \n0xD00A - 'Off': The element has not been turned on. \n0xD00B - 'No Access Allowed': No access is allowed to the element. \n0xD00C - 'Not Reported' ") : Amended ToSubclass,Values{"Unknown", "OK", "Degraded", "Error", "Non-Recoverable Error", "Not Installed", "Off", "No Access Allowed", "Not Reported"} : Amended ToSubclass] uint16 TemperatureSensorOperationalStatus[];

  [Description("An array containing the operational status of each voltage sensor of the enclosure. \n0 - 'Unknown' \n2 - 'OK': The element is present and working with no issues detected. \n3 - 'Degraded': The element detected one or more non-critical issues. \n6 - 'Error': The element detected one or more critical issues. \n7 - 'Non-Recoverable Error': The element detected one or more non-recoverable issues. \n0xD009 - 'Not Installed': The element is not present. \n0xD00A - 'Off': The element has not been turned on. \n0xD00B - 'No Access Allowed': No access is allowed to the element. \n0xD00C - 'Not Reported' ") : Amended ToSubclass,Values{"Unknown", "OK", "Degraded", "Error", "Non-Recoverable Error", "Not Installed", "Off", "No Access Allowed", "Not Reported"} : Amended ToSubclass] uint16 VoltageSensorOperationalStatus[];

  [Description("An array containing the operational status of each current sensor of the enclosure. \n0 - 'Unknown' \n2 - 'OK': The element is present and working with no issues detected. \n3 - 'Degraded': The element detected one or more non-critical issues. \n6 - 'Error': The element detected one or more critical issues. \n7 - 'Non-Recoverable Error': The element detected one or more non-recoverable issues. \n0xD009 - 'Not Installed': The element is not present. \n0xD00A - 'Off': The element has not been turned on. \n0xD00B - 'No Access Allowed': No access is allowed to the element. \n0xD00C - 'Not Reported' ") : Amended ToSubclass,Values{"Unknown", "OK", "Degraded", "Error", "Non-Recoverable Error", "Not Installed", "Off", "No Access Allowed", "Not Reported"} : Amended ToSubclass] uint16 CurrentSensorOperationalStatus[];

  [Description("An array containing the operational status of each controller of the enclosure. \n0 - 'Unknown' \n2 - 'OK': The element is present and working with no issues detected. \n3 - 'Degraded': The element detected one or more non-critical issues. \n6 - 'Error': The element detected one or more critical issues. \n7 - 'Non-Recoverable Error': The element detected one or more non-recoverable issues. \n0xD009 - 'Not Installed': The element is not present. \n0xD00A - 'Off': The element has not been turned on. \n0xD00B - 'No Access Allowed': No access is allowed to the element. \n0xD00C - 'Not Reported' ") : Amended ToSubclass,Values{"Unknown", "OK", "Degraded", "Error", "Non-Recoverable Error", "Not Installed", "Off", "No Access Allowed", "Not Reported"} : Amended ToSubclass] uint16 IOControllerOperationalStatus[];

};



[ClassVersion("1.0") : Amended,Description("Association between StorageNode and StoragePool.") : Amended ToSubclass,AMENDMENT, LOCALE("MS_409")] 

class MSFT_StorageNodeToStoragePool

{

};



[ClassVersion("1.0") : Amended,Description("Association between StorageNode and VirtualDisk.") : Amended ToSubclass,AMENDMENT, LOCALE("MS_409")] 

class MSFT_StorageNodeToVirtualDisk

{

};



[ClassVersion("1.0") : Amended,Description("Association between StorageNode and Volume.") : Amended ToSubclass,AMENDMENT, LOCALE("MS_409")] 

class MSFT_StorageNodeToVolume

{

};



[Description("Represents a logical grouping of physical disks that may be used to create virtual disks. These virtual disks can be created with different characteristics and levels of resiliency based on the number of available physical disks and the capabilities of the storage pool.") : Amended ToSubclass,ClassVersion("1.0") : Amended,AMENDMENT, LOCALE("MS_409")] 

class MSFT_StoragePool : MSFT_StorageObject

{

  [Description("A user-friendly string representing the name of the storage pool. Friendly name can be set using the SetFriendlyName method.") : Amended ToSubclass] string FriendlyName;

  [Description("Name is a semi-unique (scoped to the owning storage subsystem), human-readable string used to identify a storage pool.") : Amended ToSubclass] string Name;

  [Description("Denotes the intended usage of the storage pool.") : Amended ToSubclass,Values{"Unknown", "Other", "Unrestricted", "Reserved for ComputerSystem (the block server)", "Reserved as a Delta Replica Container", "Reserved for Migration Services", "Reserved for Local Replication Services", "Reserved for Remote Replication Services", "Reserved for Sparing"} : Amended ToSubclass] uint16 Usage;

  [Description("If Usage is set to 1 - 'Other', this field contains the string representation of the vendor defined usage for the storage pool. This property must be NULL if Usage is not set to 1 - 'Other'.") : Amended ToSubclass] string OtherUsageDescription;

  [Description("If this field is set to TRUE, the storage pool is primordial. A primordial pool, also known as the 'available storage' pool is where storage capacity is drawn and returned in the creation and deletion of concrete storage pools. Primordial pools cannot be created or deleted. \nIf this field is set to FALSE, the storage pool is a concrete pool. These pools are subject to all of the management operations defined on the storage pool class. This includes creation, deletion, creation of virtual disks, etc.") : Amended ToSubclass] boolean IsPrimordial;

  [Description("Denotes the current health status of the storage pool. Health of a storage pool is derived from the health of the backing physical disks, and whether or not the storage pool can maintain the required levels of resiliency.\n 0 - 'Healthy': All physical disks are present and in a healthy state. \n1 - 'Warning': The majority of physical disks are healthy, but one or more may be failing I/O requests. \n2 - 'Unhealthy': The majority of physical disks are unhealthy or in a failed state, and the pool no longer has data integrity.") : Amended ToSubclass,Values{"Healthy", "Warning", "Unhealthy", "Unknown"} : Amended ToSubclass] uint16 HealthStatus;

  [Description("Indicates the current operating conditions of the storage pool. Unlike HealthStatus, this field indicates the status of hardware, software, and infrastructure issues related to this storage pool, and can contain multiple values. Various operational statuses are defined. Many of the enumeration's values are self-explanatory. However, a few are not and are described here in more detail. \n4 - 'Stressed': indicates that the storage pool is functioning, but needs attention. Examples of 'Stressed' states are overload, overheated, and so on. \n5 - 'Predictive Failure': indicates that the storage pool is functioning nominally but predicting a failure in the near future. \n11 - 'In Service': describes a storage pool being configured, maintained, or otherwise administered. \n12 - 'No Contact': indicates that the storage provider has knowledge of this storage pool, but has never been able to establish communications with it. \n13 - 'Lost Communication': indicates that the storage pool is known to exist and has been contacted successfully in the past, but is currently unreachable. \n10 - 'Stopped' and 14 - 'Aborted' are similar, although the former implies a clean and orderly stop, while the latter implies an abrupt stop where the state and configuration of the storage pool might need to be updated. \n15 - 'Dormant': indicates that the storage pool is inactive. \n16 - 'Supporting Entity in Error': indicates that this storage pool might be OK, but that another element, on which it is dependent, is in error. \n") : Amended ToSubclass,Values{"Unknown", "Other", "OK", "Degraded", "Stressed", "Predictive Failure", "Error", "Non-Recoverable Error", "Starting", "Stopping", "Stopped", "In Service", "No Contact", "Lost Communication", "Aborted", "Dormant", "Supporting Entity in Error", "Completed", "Power Mode", "Relocating", "Microsoft Reserved", "Read-only", "Incomplete", "Microsoft Reserved"} : Amended ToSubclass] uint16 OperationalStatus[];

  [Description("A string representation of the vendor defined operational status. This field should only be set if the OperationalStatus array contains 1 - 'Other'.") : Amended ToSubclass] string OtherOperationalStatusDescription;

  [Description("Indicates the capacity of the storage pool. If the pool is primordial, this is the sum of all the healthy physical disk sizes. If the pool is concrete, this is the sum of all associated physical disks (except hot-spares, and including failed drives).") : Amended ToSubclass,Units("Bytes") : Amended ToSubclass] uint64 Size;

  [Description("Indicates the total sum of all the capacity used by this storage pool. If the pool is primordial, this will be the sum of all capacity currently allocated to concrete storage pools. If the pool is concrete, this value should be the sum of all capacity currently allocated to virtual disks and other pool metadata.") : Amended ToSubclass,Units("Bytes") : Amended ToSubclass] uint64 AllocatedSize;

  [Description("This field indicates the logical sector size of the storage pool, in bytes. This value is derived from the backing physical disks, as well as the preference specified at the time this storage pool was created.") : Amended ToSubclass,Units("Bytes") : Amended ToSubclass] uint64 LogicalSectorSize;

  [Description("This field indicates the physical sector size of the storage pool, in bytes. This value is derived from the backing physical disks for this storage pool.") : Amended ToSubclass,Units("Bytes") : Amended ToSubclass] uint64 PhysicalSectorSize;

  [Description("Indicates the provisioning scheme to use when creating new virtual disks on this storage pool. \n0 - 'Unknown': May mean that this information is unavailable, or the storage pool uses a proprietary method of allocation.\n1 - 'Thin': Storage for the virtual disk is allocated on-demand. \n2 - 'Fixed': Storage for the virtual disk is allocated at the time of virtual disk creation.") : Amended ToSubclass,Values{"Unknown", "Thin", "Fixed"} : Amended ToSubclass] uint16 ProvisioningTypeDefault;

  [Description("Denotes the provisioning schemes that this storage pool supports.") : Amended ToSubclass,Values{"Unknown", "Thin", "Fixed"} : Amended ToSubclass] uint16 SupportedProvisioningTypes[];

  [Description("Indicates the default media type to use when creating new virtual disks on this storage pool.") : Amended ToSubclass,Values{"Unspecified", "HDD", "SSD", "SCM"} : Amended ToSubclass] uint16 MediaTypeDefault;

  [Description("Indicates the default resiliency setting used for virtual disk creation. This default can be overridden at the time of virtual disk creation. This property's value should correspond to the resiliency setting's Name field.") : Amended ToSubclass] string ResiliencySettingNameDefault;

  [Description("Indicates whether or not the storage pool's configuration is read-only. If TRUE, the storage pool will not allow configuration changes to itself or any of its virtual and physical disks. Note that the data on the virtual disk may still be writable.") : Amended ToSubclass] boolean IsReadOnly;

  [Description("Denotes the reason why the storage pool is read-only. \n1 - 'None': The pool is not read-only. \n2 - 'By Policy': The administrator has either requested the pool to be read-only or has enacted a policy on the system that requires the pool to be read-only. \n3 - 'Majority Disks Unhealthy': The majority of the supporting physical disks are in an unhealthy state that has forced the storage pool into a read-only state.") : Amended ToSubclass,Values{"Unknown", "None", "By Policy", "Majority Disks Unhealthy", "Starting"} : Amended ToSubclass] uint16 ReadOnlyReason;

  [Description("Indicates whether or not the storage pool is used in a clustered environment.") : Amended ToSubclass] boolean IsClustered;

  [Description("If TRUE, this storage pool supports data deduplication.") : Amended ToSubclass] boolean SupportsDeduplication;

  [Description("Percentages at which an alert should be generated") : Amended ToSubclass,Units("Percentage") : Amended ToSubclass] uint16 ThinProvisioningAlertThresholds[];

  [Description("If TRUE, the storage pool should clear (zero out) physical disks that are removed from the pool.") : Amended ToSubclass] boolean ClearOnDeallocate;

  [Description("This property indicates whether the disks comprising this pool are able to tolerate power loss without data loss, e.g. automatically flush volatile buffers to non-volatile media after external power is disconnected.") : Amended ToSubclass] boolean IsPowerProtected;

  [Description("This property indicates how the operating system will proceed with repairing of virtual disks for this storage pool.\n2 - 'Sequential': repair will process one allocation slab at a time. This will result in longer repair times, but small impact on the I/O load.\n3 - 'Parallel': repair will process as many allocation slabs as it can in parallel. This will result in the shortest repair time, but will have significant impact on I/O load.\n") : Amended ToSubclass,Values{"Sequential", "Parallel"} : Amended ToSubclass] uint16 RepairPolicy;

  [Description("Determines the default allocation behavior for virtual disks created in this pool. Enclosure aware virtual disks will intelligently pick the physical disks to use for their redundancy. If TRUE, the storage subsystem will use physical disks from different enclosures to balance the fault tolerance between two (or more) physical enclosures.") : Amended ToSubclass] boolean EnclosureAwareDefault;

  [Description("Determines the default allocation behavior for virtual disks created in this pool. Fault domain aware virtual disks will intelligently pick the physical disks to use for their redundancy to balance the fault tolerance between two (or more) fault domain units of the specified type.") : Amended ToSubclass,Values{"PhysicalDisk", "StorageEnclosure", "StorageScaleUnit", "StorageChassis", "StorageRack"} : Amended ToSubclass] uint16 FaultDomainAwarenessDefault;

  [Description("If TRUE, the storage subsystem will automatically retire missing physical disks in this storage pool and replace them with hot-spares or other available physical disks (in the storage pool).") : Amended ToSubclass,Values{"Auto", "Always", "Never"} : Amended ToSubclass] uint16 RetireMissingPhysicalDisks;

  [Description("Denotes the version of this storage pool.") : Amended ToSubclass,Values{"Windows Server 2012", "Windows Server 2012 R2 Preview", "Windows Server 2012 R2", "Pool Metadata Version"} : Amended ToSubclass] uint16 Version;

  [Description("Default size of write cache for virtual disk creation") : Amended ToSubclass] uint64 WriteCacheSizeDefault;

  [Description("Minimum size of write cache for virtual disk creation") : Amended ToSubclass] uint64 WriteCacheSizeMin;

  [Description("Maximum size of write cache for virtual disk creation") : Amended ToSubclass] uint64 WriteCacheSizeMax;

  [Description("This method creates a virtual disk using the resources of the storage pool. This method is available only when the SupportsVirtualDiskCreation property on the storage subsystem is set to TRUE. If it is set to FALSE, this method will fail with MI_RESULT_NOT_SUPPORTED. This method is also not supported for primordial pools. \nCreating tiered virtual disks is available only when the SupportsStorageTieredVirtualDiskCreation property on the storage subsystem is set to TRUE. If it is set to FALSE, this method will fail with MI_RESULT_NOT_SUPPORTED. \nCreateVirtualDisk requires only FriendlyName and Size to be specified. Sizes can be specified explicitly through the Size parameter, or you can use the maximum available space from the storage pool by specifying the UseMaximumSize parameter. Both FriendlyName and Size are treated as goals rather than hard requirements. For example, not all SMI-S based arrays support custom friendly names; however, the virtual disk creation will still succeed. If the size specified is not achieved, the actual size used for the virtual disk will be returned in the out parameter structure. \nThe usage of this virtual disk can be set using the Usage and OtherUsageDescription parameters. If a value for OtherUsageDescription is given, Usage must be set to 1 - 'Other', otherwise an error will be returned. \nBy default, the resiliency setting applied to this virtual disk will be whatever is specified in the storage pool's ResiliencySettingNameDefault property. This can be overridden using the ResiliencySettingName parameter. Note that the name given here must correspond to a resiliency setting associated with this storage pool. Any other value will result in an error. \nIndividual settings of the resiliency setting can be overridden using the NumberOfDataCopies, PhysicalDiskRedundancy, NumberOfColumns, and Interleave parameters. If these parameters are not used, the defaults from the resiliency setting will be used. These overrides will not persist back to the particular resiliency setting instance; however some storage providers may choose to create a new resiliency setting instance to capture this new configuration. If any of the goals specified in the override parameters are out of range, or are not supported by the storage pool, an error will be returned. \nThe provisioning policy for the virtual disk is determined in a similar way to the resiliency setting. If no preference is specified in the ProvisioningType parameter, the policy is determined by the storage pool's ProvisioningTypeDefault property. If the ProvisioningType parameter is specified, the default is ignored and the value specified will be used instead. \nAllocation can be further controlled by the PhysicalDisksToUse parameter. There may be certain scenarios where a storage administrator wants to manually choose which physical disks should back the virtual disk. When this parameter is specified, data for the virtual disk will only be stored on the physical disks in this array and not on any others.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Object Not Found", "Method Parameters Checked - Job Started", "Size Not Supported", "Not enough available capacity", "Access denied", "There are not enough resources to complete the operation.", "An unexpected I/O error has occurred", "You must specify a size by using either the Size or the UseMaximumSize parameter. You can specify only one of these parameters at a time.", "The request failed due to a fatal device hardware error.", "The operation is not supported on cluster.", "You must specify the enclosure awareness (either the IsEnclosureAware or EnclosureAwareDefault parameter) or the fault domain awareness (either the FaultDomainAwareness or FaultDomainAwarenessDefault parameter), but not both.", "The provider does not support a value for fault domain awareness other than physical disk or storage enclosure.", "This combination of parameters is unsupported.", "Cannot connect to the storage provider.", "The storage provider cannot connect to the storage subsystem.", "Failover clustering could not be enabled for this storage object.", "Failover clustering was enabled for the storage object but it failed to come online.", "This subsystem does not support creation of virtual disks with the specified provisioning type.", "This operation is not supported on primordial storage pools.", "The storage pool is reserved for special usage only.", "The specified resiliency setting is not supported by this storage pool.", "There are not enough eligible physical disks in the storage pool to create the specified virtual disk configuration.", "The storage pool could not complete the operation because its health or operational status does not permit it.", "The storage pool could not complete the operation because its configuration is read-only.", "You must specify the size info (either the Size or UseMaximumSize parameter) or the tier info (the StorageTiers and StorageTierSizes parameters), but not both size info and tier info.", "This storage pool does not support the creation of tiered virtual disks with custom allocation unit sizes.", "No resiliency setting with that name exists.", "The value for NoSinglePointOfFailure is not supported.", "The value for PhysicalDiskRedundancy is outside of the supported range of values.", "The value for NumberOfDataCopies is outside of the supported range of values.", "The value for ParityLayout is outside of the supported range of values.", "The value for Interleave is outside of the supported range of values.", "The value for NumberOfColumns is outside of the supported range of values.", "The value for NumberOfGroups is outside of the supported range of values.", "The value for WriteCacheSize is outside of the supported range of values.", "The value for ReadCacheSize is outside of the supported range of values.", "One or more physical disks are not supported by this operation.", "Not enough physical disks were specified to successfully complete the operation.", "One or more physical disks are not connected to the nodes on which the pool or space is being created.", "The specified ProvisioningType is not supported.", "The value for AllocationUnitSize must be a multiple of 256 MB.", "The specified FaultDomainAwareness, ColumnIsolation, or both are not valid."} : Amended ToSubclass] uint32 CreateVirtualDisk([In,Description("This parameter allows the user to specify the FriendlyName at the time of the virtual disk creation. FriendlyNames are expected to be descriptive, however they are not required to be unique. Note that some storage subsystems do not allow setting a friendly name during virtual disk creation. If a subsystem doesn't support this, virtual disk creation should still succeed, however the disk may have a different name assigned to it.") : Amended ToSubclass] string FriendlyName,[In,Description("Indicates the size for the virtual disk. Note that some storage subsystems will round the size up or down to a multiple of its allocation unit size. This parameter cannot be used if UseMaximumSize is set to TRUE.") : Amended ToSubclass,Units("Bytes") : Amended ToSubclass] uint64 Size,[In,Description("UseMaximumSize instructs the storage array to create the largest possible virtual disk given the available resources of this storage pool. This parameter cannot be used if the Size parameter is set.") : Amended ToSubclass] boolean UseMaximumSize,[In,Description("Denotes the provisioning type of the virtual disk. \n1 - 'Thin': The storage for the virtual disk is allocated on-demand. \n2 - 'Fixed': The storage for the virtual disk is allocated up front.") : Amended ToSubclass,Values{"Thin", "Fixed"} : Amended ToSubclass] uint16 ProvisioningType,[In,Description("Specifies the allocation unit size to use when creating the virtual disk.") : Amended ToSubclass] uint64 AllocationUnitSize,[In,Description("Specifies the media type to use when creating the virtual disk.") : Amended ToSubclass,Values{"HDD", "SSD", "SCM"} : Amended ToSubclass] uint16 MediaType,[In,Description("This parameter specifies the resiliency setting to use as a template for this virtual disk. This property's value should correspond with the particular resiliency setting instance's Name property. Only resiliency settings associated with this storage pool may be used.") : Amended ToSubclass] string ResiliencySettingName,[In,Description("Denotes the intended usage of the virtual disk") : Amended ToSubclass,Values{"Other", "Unrestricted", "Reserved for ComputerSystem (the block server)", "Reserved by Replication Services", "Reserved by Migration Services", "Local Replica Source", "Remote Replica Source", "Local Replica Target", "Remote Replica Target", "Local Replica Source or Target", "Remote Replica Source or Target", "Delta Replica Target", "Element Component", "Reserved as Pool Contributor", "Composite Volume Member", "Composite VirtualDisk Member", "Reserved for Sparing"} : Amended ToSubclass] uint16 Usage,[In,Description("Allows a user to set a vendor specific usage for the new virtual disk object. This parameter can only be specified if the Usage parameter is set to 1 - 'Other'.") : Amended ToSubclass] string OtherUsageDescription,[In,Description("Specifies the number of complete data copies to maintain for this virtual disk. If specified, this value will override the NumberOfDataCopiesDefault value that would have been inherited from the resiliency setting specified by ResiliencySettingName.") : Amended ToSubclass] uint16 NumberOfDataCopies,[In,Description("Specifies how many physical disk failures the virtual disk should be able to withstand before data loss occurs. If specified, this value will override the PhysicalDiskRedundancyDefault value that would have been inherited from the resiliency setting specified by ResiliencySettingName.") : Amended ToSubclass] uint16 PhysicalDiskRedundancy,[In,Description("Specifies the number of underlying physical disks across which data should be striped. If specified, this value will override the NumberOfColumnsDefault value that would have been inherited from the resiliency setting specified by ResiliencySettingName.") : Amended ToSubclass] uint16 NumberOfColumns,[In,Description("If TRUE, this field instructs the storage provider (or subsystem) to automatically pick what it determines to be the best number of columns for the virtual disk. If this field is TRUE, then the NumberOfColumns parameter must be NULL.") : Amended ToSubclass] boolean AutoNumberOfColumns,[In,Description("Specifies the number of bytes that should be used for a strip in the common striping-based resiliency settings. The strip is defined as the size of the portion of a stripe that lies on one physical disk. Thus Interleave * NumberOfColumns will yield the size of one stripe of user data. If this parameter is specified, this value will override the InterleaveDefault which would have been inherited from the resiliency setting specified by ResiliencySettingName.") : Amended ToSubclass] uint64 Interleave,[In,Description("Specifies the number of light parities to form for parity-based resiliency settings. This value must be between NumberOfGroupsMin and NumberOfGroupsMax for the resiliency setting specified by ResiliencySettingName.") : Amended ToSubclass] uint16 NumberOfGroups,[In,Description("Determines the allocation behavior for this virtual disk. Enclosure aware virtual disks will intelligently pick the physical disks to use for their redundancy. If TRUE, the virtual disk will attempt to use physical disks from different enclosures to balance the fault tolerance between two (or more) physical enclosures.") : Amended ToSubclass] boolean IsEnclosureAware,[In,Description("Determines the allocation behavior for this virtual disk. Fault domain aware virtual disks will intelligently pick the physical disks to use for their redundancy to balance the fault tolerance between two (or more) fault domain units of the specified type.") : Amended ToSubclass,Values{"PhysicalDisk", "StorageEnclosure", "StorageScaleUnit", "StorageChassis", "StorageRack"} : Amended ToSubclass] uint16 FaultDomainAwareness,[In,Description("Determines the fault domain type by which each column in this virtual disk should be isolated.") : Amended ToSubclass,Values{"PhysicalDisk", "StorageEnclosure", "StorageScaleUnit", "StorageChassis", "StorageRack"} : Amended ToSubclass] uint16 ColumnIsolation,[In,Description("If specified, allocation of this virtual disk's storage is limited to the physical disks in the list. These physical disks must already be added to this storage pool.") : Amended ToSubclass] MSFT_PhysicalDisk PhysicalDisksToUse[],[In,Description("If specified, allocations for this virtual disk are limited to the storage fault domains in the list.") : Amended ToSubclass] MSFT_StorageFaultDomain StorageFaultDomainsToUse[],[In,Description("Storage tiers on this virtual disk") : Amended ToSubclass] MSFT_StorageTier StorageTiers[],[In,Description("Sizes of each tier") : Amended ToSubclass] uint64 StorageTierSizes[],[In,Description("Size of write cache on the virtual disk") : Amended ToSubclass,Units("Bytes") : Amended ToSubclass] uint64 WriteCacheSize,[In,Description("Indicates whether the provider should pick up the auto write cache size") : Amended ToSubclass] boolean AutoWriteCacheSize,[In,Description("Size of the read cache on the virtual disk") : Amended ToSubclass,Units("Bytes") : Amended ToSubclass] uint64 ReadCacheSize,[In,Description("If TRUE, this virtual disk will only be attached to the system if an explicit call is made to the Attach method. Note that this property is specific to Storage Spaces.") : Amended ToSubclass] boolean IsManualAttach,[In,Description("If FALSE, this virtual disk will not be added to the cluster. Note that this property is specific to Storage Spaces.") : Amended ToSubclass] boolean AddToCluster,[In,Description("This parameter controls the asynchronous behavior the method will follow.\nIf TRUE, this method will make use of the CreatedStorageJob out parameter when the request is taking a long time to service. If a storage job has been created to track the operation, this method will return 4096 - 'Method Parameters Checked - Job Started'. Note, even if RunAsJob is TRUE, the method can still return a result if it has finished in sufficient time. \nIf FALSE or NULL, this method will follow default WMI asynchronous behavior as determined by the client's method for invocation (i.e. synchronous unless requested otherwise).") : Amended ToSubclass] boolean RunAsJob,[Out] MSFT_VirtualDisk CreatedVirtualDisk,[Out,Description("If RunAsJob is set to TRUE and this method takes a while to execute, this parameter returns a reference to the storage job used to track the long running operation.") : Amended ToSubclass] MSFT_StorageJob Ref CreatedStorageJob,[Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("This method creates a virtual disk and single volume using the resources of the storage pool.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Object Not Found", "Method Parameters Checked - Job Started", "Size Not Supported", "Not enough available capacity", "Access denied", "There are not enough resources to complete the operation.", "An unexpected I/O error has occurred", "You must specify a size by using either the Size or the UseMaximumSize parameter. You can specify only one of these parameters at a time.", "The request failed due to a fatal device hardware error.", "The operation is not supported on cluster.", "You must specify a size by using the Size parameter.", "The provider does not support the allocation unit size parameter.", "This combination of parameters is unsupported.", "The requested access path is already in use.", "The access path is not valid.", "The specified cluster size is invalid.", "The specified file system is not supported", "The volume cannot be quick formatted", "The cluster size must be a multiple of the disk's physical sector size", "Cannot perform the requested operation when the drive is read only", "You must specify a name for this volume", "You must specify a file server to expose this volume to", "The volume is not exposed to the specified file server", "Read cache is only supported by the ReFS filesystem.", "Starting offset of the thinly provisioned or DAX partition is not aligned to a cluster boundary.", "Cannot connect to the storage provider.", "The storage provider cannot connect to the storage subsystem.", "Failover clustering could not be enabled for this storage object.", "Failover clustering was enabled for the storage object but it failed to come online.", "This subsystem does not support creation of virtual disks with the specified provisioning type.", "This operation is not supported on primordial storage pools.", "The storage pool is reserved for special usage only.", "The specified resiliency setting is not supported by this storage pool.", "There are not enough eligible physical disks in the storage pool to create the specified virtual disk configuration.", "The storage pool could not complete the operation because its health or operational status does not permit it.", "The storage pool could not complete the operation because its configuration is read-only.", "You must specify the size info (either the Size or UseMaximumSize parameter) or the tier info (the StorageTiers and StorageTierSizes parameters), but not both size info and tier info.", "You must specify the FileSystem parameter.", "No resiliency setting with that name exists.", "The value for NoSinglePointOfFailure is not supported.", "The value for PhysicalDiskRedundancy is outside of the supported range of values.", "The value for NumberOfDataCopies is outside of the supported range of values.", "The value for ParityLayout is outside of the supported range of values.", "The value for Interleave is outside of the supported range of values.", "The value for NumberOfColumns is outside of the supported range of values.", "The value for ReadCacheSize is outside of the supported range of values."} : Amended ToSubclass] uint32 CreateVolume([In,Description("This parameter allows the user to specify the FriendlyName at the time of the volume creation. FriendlyNames are expected to be descriptive, however they are not required to be unique. The filesystem's label will also be set to this friendly name.") : Amended ToSubclass] string FriendlyName,[In,Description("Indicates the size for the virtual disk. Note that some storage subsystems will round the size up or down to a multiple of its allocation unit size. The size of the resulting volume will be the maximum size possible for the resulting virtual disk.") : Amended ToSubclass,Units("Bytes") : Amended ToSubclass] uint64 Size,[In,Description("Storage tiers on this virtual disk") : Amended ToSubclass] MSFT_StorageTier StorageTiers[],[In,Description("Sizes of each tier") : Amended ToSubclass] uint64 StorageTierSizes[],[In,Description("Denotes the provisioning type of the volume. \n1 - 'Thin': The storage for the volume is allocated on-demand. \n2 - 'Fixed': The storage for the volume is allocated up front.") : Amended ToSubclass,Values{"Thin", "Fixed"} : Amended ToSubclass] uint16 ProvisioningType,[In,Description("This parameter specifies the resiliency setting to use as a template for this volume. This property's value should correspond with the particular resiliency setting instance's Name property. Only resiliency settings associated with this storage pool may be used.") : Amended ToSubclass] string ResiliencySettingName,[In,Description("Specifies how many physical disk failures the virtual disk should be able to withstand before data loss occurs. If specified, this value will override the PhysicalDiskRedundancyDefault which would have been inherited from the resiliency setting specified by ResiliencySettingName.") : Amended ToSubclass] uint16 PhysicalDiskRedundancy,[In,Description("Specifies the number of underlying physical disks across which data should be striped. If specified, this value will override the NumberOfColumnsDefault value that would have been inherited from the resiliency setting specified by ResiliencySettingName.") : Amended ToSubclass] uint16 NumberOfColumns,[In,Description("Specifies the file system to format the created volume. Specifying a CSV file system is only supported on a storage spaces subsystem. For CSV the pool must be clusterable and the volume created will be a cluster shared volume.") : Amended ToSubclass,Values{"NTFS", "ReFS", "CSVFS_NTFS", "CSVFS_ReFS"} : Amended ToSubclass] uint16 FileSystem,[In,Description("If set to a valid access path, the system will attempt to use this path as a way to access the local volume. If the access path could not be set, or this parameter was left NULL, a new access path will be automatically assigned.") : Amended ToSubclass] string AccessPath,[In,Units("Bytes") : Amended ToSubclass,Description("Specifies the allocation unit size to use when formatting the volume.") : Amended ToSubclass] uint32 AllocationUnitSize,[In,Units("Bytes") : Amended ToSubclass,Description("Indicates the size of the read cache on the virtual disk.") : Amended ToSubclass] uint64 ReadCacheSize,[In,Description("The file server that will own this volume.") : Amended ToSubclass] MSFT_FileServer FileServer,[Out] MSFT_Volume CreatedVolume,[In,Description("This parameter controls the asynchronous behavior the method will follow.\nIf TRUE, this method will make use of the CreatedStorageJob out parameter when the request is taking a long time to service. If a storage job has been created to track the operation, this method will return 4096 - 'Method Parameters Checked - Job Started'. Note, even if RunAsJob is TRUE, the method can still return a result if it has finished in sufficient time. \nIf FALSE or NULL, this method will follow default WMI asynchronous behavior as determined by the client's method for invocation (i.e. synchronous unless requested otherwise).") : Amended ToSubclass] boolean RunAsJob,[Out,Description("If RunAsJob is set to TRUE and this method takes a while to execute, this parameter returns a reference to the storage job used to track the long running operation.") : Amended ToSubclass] MSFT_StorageJob Ref CreatedStorageJob,[Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("Creates a storage tier template on the storage pool. This method is available only when the SupportsStorageTierCreation property on the storage subsystem is set to TRUE. If it is set to FALSE, this method will fail with MI_RESULT_NOT_SUPPORTED. This method is also not supported for primordial pools.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Access denied", "There are not enough resources to complete the operation.", "Cannot connect to the storage provider.", "The storage provider cannot connect to the storage subsystem.", "This operation is not supported on primordial storage pools.", "The specified resiliency setting is not supported by this storage pool.", "The storage pool could not complete the operation because its health or operational status does not permit it.", "The storage pool could not complete the operation because its configuration is read-only.", "No resiliency setting with that name exists.", "The value for PhysicalDiskRedundancy is outside of the supported range of values.", "The value for NumberOfDataCopies is outside of the supported range of values.", "The value for Interleave is outside of the supported range of values.", "The value for NumberOfColumns is outside of the supported range of values.", "The value for NumberOfGroups is outside of the supported range of values.", "The specified ProvisioningType is not supported.", "The specified FaultDomainAwareness, ColumnIsolation, or both are not valid."} : Amended ToSubclass] uint32 CreateStorageTier([In,Description("Friendly name of the storage tier") : Amended ToSubclass] string FriendlyName,[In,Values{"Thin", "Fixed"} : Amended ToSubclass] uint16 ProvisioningType,[In,Description("Specifies the allocation unit size to use when creating the storage tier.") : Amended ToSubclass] uint64 AllocationUnitSize,[In,Description("Media type of the storage tier") : Amended ToSubclass,Values{"HDD", "SSD", "SCM"} : Amended ToSubclass] uint16 MediaType,[In,Description("Determines the allocation behavior for this storage tier. Fault domain aware storage tiers will intelligently pick the physical disks to use for their redundancy to balance the fault tolerance between two (or more) fault domain units of the specified type.") : Amended ToSubclass,Values{"PhysicalDisk", "StorageEnclosure", "StorageScaleUnit", "StorageChassis", "StorageRack"} : Amended ToSubclass] uint16 FaultDomainAwareness,[In,Description("Determines the fault domain type by which each column in this storage tier should be isolated.") : Amended ToSubclass,Values{"PhysicalDisk", "StorageEnclosure", "StorageScaleUnit", "StorageChassis", "StorageRack"} : Amended ToSubclass] uint16 ColumnIsolation,[In,Description("If specified, allocations for this storage tier are limited to the storage fault domains in the list.") : Amended ToSubclass] MSFT_StorageFaultDomain StorageFaultDomainsToUse[],[In,Description("Specifies the name of the resiliency setting that should be used for storage tier creation.") : Amended ToSubclass] string ResiliencySettingName,[In,Description("Denotes the intended usage of the storage tier") : Amended ToSubclass,Values{"Unknown", "Data", "Read Cache", "Cache Log", "Dirty Region Tracking", "Stripe State Tracking", "Valid Data Tracking", "Cache Lines"} : Amended ToSubclass] uint16 Usage,[In,Description("Specifies the number of bytes that should be used for a strip in the common striping-based resiliency settings. The strip is defined as the size of the portion of a stripe that lies on one physical disk. Thus Interleave * NumberOfColumns will yield the size of one stripe of user data.") : Amended ToSubclass] uint64 Interleave,[In,Description("Specifies the number of complete data copies to maintain for this storage tier. If specified, this value will override the NumberOfDataCopiesDefault value that would have been inherited from the resiliency setting specified by ResiliencySettingName.") : Amended ToSubclass] uint16 NumberOfDataCopies,[In,Description("Specifies the number of light parities to form for parity-based resiliency settings. This value must be between NumberOfGroupsMin and NumberOfGroupsMax for the resiliency setting specified by ResiliencySettingName.") : Amended ToSubclass] uint16 NumberOfGroups,[In,Description("Specifies the number of underlying physical disks across which data should be striped.") : Amended ToSubclass] uint16 NumberOfColumns,[In,Description("Specifies how many physical disk failures the storage tier should be able to withstand before data loss occurs.") : Amended ToSubclass] uint16 PhysicalDiskRedundancy,[In,Description("Description of the storage tier") : Amended ToSubclass] string Description,[In,Description("This parameter controls the asynchronous behavior the method will follow.\nIf TRUE, this method will make use of the CreatedStorageJob out parameter when the request is taking a long time to service. If a storage job has been created to track the operation, this method will return 4096 - 'Method Parameters Checked - Job Started'. Note, even if RunAsJob is TRUE, the method can still return a result if it has finished in sufficient time. \nIf FALSE or NULL, this method will follow default WMI asynchronous behavior as determined by the client's method for invocation (i.e. synchronous unless requested otherwise).") : Amended ToSubclass] boolean RunAsJob,[Out] MSFT_StorageTier CreatedStorageTier,[Out,Description("If RunAsJob is set to TRUE and this method takes a while to execute, this parameter returns a reference to the storage job used to track the long running operation.") : Amended ToSubclass] MSFT_StorageJob Ref CreatedStorageJob,[Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("This method deletes an empty storage pool. If the storage pool contains any virtual disks, these virtual disks should be removed first.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Method Parameters Checked - Job Started", "Access denied", "There are not enough resources to complete the operation.", "Cache out of date", "Cannot connect to the storage provider.", "The storage provider cannot connect to the storage subsystem.", "This operation is not supported on primordial storage pools.", "The storage pool could not complete the operation because its health or operational status does not permit it.", "The storage pool could not complete the operation because its configuration is read-only.", "The storage pool contains virtual disks."} : Amended ToSubclass] uint32 DeleteObject([In,Description("This parameter controls the asynchronous behavior the method will follow.\nIf TRUE, this method will make use of the CreatedStorageJob out parameter when the request is taking a long time to service. If a storage job has been created to track the operation, this method will return 4096 - 'Method Parameters Checked - Job Started'. Note, even if RunAsJob is TRUE, the method can still return a result if it has finished in sufficient time. \nIf FALSE or NULL, this method will follow default WMI asynchronous behavior as determined by the client's method for invocation (i.e. synchronous unless requested otherwise).") : Amended ToSubclass] boolean RunAsJob,[Out,Description("If RunAsJob is set to TRUE and this method takes a while to execute, this parameter returns a reference to the storage job used to track the long running operation.") : Amended ToSubclass] MSFT_StorageJob Ref CreatedStorageJob,[Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("This method upgrades the version of the storage pool.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Access denied", "There are not enough resources to complete the operation.", "The operation is not supported while the cluster is being upgraded.", "Cannot connect to the storage provider.", "The storage provider cannot connect to the storage subsystem.", "This operation is not supported on primordial storage pools.", "The storage pool could not complete the operation because its configuration is read-only.", "The storage pool could not complete the operation because the health or operational status of one or more virtual disks in it does not permit it."} : Amended ToSubclass] uint32 Upgrade([Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("This method rebalances the data in the storage pool.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Method Parameters Checked - Job Started", "Access denied", "There are not enough resources to complete the operation.", "The operation is not supported while the cluster is being upgraded.", "Cannot connect to the storage provider.", "The storage provider cannot connect to the storage subsystem.", "This operation is not supported on primordial storage pools.", "The storage pool could not complete the operation because its configuration is read-only.", "The storage pool could not complete the operation because the health or operational status of one or more virtual disks in it does not permit it.", "Could not repair the virtual disk because too many physical disks failed. Not enough information exists on the remaining physical disks to reconstruct the lost data.", "The virtual disk could not complete the operation because its health or operational status does not permit it."} : Amended ToSubclass] uint32 Optimize([In,Description("This parameter controls the asynchronous behavior the method will follow.\nIf TRUE, this method will make use of the CreatedStorageJob out parameter when the request is taking a long time to service. If a storage job has been created to track the operation, this method will return 4096 - 'Method Parameters Checked - Job Started'. Note, even if RunAsJob is TRUE, the method can still return a result if it has finished in sufficient time. \nIf FALSE or NULL, this method will follow default WMI asynchronous behavior as determined by the client's method for invocation (i.e. synchronous unless requested otherwise).") : Amended ToSubclass] boolean RunAsJob,[Out,Description("This parameter returns a reference to the storage job used to track the long running operation.") : Amended ToSubclass] MSFT_StorageJob Ref CreatedStorageJob,[Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("This method adds one or more physical disks from the primordial storage pool to an existing concrete storage pool.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Object Not Found", "Method Parameters Checked - Job Started", "Access denied", "There are not enough resources to complete the operation.", "Cache out of date", "An unexpected I/O error has occurred", "One or more storage devices are unresponsive.", "Cannot connect to the storage provider.", "The storage provider cannot connect to the storage subsystem.", "This operation is not supported on primordial storage pools.", "The storage pool could not complete the operation because its health or operational status does not permit it.", "The storage pool could not complete the operation because its configuration is read-only.", "One or more physical disks are not supported by this operation.", "One or more physical disks are already in use.", "One or more physical disks use a sector size that is not supported by this storage pool."} : Amended ToSubclass] uint32 AddPhysicalDisk([In] MSFT_PhysicalDisk PhysicalDisks[],[In,Values{"Auto-Select", "Manual-Select", "Hot Spare", "Journal"} : Amended ToSubclass] uint16 Usage,[In,Description("This parameter controls the asynchronous behavior the method will follow.\nIf TRUE, this method will make use of the CreatedStorageJob out parameter when the request is taking a long time to service. If a storage job has been created to track the operation, this method will return 4096 - 'Method Parameters Checked - Job Started'. Note, even if RunAsJob is TRUE, the method can still return a result if it has finished in sufficient time. \nIf FALSE or NULL, this method will follow default WMI asynchronous behavior as determined by the client's method for invocation (i.e. synchronous unless requested otherwise).") : Amended ToSubclass] boolean RunAsJob,[Out,Description("If RunAsJob is set to TRUE and this method takes a while to execute, this parameter returns a reference to the storage job used to track the long running operation.") : Amended ToSubclass] MSFT_StorageJob Ref CreatedStorageJob,[Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("This method removes one or more physical disks from the pool and returns all previously allocated space on the disk to the available capacity in the primordial pool.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Object Not Found", "Method Parameters Checked - Job Started", "Not enough available capacity", "Access denied", "There are not enough resources to complete the operation.", "Cache out of date", "An unexpected I/O error has occurred", "The request failed due to a fatal device hardware error.", "One or more storage devices are unresponsive.", "Cannot connect to the storage provider.", "The storage provider cannot connect to the storage subsystem.", "This operation is not supported on primordial storage pools.", "The storage pool could not complete the operation because its health or operational status does not permit it.", "The storage pool could not complete the operation because its configuration is read-only.", "The storage pool could not complete the operation because the health or operational status of one or more virtual disks in it does not permit it.", "Could not repair the virtual disk because too many physical disks failed. Not enough information exists on the remaining physical disks to reconstruct the lost data.", "The virtual disk could not complete the operation because its health or operational status does not permit it.", "One or more physical disks could not be removed because they are still in use.", "One or more physical disks are not in the pool.", "One or more physical disks could not be removed. The policy on this storage pool requires a minimum number of physical disks to remain present."} : Amended ToSubclass] uint32 RemovePhysicalDisk([In] MSFT_PhysicalDisk PhysicalDisks[],[In,Description("This parameter controls the asynchronous behavior the method will follow.\nIf TRUE, this method will make use of the CreatedStorageJob out parameter when the request is taking a long time to service. If a storage job has been created to track the operation, this method will return 4096 - 'Method Parameters Checked - Job Started'. Note, even if RunAsJob is TRUE, the method can still return a result if it has finished in sufficient time. \nIf FALSE or NULL, this method will follow default WMI asynchronous behavior as determined by the client's method for invocation (i.e. synchronous unless requested otherwise).") : Amended ToSubclass] boolean RunAsJob,[Out,Description("If RunAsJob is set to TRUE and this method takes a while to execute, this parameter returns a reference to the storage job used to track the long running operation.") : Amended ToSubclass] MSFT_StorageJob Ref CreatedStorageJob,[Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("This method returns the supported sizes for a virtual disk created on this storage pool. These sizes can either be returned in an array of all supported sizes, through a min, max, and divisor, or both.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Access denied", "There are not enough resources to complete the operation.", "Cache out of date", "The provider does not support the fault domain awareness parameter.", "Cannot connect to the storage provider.", "The storage provider cannot connect to the storage subsystem.", "This operation is not supported on primordial storage pools."} : Amended ToSubclass] uint32 GetSupportedSize([In,Description("Specifies the name of the resiliency setting that should be used when determining the supported sizes. Note that the sizes returned may be different depending on the resiliency setting.") : Amended ToSubclass] string ResiliencySettingName,[In,Description("Specifies the fault domain awareness that should be used when determining the supported sizes. Note that the sizes returned may be different depending on the fault domain awareness.") : Amended ToSubclass,Values{"PhysicalDisk", "StorageEnclosure", "StorageScaleUnit", "StorageChassis", "StorageRack"} : Amended ToSubclass] uint16 FaultDomainAwareness,[Out,Description("This output parameter will contain an array of all of the supported sizes by the storage pool. This parameter may be NULL if the number of supported sizes is large, but is useful for storage pools that support only a select number of virtual disk sizes.") : Amended ToSubclass,Units("Bytes") : Amended ToSubclass] uint64 SupportedSizes[],[Out,Description("This parameter denotes the minimum supported size that a virtual disk created in this pool can be.") : Amended ToSubclass,Units("Bytes") : Amended ToSubclass] uint64 VirtualDiskSizeMin,[Out,Description("This parameter denotes the maximum supported size that a virtual disk created in this pool can be.") : Amended ToSubclass,Units("Bytes") : Amended ToSubclass] uint64 VirtualDiskSizeMax,[Out,Description("This parameter indicates the interval in which the supported sizes increment. For example: If the minimum supported size is 10 GB, and this parameter is 2 GB, then the supported sizes for this pool would be 10 GB, 12 GB, 14 GB, etc. until the maximum supported size is reached.") : Amended ToSubclass,Units("Bytes") : Amended ToSubclass] uint64 VirtualDiskSizeDivisor,[Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("This method returns the security descriptor that controls access to this specific object instance.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Access denied", "There are not enough resources to complete the operation.", "Cannot connect to the storage provider.", "The storage provider cannot connect to the storage subsystem."} : Amended ToSubclass] uint32 GetSecurityDescriptor([Out,Description("A Security Descriptor Definition Language (SDDL) formed string describing the access control list of the object.") : Amended ToSubclass] string SecurityDescriptor,[Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("This method allows a user with sufficient privileges to set the security descriptor that control access to this specific object instance. If the call is not made in the context of a user specified in the security descriptor's access control list, this method will fail with 40001 - 'Access Denied'. If an empty security descriptor is passed to this function, the behavior is left to the specific implementation so long as there is some user context (typically domain administrators) that can access and administer the object.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Access denied", "There are not enough resources to complete the operation.", "Cannot connect to the storage provider.", "The storage provider cannot connect to the storage subsystem."} : Amended ToSubclass] uint32 SetSecurityDescriptor([In,Description("A Security Descriptor Definition Language (SDDL) formed string describing the desired access control list for this object.") : Amended ToSubclass] string SecurityDescriptor,[Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("This method allows the storage pool to be renamed.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Access denied", "There are not enough resources to complete the operation.", "Cannot connect to the storage provider.", "The storage provider cannot connect to the storage subsystem."} : Amended ToSubclass] uint32 SetFriendlyName([In] string FriendlyName,[Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("This method allows the storage pool's intended usage to be updated. Not all storage pools may allow this and will return 1 - 'Not Supported' if this operation cannot be performed.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Access denied", "There are not enough resources to complete the operation.", "Cannot connect to the storage provider.", "The storage provider cannot connect to the storage subsystem.", "This operation is not supported on primordial storage pools.", "The storage pool could not complete the operation because its health or operational status does not permit it.", "The storage pool could not complete the operation because its configuration is read-only."} : Amended ToSubclass] uint32 SetUsage([In,Description("Denotes the new intended usage of the storage pool.") : Amended ToSubclass,Values{"Other", "Unrestricted", "Reserved for ComputerSystem (the block server)", "Reserved as a Delta Replica Container", "Reserved for Migration Services", "Reserved for Local Replication Services", "Reserved for Remote Replication Services", "Reserved for Sparing"} : Amended ToSubclass] uint16 Usage,[In,Description("If Usage is set to 1 - 'Other', this parameter takes in the string representation of a vendor defined usage for this storage pool. This parameter must not be set if Usage is a value other than 1 - 'Other'.") : Amended ToSubclass] string OtherUsageDescription,[Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("This method allows the user to update or set various defaults on the storage pool. Note that not all parameters must be specified, and only those given will be updated.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Access denied", "There are not enough resources to complete the operation.", "You must specify the enclosure awareness (either the IsEnclosureAware or EnclosureAwareDefault parameter) or the fault domain awareness (either the FaultDomainAwareness or FaultDomainAwarenessDefault parameter), but not both.", "The provider does not support a value for fault domain awareness other than physical disk or storage enclosure.", "Cannot connect to the storage provider.", "The storage provider cannot connect to the storage subsystem.", "This operation is not supported on primordial storage pools.", "The specified resiliency setting is not supported by this storage pool.", "The storage pool could not complete the operation because its health or operational status does not permit it.", "The storage pool could not complete the operation because its configuration is read-only.", "No resiliency setting with that name exists.", "The value for WriteCacheSize is outside of the supported range of values."} : Amended ToSubclass] uint32 SetDefaults([In,Description("Specifies the new default provisioning type of the storage pool.") : Amended ToSubclass,Values{"Thin", "Fixed"} : Amended ToSubclass] uint16 ProvisioningTypeDefault,[In,Description("This parameter indicates the default media type to use when creating a new virtual disk on this storage pool.") : Amended ToSubclass,Values{"Unspecified", "HDD", "SSD", "SCM"} : Amended ToSubclass] uint16 MediaTypeDefault,[In,Description("Specifies the new default resiliency setting that should be used by this storage pool. The resiliency setting specified must already be associated with this storage pool.") : Amended ToSubclass] string ResiliencySettingNameDefault,[In,Description("This parameter indicates the default allocation policy for virtual disks created in an enclosure aware storage pool. For example, an enclosure aware subsystem could balance each data copy of the virtual disk across multiple physical enclosures such that each enclosure contains a full data copy of the virtual disk.") : Amended ToSubclass] boolean EnclosureAwareDefault,[In,Description("This parameter indicates the default allocation policy for virtual disks created in a fault domain aware storage pool. For example, an enclosure aware subsystem could balance each data copy of the virtual disk across multiple storage enclosures such that each enclosure contains a full data copy of the virtual disk.") : Amended ToSubclass,Values{"PhysicalDisk", "StorageEnclosure", "StorageScaleUnit", "StorageChassis", "StorageRack"} : Amended ToSubclass] uint16 FaultDomainAwarenessDefault,[In,Description("New default size of write cache for virtual disk creation") : Amended ToSubclass] uint64 WriteCacheSizeDefault,[In,Description("Indicates whether the provider should pick up the auto write cache size") : Amended ToSubclass] boolean AutoWriteCacheSize,[Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("This method allows the user to update or set various attributes on the storage pool. Note that not all parameters must be specified, and only those given will be updated.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Access denied", "There are not enough resources to complete the operation.", "Cannot connect to the storage provider.", "The storage provider cannot connect to the storage subsystem.", "This operation is not supported on primordial storage pools.", "The storage pool could not complete the operation because its health or operational status does not permit it.", "The storage pool could not complete the operation because its configuration is read-only.", "The number of thin provisioning alert thresholds specified exceeds the limit for this storage pool."} : Amended ToSubclass] uint32 SetAttributes([In] boolean IsReadOnly,[In] boolean ClearOnDeallocate,[In] boolean IsPowerProtected,[In,Values{"Sequential", "Parallel"} : Amended ToSubclass] uint16 RepairPolicy,[In,Values{"Auto", "Always", "Never"} : Amended ToSubclass] uint16 RetireMissingPhysicalDisks,[In,Description("Percentages at which an alert should be generated") : Amended ToSubclass,Units("Percentage") : Amended ToSubclass] uint16 ThinProvisioningAlertThresholds[],[Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

};



[ClassVersion("1.0") : Amended,Description("Association between StoragePool and PhysicalDisk. Primordial storage pools should retain their association to all physical disks that originated from that pool. This means that if a physical disk has been added to a concrete pool, the disk should have an association with both its concrete and primordial pools.") : Amended ToSubclass,AMENDMENT, LOCALE("MS_409")] 

class MSFT_StoragePoolToPhysicalDisk

{

};



[ClassVersion("1.0") : Amended,Description("Association between StoragePool and ResiliencySetting") : Amended ToSubclass,AMENDMENT, LOCALE("MS_409")] 

class MSFT_StoragePoolToResiliencySetting

{

};



[ClassVersion("1.0") : Amended,AMENDMENT, LOCALE("MS_409")] 

class MSFT_StoragePoolToStorageTier

{

};



[ClassVersion("1.0") : Amended,Description("Association between StoragePool and VirtualDisk. This association should only exist for concrete pools.") : Amended ToSubclass,AMENDMENT, LOCALE("MS_409")] 

class MSFT_StoragePoolToVirtualDisk

{

};



[ClassVersion("1.0") : Amended,Description("Association between StoragePool and Volume. This association should only exist for concrete pools.") : Amended ToSubclass,AMENDMENT, LOCALE("MS_409")] 

class MSFT_StoragePoolToVolume

{

};



[Description("This class is a representation of a particular Storage Management Provider (SMP) software package which is used to manage a storage subsystem.") : Amended ToSubclass,ClassVersion("1.0") : Amended,AMENDMENT, LOCALE("MS_409")] 

class MSFT_StorageProvider : MSFT_StorageObject

{

  [Description("Denotes whether the provider is a stand-alone SMP provider or an SMIS provider that uses the SMIS proxy SMP.") : Amended ToSubclass,Values{"SMP", "SMI-S"} : Amended ToSubclass] uint16 Type;

  [Description("A user-friendly name of the storage provider.") : Amended ToSubclass] string Name;

  [Description("A string indicating the manufacturer of the SMP software.") : Amended ToSubclass] string Manufacturer;

  [Description("A version string used by the SMP manufacturer to differentiate between software versions.") : Amended ToSubclass] string Version;

  [Description("If the SMP is of type 2 - 'SMI-S', this field contains the name of the host running the SMI-S provider software. This field will be NULL otherwise.") : Amended ToSubclass] string CimServerName;

  [Description("If the SMP is of type 2 - 'SMI-S', this field contains the protocol, computer host name, and port of the SMI-S server. This field will be NULL otherwise.") : Amended ToSubclass] string URI;

  [Description("If the SMP is of type 2 - 'SMI-S', this field contains the protocol, IP address, and port of the SMI-S server. This field will be NULL otherwise.") : Amended ToSubclass] string URI_IP;

  [Values{"Unknown", "Disabled", "Manual-Discovery"} : Amended ToSubclass] uint16 RemoteSubsystemCacheMode;

  [Description("Denotes whether this provider supports remote registration and management.") : Amended ToSubclass] boolean SupportsSubsystemRegistration;

  [Description("Denotes the caching modes this provider supports. The modes are 'Disabled' and 'Manual-Discovery'.") : Amended ToSubclass,Values{"Unknown", "Disabled", "Manual-Discovery"} : Amended ToSubclass] uint16 SupportedRemoteSubsystemCacheModes[];

  [Description("This method is used when a user wants to explicitly discover or re-enumerate objects owned by the storage provider. A call to this method could result in a full or partial cache invalidation and over-the-wire calls to the storage subsystem(s) in order to discover new or updated objects. As this is a time consuming task, it should be used sparingly by the user.\nThe scope of the discovery operation is controlled by the DiscoveryLevel and RootObject parameters. DiscoveryLevel controls the depth of the object discovery. RootObject defines the starting point from which discovery will happen.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Method Parameters Checked - Job Started", "Access denied", "There are not enough resources to complete the operation.", "Cannot connect to the storage provider.", "The storage provider cannot connect to the storage subsystem.", "The storage provider does not support a required profile.", "The storage provider does not support a required association.", "Discover failed for the root object.", "Discover failed on one or more subsystems."} : Amended ToSubclass] uint32 Discover([In,Description("This field denotes the level (or depth) of discovery that should be performed. This parameter can only be specified if the root object is a storage provider, storage subsystem, or NULL. When specified, the storage provider will discover objects starting from Level 0 and continuing until the specified level is reached. Associations between objects (within the discovered levels) will also be discovered. The discovery levels are defined as follows: \n0 - 'Level 0': The storage provider and storage subsystem objects will be discovered. \n1 - 'Level 1': Storage pools, resiliency settings, target ports, target portals, and initiator ids will be discovered.\n2 - 'Level 2': Virtual disks and masking sets will be discovered.\n3 - 'Level 3': Physical disks will be discovered.") : Amended ToSubclass,Values{"Level 0", "Level 1", "Level 2", "Level 3"} : Amended ToSubclass] uint16 DiscoveryLevel,[In,Description("If this parameter is set, discovery will begin from this object. When DiscoveryLevel is NULL, well-defined actions will be taken depending on the type of object specified by RootObject: \nStorage subsystem: All associated objects will be discovered. \nStorage pool: The pool, along with any associated resiliency settings, virtual disks, and physical disks will be discovered. \nMasking set: The masking set, along with any associated target ports, initiator ids, and virtual disks will be discovered. \nFor all other objects: Only that object will be discovered / refreshed.") : Amended ToSubclass] MSFT_StorageObject Ref RootObject,[In,Description("This parameter controls the asynchronous behavior the method will follow.\nIf TRUE, this method will make use of the CreatedStorageJob out parameter when the request is taking a long time to service. If a storage job has been created to track the operation, this method will return 4096 - 'Method Parameters Checked - Job Started'. Note, even if RunAsJob is TRUE, the method can still return a result if it has finished in sufficient time. \nIf FALSE or NULL, this method will follow default WMI asynchronous behavior as determined by the client's method for invocation (i.e. synchronous unless requested otherwise).") : Amended ToSubclass] boolean RunAsJob,[Out,Description("If RunAsJob is set to TRUE and this method takes a while to execute, this parameter returns a reference to the storage job used to track the long running operation.") : Amended ToSubclass] MSFT_StorageJob Ref CreatedStorageJob,[Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("This method returns the security descriptor that controls access to this specific object instance.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Access denied", "There are not enough resources to complete the operation.", "Cannot connect to the storage provider.", "The storage provider cannot connect to the storage subsystem."} : Amended ToSubclass] uint32 GetSecurityDescriptor([Out,Description("A Security Descriptor Definition Language (SDDL) formed string describing the access control list of the object.") : Amended ToSubclass] string SecurityDescriptor,[Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("This method allows a user with sufficient privileges to set the security descriptor that control access to this specific object instance. If the call is not made in the context of a user specified in the security descriptor's access control list, this method will fail with 40001 - 'Access Denied'. If an empty security descriptor is passed to this function, the behavior is left to the specific implementation so long as there is some user context (typically domain administrators) that can access and administer the object.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Access denied", "There are not enough resources to complete the operation.", "Cannot connect to the storage provider.", "The storage provider cannot connect to the storage subsystem."} : Amended ToSubclass] uint32 SetSecurityDescriptor([In,Description("A Security Descriptor Definition Language (SDDL) formed string describing the desired access control list for this object.") : Amended ToSubclass] string SecurityDescriptor,[Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("This method registers a subsystem to be managed by this provider. Note that the subsystem must be compatible with the provider software.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "In Use", "Access denied", "There are not enough resources to complete the operation.", "Cannot connect to the storage provider.", "The storage provider cannot connect to the storage subsystem.", "Cannot register/unregister the storage subsystem on local host.", "This subsystem is already registered."} : Amended ToSubclass] uint32 RegisterSubsystem([In] string ComputerName,[In] string Credential,[Out] MSFT_StorageSubSystem RegisteredSubsystem,[Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("This method unregisters a subsystem. The provider will no longer manage this subsystem.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Access denied", "There are not enough resources to complete the operation.", "Cannot connect to the storage provider.", "The storage provider cannot connect to the storage subsystem.", "Cannot register/unregister the storage subsystem on local host.", "The storage subsystem is not registered.", "This subsystem is already registered with another user's credentials. Use the -Force flag to remove the existing registration and add a new one anyway."} : Amended ToSubclass] uint32 UnregisterSubsystem([In] MSFT_StorageSubSystem Subsystem,[In] string StorageSubSystemUniqueId,[In] boolean Force,[Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("This method sets the attributes of the provider.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Access denied", "There are not enough resources to complete the operation.", "Cannot connect to the storage provider.", "The storage provider cannot connect to the storage subsystem."} : Amended ToSubclass] uint32 SetAttributes([In,Description("If set to 3, caching for all the registered remote subsystem is enabled. If set to 2, caching for all the registered remote subsystem is disabled. This API only effects the remote subsystem registered and local Subsystem requests are not cached and reported live always.") : Amended ToSubclass,Values{"Disabled", "Manual-Discovery"} : Amended ToSubclass] uint16 RemoteSubsystemCacheMode,[Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

};



[ClassVersion("1.0") : Amended,Description("Association between StorageProvider and StorageSubSystem") : Amended ToSubclass,AMENDMENT, LOCALE("MS_409")] 

class MSFT_StorageProviderToStorageSubSystem

{

};



[Description("Represents a storage rack in a data center.") : Amended ToSubclass,ClassVersion("1.0") : Amended,AMENDMENT, LOCALE("MS_409")] 

class MSFT_StorageRack : MSFT_StorageFaultDomain

{

};



[Description("StorageReliabilityCounter provides reliability statistics or counters reported by a storage device. This information is dynamic and should be obtained from the storage device whenever needed.") : Amended ToSubclass,ClassVersion("1.0") : Amended,AMENDMENT, LOCALE("MS_409")] 

class MSFT_StorageReliabilityCounter : MSFT_StorageObject

{

  [Description("DeviceId identifies the associated storage device. When associated with an MSFT_PhysicalDisk, it will be the same as its DeviceId field. When associated with an MSFT_Disk, it will be the same as its Number field.") : Amended ToSubclass] string DeviceId;

  [Description("The current temperature of the storage device in Celsius.") : Amended ToSubclass] uint8 Temperature;

  [Description("The maximum temperature in Celsius at which the storage device is capable of normal operation.") : Amended ToSubclass] uint8 TemperatureMax;

  [Description("Total read errors encountered by the storage device.") : Amended ToSubclass] uint64 ReadErrorsTotal;

  [Description("Read errors corrected by the storage device.") : Amended ToSubclass] uint64 ReadErrorsCorrected;

  [Description("Read errors not corrected by the storage device.") : Amended ToSubclass] uint64 ReadErrorsUncorrected;

  [Description("Total write errors encountered by the storage device.") : Amended ToSubclass] uint64 WriteErrorsTotal;

  [Description("Write errors corrected by the storage device.") : Amended ToSubclass] uint64 WriteErrorsCorrected;

  [Description("Write errors not corrected by the storage device.") : Amended ToSubclass] uint64 WriteErrorsUncorrected;

  [Description("Year and week of storage device manufacture.") : Amended ToSubclass] string ManufactureDate;

  [Description("Number of start-stop cycles performed by the storage device.") : Amended ToSubclass] uint32 StartStopCycleCount;

  [Description("Maximum number of start-stop cycles within which the storage device is capable of normal operation.") : Amended ToSubclass] uint32 StartStopCycleCountMax;

  [Description("Number of load-unload cycles performed by the storage device.") : Amended ToSubclass] uint32 LoadUnloadCycleCount;

  [Description("Maximum number of load-unload cycles within which the storage device is capable of normal operation.") : Amended ToSubclass] uint32 LoadUnloadCycleCountMax;

  [Description("Storage device wear indicator, in percentage. At 100 percent, the estimated wear limit will have been reached.") : Amended ToSubclass] uint8 Wear;

  [Description("Length of time, in hours, the storage device has been powered on since manufacture.") : Amended ToSubclass] uint32 PowerOnHours;

  [Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter"} : Amended ToSubclass] uint32 Reset();

};



[Description("Represents a unit of adding storage in a data center.") : Amended ToSubclass,ClassVersion("1.0") : Amended,AMENDMENT, LOCALE("MS_409")] 

class MSFT_StorageScaleUnit : MSFT_StorageFaultDomain

{

  [Description("This method allows a user to perform certain maintenance tasks on the physical disks in this storage scale unit. ") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Currently unsafe to perform the operation", "Access denied", "There are not enough resources to complete the operation.", "Cannot connect to the storage provider.", "The storage provider cannot connect to the storage subsystem.", "The storage pool could not complete the operation because its health or operational status does not permit it.", "The storage pool could not complete the operation because its configuration is read-only."} : Amended ToSubclass] uint32 Maintenance([In,Description("If set to TRUE, this instructs the physical disks in the storage scale unit to validate if enabling maintenance mode will be successful.") : Amended ToSubclass] boolean ValidateMaintenanceMode,[In,Description("If set to TRUE, this instructs the physical disks in this storage scale unit to enable maintenance mode.") : Amended ToSubclass] boolean EnableMaintenanceMode,[In,Description("This indicates the time in seconds before stale data will be moved off of the physical disks in this storage scale unit.") : Amended ToSubclass] uint32 Timeout,[In,Description("The model of the physical disks to put into maintenance mode.") : Amended ToSubclass] string Model,[In,Description("The manufacturer of the physical disks to be put into maintenance mode.") : Amended ToSubclass] string Manufacturer,[In,Description("Ignore any detached virtual disks.") : Amended ToSubclass] boolean IgnoreDetachedVirtualDisks,[Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

};



[ClassVersion("1.0") : Amended,Description("This class manages various operating system wide settings related to storage management.") : Amended ToSubclass,AMENDMENT, LOCALE("MS_409")] 

class MSFT_StorageSetting

{

  [Description("Describes the action the operating system will take when a new disk is discovered on the system. When a disk is offline, the disk layout can be read, but no volume devices are surfaced through Plug and Play (PnP). This means that no file system can be mounted on the disk. When a disk is online, one or more volume devices are installed for the disk. \n1 - 'Online All': All newly discovered disks are brought online and made read-write.\n2 - 'Offline Shared': All newly discovered disks that do not reside on a shared bus are brought online and made read-write.\n3 - 'Offline All': All newly discovered disks remain offline and read-only.\n4 - 'Offline Internal': All newly discovered disks that do not reside on a shared bus remain offline and read-only.") : Amended ToSubclass,Values{"Unknown", "Online All", "Offline Shared", "Offline All", "Offline Internal"} : Amended ToSubclass] uint16 NewDiskPolicy;

  [Description("Describes the policy for the files that the automatic data integrity scanner will scrub. \n0 - 'Off': No files will be scrubbed. \n1 - 'Integrity Streams': Only files with integrity streams will be scrubbed. \n2 - 'All': All files will be scrubbed. \n") : Amended ToSubclass,Values{"Off", "Integrity Streams", "All"} : Amended ToSubclass] uint32 ScrubPolicy;

  [Description("Gets the current state of all storage settings for the computer.") : Amended ToSubclass] uint32 Get([Out] MSFT_StorageSetting StorageSetting);

  [Description("Sets the state of various storage settings on this computer. Only the parameters specified will be set on the system.") : Amended ToSubclass] uint32 Set([In,Values{"Unknown", "Online All", "Offline Shared", "Offline All", "Offline Internal"} : Amended ToSubclass] uint16 NewDiskPolicy,[In,Values{"Off", "Integrity Streams", "All"} : Amended ToSubclass] uint32 ScrubPolicy);

  [Description("Updates the internal cache of software objects (i.e. Disks, Partitions, Volumes). This is useful if there was extensive change to the storage layout exposed to that computer. ") : Amended ToSubclass] uint32 UpdateHostStorageCache();

};



[Description("Represents a storage site in a stretch cluster.") : Amended ToSubclass,ClassVersion("1.0") : Amended,AMENDMENT, LOCALE("MS_409")] 

class MSFT_StorageSite : MSFT_StorageFaultDomain

{

};



[Description("Represents a storage array that exposes virtual disks and/or a computer system that exposes file server capabilities.") : Amended ToSubclass,ClassVersion("1.0") : Amended,AMENDMENT, LOCALE("MS_409")] 

class MSFT_StorageSubSystem : MSFT_StorageObject

{

  [Description("A user settable string representing the name of the storage subsystem. The storage provider or subsystem is expected to supply an initial value for this field.") : Amended ToSubclass] string FriendlyName;

  [Description("A user settable description of the storage subsystem. This field can be used to store extra free-form information, such as notes or details about the subsystem's intended usage.") : Amended ToSubclass] string Description;

  [Description("Name is a globally unique, human-readable string used to identify a storage subsystem.") : Amended ToSubclass] string Name;

  [Description("NameFormat describes the format of the Name identifier.") : Amended ToSubclass,Values{"Other", "IP", "Dial", "HID", "NWA", "HWA", "X25", "ISDN", "IPX", "DCC", "ICD", "E.164", "SNA", "OID/OSI", "WWN", "NAA"} : Amended ToSubclass] uint16 NameFormat;

  [Description("This field is an array of custom identifier for the subsystem. If this field is set, the OtherIdentifyingInfoDescription field must also be set.") : Amended ToSubclass] string OtherIdentifyingInfo[];

  [Description("An array of string description of the format used in the custom identifiers defined in the OtherIdentifyingInfo field. There must be a 1:1 mapping between this array and OtherIdentifyingInfo.") : Amended ToSubclass] string OtherIdentifyingInfoDescription[];

  [Description("Denotes the health of the subsystem. \n0 - 'Healthy': Indicates that the subsystem is functioning normally. \n1 - 'Warning': Indicates that the subsystem is still functioning, but has detected errors or issues that may require administrator intervention. \n2 - 'Unhealthy': Indicates that the subsystem is not functioning due to errors or failures. The subsystem needs immediate attention from an administrator.") : Amended ToSubclass,Values{"Healthy", "Warning", "Unhealthy"} : Amended ToSubclass] uint16 HealthStatus;

  [Description("Indicates the current statuses of the subsystem. Various operational statuses are defined. Many of the enumeration's values are self-explanatory. However, a few are not and are described here in more detail. \n4 - 'Stressed': indicates that the subsystem is functioning, but needs attention. Examples of 'Stressed' states are overload, overheated, and so on. \n5 - 'Predictive Failure': indicates that the subsystem is functioning nominally but predicting a failure in the near future. \n11 - 'In Service': describes a subsystem being configured, maintained, cleaned, or otherwise administered. \n12 - 'No Contact': indicates that the storage provider has knowledge of this subsystem, but has never been able to establish communications with it. \n13 - 'Lost Communication': indicates that the subsystem is known to exist and has been contacted successfully in the past, but is currently unreachable. \n10 - 'Stopped' and 14 - 'Aborted' are similar, although the former implies a clean and orderly stop, while the latter implies an abrupt stop where the state and configuration of the subsystem might need to be updated. \n15 - 'Dormant': indicates that the subsystem is inactive. \n16 - 'Supporting Entity in Error': indicates that this subsystem might be OK, but that another element, on which it is dependent, is in error. \n") : Amended ToSubclass,Values{"Unknown", "Other", "OK", "Degraded", "Stressed", "Predictive Failure", "Error", "Non-Recoverable Error", "Starting", "Stopping", "Stopped", "In Service", "No Contact", "Lost Communication", "Aborted", "Dormant", "Supporting Entity in Error", "Completed", "Power Mode", "Relocating", "Microsoft Reserved"} : Amended ToSubclass] uint16 OperationalStatus[];

  [Description("A string representation of the vendor defined operational status. This field should only be set if the OperationalStatus array contains 1 - 'Other'.") : Amended ToSubclass] string OtherOperationalStatusDescription;

  [Description("This field denotes the cache level that has been discovered. This corresponds to the storage provider's DiscoveryLevel parameter in the Discover method. \n0 - 'Level 0': The storage provider and storage subsystem objects have been discovered. \n1 - 'Level 1': Storage pools, resiliency settings, target ports, target portals, and initiator ids belonging to this subsystem have been discovered. \n2 - 'Level 2': Virtual disks and masking sets belonging to this subsystem have been discovered. \n3 - 'Level 3': Physical disks belonging to this subsystem have been discovered.") : Amended ToSubclass,Values{"Level 0", "Level 1", "Level 2", "Level 3"} : Amended ToSubclass] uint16 CurrentCacheLevel;

  [Description("This field is a string representation of the company responsible for creating the storage subsystem hardware.") : Amended ToSubclass] string Manufacturer;

  [Description("This field is a string representation of the model number of the subsystem array.") : Amended ToSubclass] string Model;

  [Description("This field is a string representation of the serial number of the subsystem array.") : Amended ToSubclass] string SerialNumber;

  [Description("This field is a string representation of the subsystem's firmware version.") : Amended ToSubclass] string FirmwareVersion;

  [Description("Tag is an identifier for the subsystem that is independent from any location-based information. Examples of a tag could be the subsystem's serial number or asset tag.") : Amended ToSubclass] string Tag;

  [Description("Denotes whether this subsystem supports automatic object clustering.") : Amended ToSubclass] boolean AutomaticClusteringEnabled;

  [Description("Denotes whether virtual disk repair is enabled on this subsystem.") : Amended ToSubclass] boolean VirtualDiskRepairEnabled;

  [Description("Denotes the virtual disk repair queue depth policy in this subsystem.") : Amended ToSubclass] uint32 VirtualDiskRepairQueueDepth;

  [Description("Denotes the minimum number of physical disks required for creating a storage pool on this subsystem.") : Amended ToSubclass] uint16 PhysicalDisksPerStoragePoolMin;

  [Description("Determines the default allocation behavior for storage pools created in this subsystem. If the subsystem does not support storage pool creation, then it determines the default allocation behavior for virtual disks created in this subsystem.") : Amended ToSubclass,Values{"PhysicalDisk", "StorageEnclosure", "StorageScaleUnit", "StorageChassis", "StorageRack"} : Amended ToSubclass] uint16 FaultDomainAwarenessDefault;

  [Description("Denotes whether this subsystem supports local mirror replication.") : Amended ToSubclass] boolean SupportsMirrorLocal;

  [Description("Denotes whether this subsystem supports remote mirror replication.") : Amended ToSubclass] boolean SupportsMirrorRemote;

  [Description("Denotes whether this subsystem supports local snapshotting. This field must be true if the VirtualDisk::CreateSnapshot method is implemented.") : Amended ToSubclass] boolean SupportsSnapshotLocal;

  [Description("Denotes whether this subsystem supports remote snapshotting.") : Amended ToSubclass] boolean SupportsSnapshotRemote;

  [Description("Denotes whether this subsystem supports local cloning. This field must be true if the VirtualDisk::CreateClone method is implemented.") : Amended ToSubclass] boolean SupportsCloneLocal;

  [Description("Denotes whether this subsystem supports remote cloning.") : Amended ToSubclass] boolean SupportsCloneRemote;

  [Description("Denotes whether a user can create a virtual disk by using the CreateVirtualDisk method on either the storage subsystem or storage pool objects.") : Amended ToSubclass] boolean SupportsVirtualDiskCreation;

  [Description("Denotes whether a user can modify attributes or other properties on a virtual disk by using the various Set* extrinsic methods. (For example: SetFriendlyname ).") : Amended ToSubclass] boolean SupportsVirtualDiskModification;

  [Description("Denotes whether a user can delete a virtual disk through the use of the DeleteObject extrinsic method on the virtual disk instance.") : Amended ToSubclass] boolean SupportsVirtualDiskDeletion;

  [Description("Indicates if the subsystem allows a virtual disk to be grown in size (using the Resize method of the virtual disk instance).") : Amended ToSubclass] boolean SupportsVirtualDiskCapacityExpansion;

  [Description("Indicates if the subsystem allows a virtual disk to be reduced in size (using the Resize method of the virtual disk instance).") : Amended ToSubclass] boolean SupportsVirtualDiskCapacityReduction;

  [Description("Indicates if the subsystem supports explicit repairing of a virtual disk through the Repair method of the virtual disk instance.") : Amended ToSubclass] boolean SupportsVirtualDiskRepair;

  [Description("Denotes whether this subsystem supports direct creation of volumes on a storage pool.") : Amended ToSubclass] boolean SupportsVolumeCreation;

  [Description("File systems supported on this subsystem.") : Amended ToSubclass,Values{"Unknown", "Threshold", "UFS", "HFS", "FAT", "FAT16", "FAT32", "NTFS4", "NTFS5", "XFS", "AFS", "EXT2", "EXT3", "ReiserFS", "NTFS", "ReFS", "CSVFS_NTFS", "CSVFS_ReFS"} : Amended ToSubclass] uint16 SupportedFileSystems[];

  [Description("If TRUE, this subsystem supports the ability to create new concrete storage pools from one or more physical disks. If FALSE, either the subsystem uses pre-created storage pools, or it does not support storage pools.") : Amended ToSubclass] boolean SupportsStoragePoolCreation;

  [Description("If TRUE, this subsystem supports the deletion of its storage pools.") : Amended ToSubclass] boolean SupportsStoragePoolDeletion;

  [Description("If TRUE, storage pools on this subsystem support capacity expansion through adding more physical disks.") : Amended ToSubclass] boolean SupportsStoragePoolAddPhysicalDisk;

  [Description("If TRUE, storage pools on this subsystem support the replacement or removal of physical disks by use of the RemovePhysicalDisk method on the storage pool instance.") : Amended ToSubclass] boolean SupportsStoragePoolRemovePhysicalDisk;

  [Description("If TRUE, the CreateVirtualDisk method on the storage subsystem is supported.") : Amended ToSubclass] boolean SupportsAutomaticStoragePoolSelection;

  [Description("If TRUE, all resiliency settings will be copied from the primordial pool and added to a concrete pool upon its creation. If FALSE, the storage pool should copy the setting specified in the ResiliencySettingNameDefault parameter of CreateStoragePool. If no name was given, the resiliency setting specified by the primordial pool's ResiliencySettingNameDefault property should be used.") : Amended ToSubclass] boolean SupportsMultipleResiliencySettingsPerStoragePool;

  [Description("If TRUE, this subsystem supports the ability to create new storage tiers. If FALSE, either the subsystem uses pre-created storage tiers, or it does not support storage tiers.") : Amended ToSubclass] boolean SupportsStorageTierCreation;

  [Description("If TRUE, this subsystem supports the deletion of storage tiers.") : Amended ToSubclass] boolean SupportsStorageTierDeletion;

  [Description("If TRUE, this subsystem supports the resizing of storage tiers.") : Amended ToSubclass] boolean SupportsStorageTierResize;

  [Description("If TRUE, this subsystem supports the modification of the storage tier friendly name.") : Amended ToSubclass] boolean SupportsStorageTierFriendlyNameModification;

  [Description("If TRUE, this subsystem supports the creation of tiered virtual disks.") : Amended ToSubclass] boolean SupportsStorageTieredVirtualDiskCreation;

  [Description("This field is reserved for future releases.") : Amended ToSubclass] uint16 ReplicasPerSourceSnapshotMax;

  [Description("This field is reserved for future releases.") : Amended ToSubclass] uint16 ReplicasPerSourceCloneMax;

  [Description("This field is reserved for future releases.") : Amended ToSubclass] uint16 ReplicasPerSourceMirrorMax;

  [Description("If TRUE, the storage subsystem supports showing and hiding (masking) a virtual disk to a host initiator through the Show/Hide methods of the virtual disk and by the use of masking sets.") : Amended ToSubclass] boolean SupportsMaskingVirtualDiskToHosts;

  [Description("Indicates which address formats can be inferred by the storage provider and subsystem when working with initiator ids.") : Amended ToSubclass,Values{"Other", "Port WWN", "Node WWN", "Host Name", "iSCSI Name", "Switch WWN", "SAS Address"} : Amended ToSubclass] uint16 MaskingValidInitiatorIdTypes[];

  [Description("If MaskingValidInitiatorIdTypes contains the value 1 - 'Other', this field is used to enumerate the other valid initiator id types for this storage subsystem.") : Amended ToSubclass] string MaskingOtherValidInitiatorIdTypes[];

  [Description("Indicates the number of target ports that can be used for masking a virtual disk. This applies to both masking sets and the virtual disk Show method.") : Amended ToSubclass,Values{"One TargetPort per view", "Multiple target ports per view", "All target ports share the same view"} : Amended ToSubclass] uint16 MaskingPortsPerView;

  [Description("If TRUE, the storage provider supports the use of the DeviceNumbers parameter of the CreateMaskingSet and AddVirtualDisk methods.") : Amended ToSubclass] boolean MaskingClientSelectableDeviceNumbers;

  [Description("If TRUE, the subsystem will only allow one initiator to be added to a masking set.") : Amended ToSubclass] boolean MaskingOneInitiatorIdPerView;

  [Description("Indicates the maximum number of masking sets that a particular virtual disk can be added to.") : Amended ToSubclass] uint16 MaskingMapCountMax;

  [Description("Denotes whether storage tiers are supported by the subsystem.") : Amended ToSubclass,Values{"Unknown", "Not Supported", "Manual", "Auto"} : Amended ToSubclass] uint16 DataTieringType;

  [Description("Denotes the iSCSI Target Creation Scheme supported by the subsystem. \n0 - 'Not Applicable' implies a non-iSCSI subsystem. \n1 - 'Not Supported' implies the subsystem does not allow creation of a Target. \n2 - 'Manual' implies the subsystem allows manual creation of the Target. \n3 - 'Auto' implies the subsystem automatically creates a Target. \n") : Amended ToSubclass,Values{"Not Applicable", "Not Supported", "Manual", "Auto"} : Amended ToSubclass] uint16 iSCSITargetCreationScheme;

  [Description("Denotes the total number of physical disk slots in the subsystem or enclosure.") : Amended ToSubclass] uint32 NumberOfSlots;

  [Description("A string representing the name of the management server. This value is only relevant for Storage Management Providers that implement the SMI-S standard.") : Amended ToSubclass] string CimServerName;

  [Description("An array representing the supported host types.") : Amended ToSubclass,Values{"Unknown", "Other", "Standard", "Solaris", "HPUX", "OpenVMS", "Tru64", "Netware", "Sequent", "AIX", "DGUX", "Dynix", "Irix", "Cisco iSCSI Storage Router", "Linux", "Microsoft Windows", "OS400", "TRESPASS", "HI-UX", "VMware ESXi", "Microsoft Windows Server 2008", "Microsoft Windows Server 2003", "DMTF Reserved", "Vendor Specific"} : Amended ToSubclass] uint16 SupportedHostType[];

  [Description("When the corresponding array entry in SupportedHostType[] is \"Other\", this entry provides a string describing the manufacturer and OS/Environment. When the corresponding SupportedHostType[] entry is not \"Other\", this entry allows variations or qualifications of ClientTypes - for example, different versions of Solaris.") : Amended ToSubclass] string OtherHostTypeDescription[];

  [Description("The storage transport on this subsystem.") : Amended ToSubclass,Values{"Unknown", "Shared Storage", "Local Storage"} : Amended ToSubclass] uint16 StorageConnectionType;

  [Description("Denotes whether this subsystem supports a file server.") : Amended ToSubclass] boolean SupportsFileServer;

  [Description("Denotes whether this subsystem supports creation of a file server.") : Amended ToSubclass] boolean SupportsFileServerCreation;

  [Description("Denotes whether this subsystem supports continuously available (CA) file servers.") : Amended ToSubclass] boolean SupportsContinuouslyAvailableFileServer;

  [Description("This field describes the protocols supported by file servers on this subsystem.") : Amended ToSubclass,Values{"NFS", "CIFS(SMB)"} : Amended ToSubclass] uint16 SupportedFileServerProtocols[];

  [Description("Denotes the object types supported for Deduplication in this subsystem.") : Amended ToSubclass,Values{"Volume", "VirtualDisk", "Partition", "StoragePool"} : Amended ToSubclass] uint16 SupportedDeduplicationObjectTypes[];

  [Description("Denotes the file system types supported for Deduplication in this subsystem.") : Amended ToSubclass,Values{"Unknown", "Threshold", "UFS", "HFS", "FAT", "FAT16", "FAT32", "NTFS4", "NTFS5", "XFS", "AFS", "EXT2", "EXT3", "ReiserFS", "NTFS", "ReFS", "CSVFS_NTFS", "CSVFS_ReFS"} : Amended ToSubclass] uint16 SupportedDeduplicationFileSystemTypes[];

  [Description("This method creates a storage pool from available physical disks contained within a common primordial pool. A physical disk is available for storage pool creation if its CanPool property is set to TRUE. Storage pool creation is only available when the SupportsStoragePoolCreation field of the storage subsystem is TRUE.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Object Not Found", "Method Parameters Checked - Job Started", "Access denied", "There are not enough resources to complete the operation.", "Cache out of date", "An unexpected I/O error has occurred", "The request failed due to a fatal device hardware error.", "You may specify a write cache size by using either the WriteCacheSize or AutoWriteCacheSize parameter, but not both.", "You must specify the enclosure awareness (either the IsEnclosureAware or EnclosureAwareDefault parameter) or the fault domain awareness (either the FaultDomainAwareness or FaultDomainAwarenessDefault parameter), but not both.", "The provider does not support a value for fault domain awareness other than physical disk or storage enclosure.", "One or more storage devices are unresponsive.", "Cannot connect to the storage provider.", "The storage provider cannot connect to the storage subsystem.", "Failover clustering could not be enabled for this storage object.", "Failover clustering was enabled for the storage object but it failed to come online.", "No resiliency setting with that name exists.", "The value for WriteCacheSize is outside of the supported range of values.", "One or more physical disks are not supported by this operation.", "Not enough physical disks were specified to successfully complete the operation.", "One or more physical disks are already in use.", "One or more physical disks use a sector size that is not supported by this storage pool.", "One or more physical disks are not connected to the nodes on which the pool or space is being created."} : Amended ToSubclass] uint32 CreateStoragePool([In,Description("This parameter allows the user to specify the FriendlyName at the time of the storage pool creation. FriendlyNames are expected to be descriptive, however they are not required to be unique. Note that some storage subsystems do not allow setting a friendly name during pool creation. If a subsystem doesn't support this, storage pool creation should still succeed, however the pool may have a different name assigned to it.") : Amended ToSubclass] string FriendlyName,[In,Description("Denotes the intended usage of the storage pool.") : Amended ToSubclass,Values{"Other", "Unrestricted", "Reserved for ComputerSystem (the block server)", "Reserved as a Delta Replica Container", "Reserved for Migration Services", "Reserved for Local Replication Services", "Reserved for Remote Replication Services", "Reserved for Sparing"} : Amended ToSubclass] uint16 Usage,[In,Description("Allows a user to set a custom usage type for the new storage pool object. This parameter can only be specified if the Usage parameter is set to 1 - 'Other'. ") : Amended ToSubclass] string OtherUsageDescription,[In,Description("This parameter is used to specify an array of physical disk objects that will be used as the backing data storage for the created storage pool. The physical disks must come from a primordial pool on the subsystem on which you are creating this pool. Only the disks from a single primordial pool may be used.") : Amended ToSubclass] MSFT_PhysicalDisk PhysicalDisks[],[In,Description("This parameter indicates the resiliency setting to be used by default when creating a new virtual disk on this storage pool. If the subsystem's SupportsMultipleResiliencySettingsPerStoragePool property is set to FALSE, this parameter also acts as a hint to the Storage Management Provider on which resiliency setting should be inherited by this storage pool. If no value is given, it is up to the Storage Management Provider to pick the most appropriate resiliency setting.") : Amended ToSubclass] string ResiliencySettingNameDefault,[In,Description("This parameter indicates the provisioning type to be used by default when creating a new virtual disk on this storage pool. If no default is specified, the default is inherited from the primordial pool.") : Amended ToSubclass,Values{"Thin", "Fixed"} : Amended ToSubclass] uint16 ProvisioningTypeDefault,[In,Description("This parameter indicates the media type to be used by default when creating a new virtual disk on this storage pool. If no default is specified, the default is inherited from the primordial pool.") : Amended ToSubclass,Values{"Unspecified", "HDD", "SSD", "SCM"} : Amended ToSubclass] uint16 MediaTypeDefault,[In,Description("This parameter indicates the default logical sector size for the storage pool. This is useful when a storage pool may contain a mix of 512 emulated and either 4K native or 512 native physical disks.") : Amended ToSubclass,Units("Bytes") : Amended ToSubclass] uint64 LogicalSectorSizeDefault,[In,Description("This parameter indicates the default allocation policy for virtual disks created in an enclosure aware storage pool. For example, an enclosure aware subsystem could balance each data copy of the virtual disk across multiple physical enclosures such that each enclosure contains a full data copy of the virtual disk.") : Amended ToSubclass] boolean EnclosureAwareDefault,[In,Description("Determines the default allocation behavior for virtual disks created in this pool. Fault domain aware virtual disks will intelligently pick the physical disks to use for their redundancy to balance the fault tolerance between two (or more) fault domain units of the specified type.") : Amended ToSubclass] uint16 FaultDomainAwarenessDefault,[In,Description("Default size of write cache for virtual disk creation") : Amended ToSubclass] uint64 WriteCacheSizeDefault,[In,Description("Indicates if provider should pick up the auto write cache size or not") : Amended ToSubclass] boolean AutoWriteCacheSize,[In,Description("Denotes the version of the storage pool.") : Amended ToSubclass,Values{"WindowsServer2012", "WindowsServer2012R2", "WindowsServer2016", "WindowsServer2016RS3", "WindowsServer2019", "WindowsServer2022"} : Amended ToSubclass] uint16 Version,[In,Description("This parameter controls the asynchronous behavior the method will follow.\nIf TRUE, this method will make use of the CreatedStorageJob out parameter when the request is taking a long time to service. If a storage job has been created to track the operation, this method will return 4096 - 'Method Parameters Checked - Job Started'. Note, even if RunAsJob is TRUE, the method can still return a result if it has finished in sufficient time. \nIf FALSE or NULL, this method will follow default WMI asynchronous behavior as determined by the client's method for invocation (i.e. synchronous unless requested otherwise).") : Amended ToSubclass] boolean RunAsJob,[Out] MSFT_StoragePool CreatedStoragePool,[Out,Description("If RunAsJob is set to TRUE and this method takes a while to execute, this parameter returns a reference to the storage job used to track the long running operation.") : Amended ToSubclass] MSFT_StorageJob Ref CreatedStorageJob,[Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("This method allows for the creation of virtual disks on a storage subsystem. This method is typically used when either a) the subsystem's storage pools do not allow virtual disk creation directly, or b) the subsystem does not support storage pools. Storage Management Providers may also choose to implement this method to 'intelligently' pick a storage pool for the user. If this method is supported, the subsystem's SupportsAutomaticStoragePoolSelection property should be set to TRUE.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Method Parameters Checked - Job Started", "Size Not Supported", "Not enough available capacity", "Access denied", "There are not enough resources to complete the operation.", "Cache out of date", "You must specify a size by using either the Size or the UseMaximumSize parameter. You can specify only one of these parameters at a time.", "You must specify the enclosure awareness (either the IsEnclosureAware or EnclosureAwareDefault parameter) or the fault domain awareness (either the FaultDomainAwareness or FaultDomainAwarenessDefault parameter), but not both.", "The provider does not support a value for fault domain awareness other than physical disk or storage enclosure.", "Cannot connect to the storage provider.", "The storage provider cannot connect to the storage subsystem.", "No storage pools were found that can support this virtual disk configuration.", "The value for NoSinglePointOfFailure is not supported.", "The value for PhysicalDiskRedundancy is outside of the supported range of values.", "The value for NumberOfDataCopies is outside of the supported range of values.", "The value for ParityLayout is outside of the supported range of values.", "The value for Interleave is outside of the supported range of values.", "The value for NumberOfColumns is outside of the supported range of values."} : Amended ToSubclass] uint32 CreateVirtualDisk([In,Description("This parameter allows the user to specify the desired FriendlyName at the time of the virtual disk creation. FriendlyNames are expected to be descriptive, however they are not required to be unique. Note that some storage subsystems do not allow setting a friendly name during virtual disk creation. If a subsystem doesn't support this, virtual disk creation should still succeed, however the disk may have a different name assigned to it.") : Amended ToSubclass] string FriendlyName,[In,Description("Denotes the intended usage of the virtual disk") : Amended ToSubclass,Values{"Other", "Unrestricted", "Reserved for ComputerSystem (the block server)", "Reserved by Replication Services", "Reserved by Migration Services", "Local Replica Source", "Remote Replica Source", "Local Replica Target", "Remote Replica Target", "Local Replica Source or Target", "Remote Replica Source or Target", "Delta Replica Target", "Element Component", "Reserved as Pool Contributor", "Composite Volume Member", "Composite VirtualDisk Member", "Reserved for Sparing"} : Amended ToSubclass] uint16 Usage,[In,Description("Allows a user to set a custom usage type for the new virtual disk object. This parameter can only be specified if the Usage parameter is set to 1 - 'Other'. ") : Amended ToSubclass] string OtherUsageDescription,[in,out,Description("Indicates the desired size for the virtual disk. Note that some storage subsystems will round the size up or down to a multiple of its allocation unit size. If this parameter is specified, UseMaximumSize must be NULL or FALSE.") : Amended ToSubclass,Units("Bytes") : Amended ToSubclass] uint64 Size,[In,Description("Create a virtual disk using the largest supported size. This parameter cannot be used with the Size parameter.") : Amended ToSubclass] boolean UseMaximumSize,[In,Description("Specifies the number of complete data copies to maintain for this virtual disk.") : Amended ToSubclass] uint16 NumberOfDataCopies,[In,Description("Specifies how many physical disk failures the virtual disk should be able to withstand before data loss occurs.") : Amended ToSubclass] uint16 PhysicalDiskRedundancy,[In,Description("Specifies the number of underlying physical disks across which data should be striped.") : Amended ToSubclass] uint16 NumberOfColumns,[In,Description("Specifies the number of bytes used to form a strip in common striping-based resiliency settings. The strip is defined as the size of the portion of a stripe that lies on one physical disk. Thus Interleave * NumberOfColumns will yield the total size of one stripe.") : Amended ToSubclass] uint64 Interleave,[In,Description("This field specifies whether a parity-based resiliency setting is using a rotated or non-rotated parity layout. If the resiliency setting is not parity based, this field must be set to NULL") : Amended ToSubclass,Values{"Non-rotated Parity", "Rotated Parity"} : Amended ToSubclass] uint16 ParityLayout,[In] boolean RequestNoSinglePointOfFailure,[In,Description("Determines the allocation behavior for this virtual disk. Enclosure aware virtual disks will intelligently pick the physical disks to use for their redundancy. If TRUE, the virtual disk will attempt to use physical disks from different enclosures to balance the fault tolerance between two (or more) physical enclosures.") : Amended ToSubclass] boolean IsEnclosureAware,[In,Description("Determines the allocation behavior for this virtual disk. Fault domain aware virtual disks will intelligently pick the physical disks to use for their redundancy to balance the fault tolerance between two (or more) fault domain units of the specified type.") : Amended ToSubclass] uint16 FaultDomainAwareness,[In,Description("Denotes the provisioning type of the virtual disk. A value of 1 - 'Thin' means that the storage for the disk is allocated on-demand. A value of 2 - 'Fixed' means that the storage is allocated up front.") : Amended ToSubclass,Values{"Thin", "Fixed"} : Amended ToSubclass] uint16 ProvisioningType,[In,Description("This parameter controls the asynchronous behavior the method will follow.\nIf TRUE, this method will make use of the CreatedStorageJob out parameter when the request is taking a long time to service. If a storage job has been created to track the operation, this method will return 4096 - 'Method Parameters Checked - Job Started'. Note, even if RunAsJob is TRUE, the method can still return a result if it has finished in sufficient time. \nIf FALSE or NULL, this method will follow default WMI asynchronous behavior as determined by the client's method for invocation (i.e. synchronous unless requested otherwise).") : Amended ToSubclass] boolean RunAsJob,[Out] MSFT_VirtualDisk CreatedVirtualDisk,[Out,Description("If RunAsJob is set to TRUE and this method takes a while to execute, this parameter returns a reference to the storage job used to track the long running operation.") : Amended ToSubclass] MSFT_StorageJob Ref CreatedStorageJob,[Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("Creates logical grouping of virtual disks, target ports, and initiators for the purpose of showing virtual disks to host systems.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Method Parameters Checked - Job Started", "Access denied", "There are not enough resources to complete the operation.", "Cannot connect to the storage provider.", "The storage provider cannot connect to the storage subsystem.", "The specified virtual disk could not be found.", "The device number specified is not valid.", "The HostType requested is not supported.", "DeviceAccess must be specified for each virtual disk.", "The initiator address specified is not valid", "Only one initiator address is acceptable for this operation.", "The target port address specified is not valid."} : Amended ToSubclass] uint32 CreateMaskingSet([In,Description("This parameter allows the user to specify the desired FriendlyName for the masking set at the time of its creation. FriendlyNames are expected to be descriptive, however they are not requried to be unique.") : Amended ToSubclass] string FriendlyName,[In,Description("This parameter specifies the list of virtual disks to show to the initiators in the masking set. The identifier used by this parameter is the virtual disk Name property. This parameter has a 1:1 mapping with the DeviceAccesses parameter (the arrays must be the same length and have the same order).") : Amended ToSubclass] string VirtualDiskNames[],[In,Description("This parameter specifies the level of access the initiator should have to each virtual disk specified by VirtualDiskNames. This parameter has a 1:1 mapping with the VirtualDiskNames parameter (the arrays must be the same length and have the same order).") : Amended ToSubclass,Values{"Unknown", "Read Write", "Read-Only", "No Access"} : Amended ToSubclass] uint16 DeviceAccesses[],[In,Description("Specifies the order in which the virtual disks should be exposed to the initiator. This capability is only available if the storage subsystem's MaskingClientSelectableDeviceNumbers property is set to TRUE. If specified, this parameter must have a 1:1 mapping with the VirtualDiskNames parameter.") : Amended ToSubclass] string DeviceNumbers[],[In,Description("This parameter specifies the target ports which should be used when showing the virtual disks to the initiators. The number of target ports that can be specified depends on the subsystem's MaskingPortsPerView property. If MaskingPortsPerView is set to 4 - 'All target ports share the same view', this parameter is essentially ignored as all target ports on the system will be associated with this masking set.") : Amended ToSubclass] string TargetPortAddresses[],[In,Description("This parameter specifies the initiators for which the virtual disks should be shown. If the subsystem's MaskingOneInitiatorIdPerView property is TRUE, only one initiator can be specified for this masking set. The list of valid initiator address formats can be determined through the subsystem's MaskingValidInitiatorIdTypes property.") : Amended ToSubclass] string InitiatorAddresses[],[In,Description("Designates the host operating system or other host environment factors that may influence the behavior the storage subsystem should take when showing a virtual disk to an initiator.") : Amended ToSubclass,Values{"Unknown", "Other", "Standard", "Solaris", "HPUX", "OpenVMS", "Tru64", "Netware", "Sequent", "AIX", "DGUX", "Dynix", "Irix", "Cisco iSCSI Storage Router", "Linux", "Microsoft Windows", "OS400", "TRESPASS", "HI-UX", "VMware ESXi", "Microsoft Windows Server 2008", "Microsoft Windows Server 2003", "DMTF Reserved", "Vendor Specific"} : Amended ToSubclass] uint16 HostType,[In,Description("This parameter controls the asynchronous behavior the method will follow.\nIf TRUE, this method will make use of the CreatedStorageJob out parameter when the request is taking a long time to service. If a storage job has been created to track the operation, this method will return 4096 - 'Method Parameters Checked - Job Started'. Note, even if RunAsJob is TRUE, the method can still return a result if it has finished in sufficient time. \nIf FALSE or NULL, this method will follow default WMI asynchronous behavior as determined by the client's method for invocation (i.e. synchronous unless requested otherwise).") : Amended ToSubclass] boolean RunAsJob,[Out,Description("If RunAsJob is set to TRUE and this method takes a while to execute, this parameter returns a reference to the storage job used to track the long running operation.") : Amended ToSubclass] MSFT_StorageJob Ref CreatedStorageJob,[Out] MSFT_MaskingSet CreatedMaskingSet,[Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("This method returns the security descriptor that controls access to this specific object instance.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Access denied", "There are not enough resources to complete the operation.", "Cannot connect to the storage provider.", "The storage provider cannot connect to the storage subsystem."} : Amended ToSubclass] uint32 GetSecurityDescriptor([Out,Description("A Security Descriptor Definition Language (SDDL) formed string describing the access control list of the object.") : Amended ToSubclass] string SecurityDescriptor,[Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("This method allows a user with sufficient privileges to set the security descriptor that control access to this specific object instance. If the call is not made in the context of a user specified in the security descriptor's access control list, this method will fail with 40001 - 'Access Denied'. If an empty security descriptor is passed to this function, the behavior is left to the specific implementation so long as there is some user context (typically domain administrators) that can access and administer the object.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Access denied", "There are not enough resources to complete the operation.", "Cannot connect to the storage provider.", "The storage provider cannot connect to the storage subsystem."} : Amended ToSubclass] uint32 SetSecurityDescriptor([In,Description("A Security Descriptor Definition Language (SDDL) formed string describing the desired access control list for this object.") : Amended ToSubclass] string SecurityDescriptor,[Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("This method allows a user to set the description field of the storage subsystem.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Access denied", "There are not enough resources to complete the operation.", "Cannot connect to the storage provider.", "The storage provider cannot connect to the storage subsystem."} : Amended ToSubclass] uint32 SetDescription([In] string Description,[Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("This method allows a user to update or set various defaults on the storage subsystem. Note that not all parameters must be specified, and only those given will be updated.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Access denied", "There are not enough resources to complete the operation.", "The provider does not support the fault domain awareness parameter.", "Cannot connect to the storage provider.", "The storage provider cannot connect to the storage subsystem."} : Amended ToSubclass] uint32 SetAttributes([In,Description("This parameter indicates whether objects in this subsystem are automatically clustered.") : Amended ToSubclass] boolean AutomaticClusteringEnabled,[In,Description("This parameter indicates whether repair is enabled on virtual disks in this subsystem.") : Amended ToSubclass] boolean VirtualDiskRepairEnabled,[In,Description("This parameter indicates the virtual disk repair queue depth policy in this subsystem.") : Amended ToSubclass] uint32 VirtualDiskRepairQueueDepth,[In,Description("This parameter indicates the default allocation policy for storage pools created in this subsystem. If the subsystem does not support storage pool creation, then it determines the default allocation behavior for virtual disks created in this subsystem.") : Amended ToSubclass,Values{"PhysicalDisk", "StorageEnclosure", "StorageScaleUnit", "StorageChassis", "StorageRack"} : Amended ToSubclass] uint16 FaultDomainAwarenessDefault,[Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("This method allows for the creation of two replication groups and a replication relationship between them. This method requires the subsystem to support fully discovered replication.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Object Not Found", "Method Parameters Checked - Job Started", "Access denied", "There are not enough resources to complete the operation.", "Cache out of date", "The operation is not supported while the cluster is being upgraded."} : Amended ToSubclass] uint32 CreateReplicationRelationship([In,Description("A user relevant name for the relationship between the source and target groups or between a source element and a target group (i.e. one-to-many). If NULL, the implementation assigns a name. If the individual target elements require an ElementName, the implementation constructs an appropriate ElementName using the RelationshipName. For example, RelationshipName as a prefix followed by \"_n\" sequence number, where n is a number beginning with 1.") : Amended ToSubclass] string FriendlyName,[In,Description("SyncType describes the type of copy that will be made.") : Amended ToSubclass,Values{"DMTF Reserved", "Mirror", "Snapshot", "Clone", "TokenizedClone", "DMTF Reserved", "Vendor Specific"} : Amended ToSubclass] uint16 SyncType,[In,Description("This parameter allows the user to specify the replica target subsystem when setting up a relationship with another subsystem.") : Amended ToSubclass] MSFT_ReplicaPeer TargetStorageSubsystem,[In,Description("Name of the source Replication Group to be created.") : Amended ToSubclass] string SourceReplicationGroupFriendlyName,[In,Description("A brief description of the purpose of Replication Group.") : Amended ToSubclass] string SourceReplicationGroupDescription,[In,Description("An ordered list of storage objects that are to be a part of the source Replication Group.") : Amended ToSubclass] MSFT_StorageObject SourceStorageElements[],[In,Description("Settings to be applied to source Replication Group.") : Amended ToSubclass] MSFT_ReplicationSettings SourceGroupSettings,[In,Description("Name of the target Replication Group to be created.") : Amended ToSubclass] string TargetReplicationGroupFriendlyName,[In,Description("A brief description of the purpose of Replication Group.") : Amended ToSubclass] string TargetReplicationGroupDescription,[In,Description("An ordered list of storage objects that are to be a part of the target Replication Group.") : Amended ToSubclass] MSFT_StorageObject TargetStorageElements[],[In,Description("A storage pool on the target to be used as the source for creating the necessary TargetStorageElements. This parameter can be specified in lieu of TargetStorageElements.") : Amended ToSubclass] MSFT_StoragePool TargetStoragePool,[In,Description("The underlying storage for the target elements (the replicas) will be drawn from TargetStoragePool if specified, otherwise the allocation is implementation specific. If target elements are supplied, this parameter shall be NULL.supplied, this parameter shall be NULL. \nIf TargetStoragePools supplied, TargetStoragePool shall be NULL.") : Amended ToSubclass] MSFT_StoragePool TargetStoragePools[],[In,Description("Settings to be applied to target Replication Group.") : Amended ToSubclass] MSFT_ReplicationSettings TargetGroupSettings,[In,Description("Recovery Point Objective indicates the maximum interval in which data might be lost. For synchronous copy operations, RPO is 0. For asynchronous copy operations RPO represents the interval since the most recent transmission of data to the target element.") : Amended ToSubclass] uint32 RecoveryPointObjective,[In,Description("This parameter controls the asynchronous behavior the method will follow.\nIf TRUE, this method will make use of the CreatedStorageJob out parameter when the request is taking a long time to service. If a storage job has been created to track the operation, this method will return 4096 - 'Method Parameters Checked - Job Started'. Note, even if RunAsJob is TRUE, the method can still return a result if it has finished in sufficient time. \nIf FALSE or NULL, this method will follow default WMI asynchronous behavior as determined by the client's method for invocation (i.e. synchronous unless requested otherwise).") : Amended ToSubclass] boolean RunAsJob,[in,out] MSFT_ReplicationGroup SourceGroup,[In] MSFT_ReplicationGroup TargetGroup,[Out] MSFT_ReplicaPeer CreatedReplicaPeer,[Out,Description("If RunAsJob is set to TRUE and this method takes a while to execute, this parameter returns a reference to the storage job used to track the long running operation.") : Amended ToSubclass] MSFT_StorageJob Ref CreatedStorageJob,[Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("This method allows for the deletion of a replication relationship between groups. The groups themselves will be deleted if they have no more relationships with other groups; however this does not apply for SMI-S, the group may still exist. ") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Access denied", "There are not enough resources to complete the operation.", "Cannot connect to the storage provider.", "The storage provider cannot connect to the storage subsystem."} : Amended ToSubclass] uint32 DeleteReplicationRelationship([In,Description("This parameter is used to specify the target replication group.") : Amended ToSubclass] MSFT_ReplicationGroup SourceReplicationGroup,[In,Description("This parameter is used to specify the target replication group.") : Amended ToSubclass] MSFT_ReplicaPeer TargetGroupReplicaPeer,[In,Description("This parameter controls the asynchronous behavior the method will follow.\nIf TRUE, this method will make use of the CreatedStorageJob out parameter when the request is taking a long time to service. If a storage job has been created to track the operation, this method will return 4096 - 'Method Parameters Checked - Job Started'. Note, even if RunAsJob is TRUE, the method can still return a result if it has finished in sufficient time. \nIf FALSE or NULL, this method will follow default WMI asynchronous behavior as determined by the client's method for invocation (i.e. synchronous unless requested otherwise).") : Amended ToSubclass] boolean RunAsJob,[Out,Description("If RunAsJob is set to TRUE and this method takes a while to execute, this parameter returns a reference to the storage job used to track the long running operation.") : Amended ToSubclass] MSFT_StorageJob Ref CreatedStorageJob,[Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("This method allows for the creation of a replication group on a storage subsystem.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Object Not Found", "Method Parameters Checked - Job Started", "Access denied", "There are not enough resources to complete the operation.", "Cache out of date", "The operation is not supported while the cluster is being upgraded.", "This is not a supported replication scenario.", "Not enough storage objects were specified to successfully complete the operation.", "Required field of replication group name is missing from input.", "Required field of replication settings is missing from input.", "Required field of log device is missing from input.", "One of specified volumes is not eligible to be a log volume.", "Log size from input is not a valid log size.", "Replication quorum is not allowed to be set to this value.", "Sync mode is not allowed to be set to this value.", "Fail to create replication group.", "There is not storage element specified in input.", "Partition access path is not available for replication group.", "Unable to retrieve replication group id right now."} : Amended ToSubclass] uint32 CreateReplicationGroup([In,Description("A user-friendly string representing the name of the replication group. Friendly name can be set using the SetFriendlyName method.") : Amended ToSubclass] string FriendlyName,[In,Description("A brief description of the purpose of Replication Group.") : Amended ToSubclass] string Description,[In,Description("Specifies an array of storage objects of the same type that are the source elements to be replicated. The ordering of this arrary determines the consistency ordering of the element replicas.") : Amended ToSubclass] MSFT_StorageObject StorageElements[],[In,Description("Settings to be applied to source Replication Group.") : Amended ToSubclass] MSFT_ReplicationSettings ReplicationSettings,[In,Description("This parameter controls the asynchronous behavior the method will follow.\nIf TRUE, this method will make use of the CreatedStorageJob out parameter when the request is taking a long time to service. If a storage job has been created to track the operation, this method will return 4096 - 'Method Parameters Checked - Job Started'. Note, even if RunAsJob is TRUE, the method can still return a result if it has finished in sufficient time. \nIf FALSE or NULL, this method will follow default WMI asynchronous behavior as determined by the client's method for invocation (i.e. synchronous unless requested otherwise).") : Amended ToSubclass] boolean RunAsJob,[Out,Description("If RunAsJob is set to TRUE and this method takes a while to execute, this parameter returns a reference to the storage job used to track the long running operation.") : Amended ToSubclass] MSFT_StorageJob Ref CreatedStorageJob,[Out] MSFT_ReplicationGroup CreatedReplicationGroup,[Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("This method allows for the creation of a file server on a storage subsystem.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Object Not Found", "Method Parameters Checked - Job Started", "Access denied", "There are not enough resources to complete the operation.", "Cache out of date", "The operation is not supported while the cluster is being upgraded.", "You must specify a host name for this file server.", "You must specify a sharing protocol for this file server.", "The Scale-Out File Server cluster role is not installed.", "This operation is not supported for local file servers.", "The host name is already in use.", "The host name is invalid.", "The specified sharing protocol is not supported."} : Amended ToSubclass] uint32 CreateFileServer([In,Description("This parameter allows the user to specify the FriendlyName at the time of the file server creation. FriendlyNames are expected to be descriptive, however they are not required to be unique. Note that some storage subsystems do not allow setting a friendly name during file server creation. If a subsystem doesn't support this, file server creation should still succeed, however the file server may have a different name assigned to it.") : Amended ToSubclass] string FriendlyName,[In,Description("The file sharing protocols supported by the file server.") : Amended ToSubclass,Values{"NFS", "CIFS(SMB)"} : Amended ToSubclass] uint16 FileSharingProtocols[],[In,Description("HostNames are semi-unique (scoped to the owning storage subsystem),human-readable strings used to identify a file server. There is a separate host name element per file sharing protocol. It is valid to specify the same name for different protocols.") : Amended ToSubclass] string HostNames[],[In,Description("This parameter controls the asynchronous behavior the method will follow.\nIf TRUE, this method will make use of the CreatedStorageJob out parameter when the request is taking a long time to service. If a storage job has been created to track the operation, this method will return 4096 - 'Method Parameters Checked - Job Started'. Note, even if RunAsJob is TRUE, the method can still return a result if it has finished in sufficient time. \nIf FALSE or NULL, this method will follow default WMI asynchronous behavior as determined by the client's method for invocation (i.e. synchronous unless requested otherwise).") : Amended ToSubclass] boolean RunAsJob,[Out] MSFT_FileServer CreatedFileServer,[Out,Description("If RunAsJob is set to TRUE and this method takes a while to execute, this parameter returns a reference to the storage job used to track the long running operation.") : Amended ToSubclass] MSFT_StorageJob Ref CreatedStorageJob,[Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("This method gathers all diagnostic information and logs that the Storage SubSystem maintains, and copies them to the path specified by the DestinationPath parameter.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Object Not Found", "Method Parameters Checked - Job Started", "Not enough available capacity", "Access denied", "There are not enough resources to complete the operation.", "The destination path is not accessible.", "Relative paths are not supported.", "Unable to create the destination path.", "Unable to capture a live dump of the storage subsystem.", "Unable to gather the operational log of the storage subsystem.", "One or more files failed to copy."} : Amended ToSubclass] uint32 GetDiagnosticInfo([In,Description("The path to store the collected logs. On a remote subsystem, this path must be accessible to the client (management) machine, and not necessarily the remote subsystem.") : Amended ToSubclass] string DestinationPath,[In,Description("This parameter sets a limit on how far back log messages should be gathered (in minutes). Default is that all logs will be gathered, no matter how old.") : Amended ToSubclass] uint32 TimeSpan,[In,Description("Gather only those log messages which correspond to a particular activity ID. This can be when an extended status message has been reported by an operation which supplies an ActivityId. It will help find log messages related to that extended status failure message.") : Amended ToSubclass] string ActivityId,[In] boolean ExcludeOperationalLog,[In] boolean ExcludeDiagnosticLog,[In] boolean IncludeLiveDump,[In] boolean CopyExistingInfoOnly,[Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("Clears any diagnostic information being stored by the storage subsystem. This does not clear or reset any logs; it only frees any temporary files used by the GetDiagnosticInfo command") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Object Not Found", "Method Parameters Checked - Job Started", "Not enough available capacity", "Access denied", "There are not enough resources to complete the operation."} : Amended ToSubclass] uint32 ClearDiagnosticInfo([Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("This method enables real-time diagnostic tracing for the Storage SubSystem. Tracing will remain on until DisableDiagnosticLog is called. Tracing may add some additional overhead to the subsystem, so only use it when trying to root-cause a failure that could not otherwise be solved. For most cases, you should only use this method when troubleshooting an issue with your storage subsystem vendor's support staff.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Object Not Found", "Method Parameters Checked - Job Started", "Not enough available capacity", "Access denied", "There are not enough resources to complete the operation.", "The diagnostic log has already been started for this storage subsystem.", "Exceeded the number of trace sessions that can enable the provider."} : Amended ToSubclass] uint32 StartDiagnosticLog([In,Description("Specifies the maximum level of trace messages to gather. Each subsequent level will include events from previous levels. (i.e. 5 - 'Verbose' will log all events.)") : Amended ToSubclass,Values{"Critical", "Error", "Warning", "Informational", "Verbose"} : Amended ToSubclass] uint16 Level,[In,Units("Bytes") : Amended ToSubclass] uint64 MaxLogSize,[Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("This method disables real-time diagnostic tracing for the Storage SubSystem.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Object Not Found", "Method Parameters Checked - Job Started", "Not enough available capacity", "Access denied", "There are not enough resources to complete the operation.", "The destination path is not accessible.", "No diagnostic logs were enabled for this storage subsystem."} : Amended ToSubclass] uint32 StopDiagnosticLog([Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("This method performs a diagnostic on the storage subsystem, returning any actionable results.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Method Parameters Checked - Job Started", "Access denied", "There are not enough resources to complete the operation.", "Cache out of date", "The operation is not supported while the cluster is being upgraded.", "Failed to communicate with cluster health resource", "Method not supported in this subsystem.", "The Storage Health is not online."} : Amended ToSubclass] uint32 Diagnose([Out,Description("The actionable results of diagnose.") : Amended ToSubclass] MSFT_StorageDiagnoseResult DiagnoseResults[],[Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("This method retrieved the Health Actions being perfomed on the Storage Subsystem.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Access denied", "There are not enough resources to complete the operation.", "Cache out of date", "The operation is not supported while the cluster is being upgraded.", "Failed to communicate with cluster health resource", "Method not supported in this subsystem.", "The Storage Health is not online."} : Amended ToSubclass] uint32 GetActions([Out,Description("Health Actions currently being performed on the File Share.") : Amended ToSubclass] MSFT_HealthAction ActionResults[],[Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

};



[ClassVersion("1.0") : Amended,Description("Association between StorageSubSystem and Disk") : Amended ToSubclass,AMENDMENT, LOCALE("MS_409")] 

class MSFT_StorageSubSystemToDisk

{

};



[ClassVersion("1.0") : Amended,Description("Association between a subsystem and its file server") : Amended ToSubclass,AMENDMENT, LOCALE("MS_409")] 

class MSFT_StorageSubSystemToFileServer

{

};



[ClassVersion("1.0") : Amended,Description("Association between a subsystem and its file shares") : Amended ToSubclass,AMENDMENT, LOCALE("MS_409")] 

class MSFT_StorageSubSystemToFileShare

{

};



[ClassVersion("1.0") : Amended,Description("Association between StorageSubSystem and InitiatorId") : Amended ToSubclass,AMENDMENT, LOCALE("MS_409")] 

class MSFT_StorageSubSystemToInitiatorId

{

};



[ClassVersion("1.0") : Amended,Description("Association between StorageSubSystem and MaskingSet") : Amended ToSubclass,AMENDMENT, LOCALE("MS_409")] 

class MSFT_StorageSubSystemToMaskingSet

{

};



[ClassVersion("1.0") : Amended,Description("Association between StorageSubSystem and OffloadDataTransferSettings") : Amended ToSubclass,AMENDMENT, LOCALE("MS_409")] 

class MSFT_StorageSubSystemToOffloadDataTransferSetting

{

};



[ClassVersion("1.0") : Amended,Description("Association between StorageSubSystem and Partition") : Amended ToSubclass,AMENDMENT, LOCALE("MS_409")] 

class MSFT_StorageSubSystemToPartition

{

};



[ClassVersion("1.0") : Amended,Description("Association between StorageSubSystem and PhysicalDisk. This association should include all physical disks that the subsystem is aware of.") : Amended ToSubclass,AMENDMENT, LOCALE("MS_409")] 

class MSFT_StorageSubSystemToPhysicalDisk

{

};



[ClassVersion("1.0") : Amended,Description("Association between a subsystem and replica peer") : Amended ToSubclass,AMENDMENT, LOCALE("MS_409")] 

class MSFT_StorageSubSystemToReplicaPeer

{

};



[ClassVersion("1.0") : Amended,Description("Association between a subsystem and replication capabilities") : Amended ToSubclass,AMENDMENT, LOCALE("MS_409")] 

class MSFT_StorageSubSystemToReplicationCapabilities

{

};



[ClassVersion("1.0") : Amended,Description("Association between a subsystem and replication group") : Amended ToSubclass,AMENDMENT, LOCALE("MS_409")] 

class MSFT_StorageSubSystemToReplicationGroup

{

};



[ClassVersion("1.0") : Amended,Description("Association between StorageSubSystem and StorageEnclosure") : Amended ToSubclass,AMENDMENT, LOCALE("MS_409")] 

class MSFT_StorageSubSystemToStorageEnclosure

{

};



[ClassVersion("1.0") : Amended,Description("Association between StorageSubSystem and StorageFaultDomain") : Amended ToSubclass,AMENDMENT, LOCALE("MS_409")] 

class MSFT_StorageSubSystemToStorageFaultDomain

{

};



[ClassVersion("1.0") : Amended,Description("Association between StorageSubSystem and StorageHealth") : Amended ToSubclass,AMENDMENT, LOCALE("MS_409")] 

class MSFT_StorageSubSystemToStorageHealth

{

};



[ClassVersion("1.0") : Amended,Description("Association between StorageSubSystem and StorageNode") : Amended ToSubclass,AMENDMENT, LOCALE("MS_409")] 

class MSFT_StorageSubSystemToStorageNode

{

};



[ClassVersion("1.0") : Amended,Description("Association between StorageSubSystem and StoragePool") : Amended ToSubclass,AMENDMENT, LOCALE("MS_409")] 

class MSFT_StorageSubSystemToStoragePool

{

};



[ClassVersion("1.0") : Amended,Description("Association between StorageSubSystem and TargetPort") : Amended ToSubclass,AMENDMENT, LOCALE("MS_409")] 

class MSFT_StorageSubSystemToTargetPort

{

};



[ClassVersion("1.0") : Amended,Description("Association between StorageSubsystem and TargetPortal") : Amended ToSubclass,AMENDMENT, LOCALE("MS_409")] 

class MSFT_StorageSubSystemToTargetPortal

{

};



[ClassVersion("1.0") : Amended,Description("Association between StorageSubSystem and VirtualDisk") : Amended ToSubclass,AMENDMENT, LOCALE("MS_409")] 

class MSFT_StorageSubSystemToVirtualDisk

{

};



[ClassVersion("1.0") : Amended,Description("Association between StorageSubSystem and Volume") : Amended ToSubclass,AMENDMENT, LOCALE("MS_409")] 

class MSFT_StorageSubSystemToVolume

{

};



[Description("A storage tier.") : Amended ToSubclass,ClassVersion("1.0") : Amended,AMENDMENT, LOCALE("MS_409")] 

class MSFT_StorageTier : MSFT_StorageObject

{

  [Description("Friendly name of the storage tier, defined by the user") : Amended ToSubclass] string FriendlyName;

  [Description("This field indicates the intended usage for this storage tier.") : Amended ToSubclass,Values{"Unknown", "Data", "Read Cache", "Cache Log", "Dirty Region Tracking", "Stripe State Tracking", "Valid Data Tracking", "Cache Lines"} : Amended ToSubclass] uint16 Usage;

  [Description("A user settable description of the storage tier") : Amended ToSubclass] string Description;

  [Description("Size of the tier on the virtual disk. This property is available only when the storage tier is part of a virtual disk. The property is unspecified for pool-level storage tiers.") : Amended ToSubclass] uint64 Size;

  [Description("The currently allocated size of the storage tier. If the storage tier's ProvisioningType is 2 - 'Fixed', this value should equal Size. If the ProvisioningType is 1 - 'Thin', this value is the amount of space actually allocated (i.e. some value less than Size).") : Amended ToSubclass,Units("Bytes") : Amended ToSubclass] uint64 AllocatedSize;

  [Description("This field indicates the total storage pool capacity being consumed by this storage tier. For example: in the case of a 2-way mirrored storage tier of size 1 GB, the footprint on the pool will be approximately 2 GB.") : Amended ToSubclass,Units("Bytes") : Amended ToSubclass] uint64 FootprintOnPool;

  [Description("Denotes the provisioning scheme of the storage tier. \n1 - 'Thin' indicates that the storage tier's capacity is allocated on demand. \n2 - 'Fixed' indicates that the storage tier's capacity is fully allocated upon creation. ") : Amended ToSubclass,Values{"Unknown", "Thin", "Fixed"} : Amended ToSubclass] uint16 ProvisioningType;

  [Description("Specifies the allocation unit size in bytes for this storage tier.") : Amended ToSubclass,Units("Bytes") : Amended ToSubclass] uint64 AllocationUnitSize;

  [Description("Media type of this storage tier") : Amended ToSubclass,Values{"Unspecified", "HDD", "SSD", "SCM"} : Amended ToSubclass] uint16 MediaType;

  [Description("Classification of this storage tier in the virtual disk") : Amended ToSubclass,Values{"Capacity", "Performance"} : Amended ToSubclass] uint16 TierClass;

  [Description("Determines the current allocation behavior for this storage tier. Fault domain aware storage tiers will intelligently pick the physical disks to use for their redundancy to balance the fault tolerance between two (or more) fault domain units of the specified type.") : Amended ToSubclass,Values{"PhysicalDisk", "StorageEnclosure", "StorageScaleUnit", "StorageChassis", "StorageRack"} : Amended ToSubclass] uint16 FaultDomainAwareness;

  [Description("Determines the fault domain type by which each column in this storage tier is isolated.") : Amended ToSubclass,Values{"PhysicalDisk", "StorageEnclosure", "StorageScaleUnit", "StorageChassis", "StorageRack"} : Amended ToSubclass] uint16 ColumnIsolation;

  [Description("The name of the resiliency setting used to create this storage tier.") : Amended ToSubclass] string ResiliencySettingName;

  [Description("This field indicates how many backing physical disks can fail without compromising data redundancy. For example: RAID 0 cannot tolerate any failures, RAID 5 can tolerate a single drive failure, and RAID 6 can tolerate 2 failures.") : Amended ToSubclass] uint16 PhysicalDiskRedundancy;

  [Description("This field indicates the number of complete data copies that are being maintained. For example, RAID 5 maintains 1 copy of data, whereas RAID 1 maintains at least 2 copies.") : Amended ToSubclass] uint16 NumberOfDataCopies;

  [Description("This field indicates the number of light parities to form for parity-based resiliency settings. If the resiliency setting is not parity-based, this field will be set to 1.") : Amended ToSubclass] uint16 NumberOfGroups;

  [Description("This field indicates the number of underlying physical disks across which data for this storage tier is striped.") : Amended ToSubclass] uint16 NumberOfColumns;

  [Description("This field indicates the number of bytes that will form a strip in common striping-based resiliency settings. The strip is defined as the size of the portion of a stripe that lies on one physical disk. Thus, Interleave * NumberOfColumns will yield the size of one stripe of user data.") : Amended ToSubclass] uint64 Interleave;

  [Description("This field indicates what type of parity layout is being used for parity resiliency settings. This field should be NULL if the storage tier does not use a parity resiliency setting.") : Amended ToSubclass,Values{"Non-rotated Parity", "Rotated Parity"} : Amended ToSubclass] uint16 ParityLayout;

  [Description("This method returns the physical extents spanned by the storage tier.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Access denied", "There are not enough resources to complete the operation.", "Cannot connect to the storage provider.", "The storage provider cannot connect to the storage subsystem."} : Amended ToSubclass] uint32 GetPhysicalExtent([Out,Description("Physical extents spanned by the storage tier.") : Amended ToSubclass] MSFT_PhysicalExtent PhysicalExtents[],[Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("This method deletes the storage tier. This method is available only when the SupportsStorageTierDeletion property on the storage subsystem is set to TRUE. If it is set to FALSE, this method will fail with MI_RESULT_NOT_SUPPORTED.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Access denied", "There are not enough resources to complete the operation.", "Cannot connect to the storage provider.", "The storage provider cannot connect to the storage subsystem.", "The storage pool could not complete the operation because its health or operational status does not permit it.", "The storage pool could not complete the operation because its configuration is read-only."} : Amended ToSubclass] uint32 DeleteObject([In,Description("This parameter controls the asynchronous behavior the method will follow.\nIf TRUE, this method will make use of the CreatedStorageJob out parameter when the request is taking a long time to service. If a storage job has been created to track the operation, this method will return 4096 - 'Method Parameters Checked - Job Started'. Note, even if RunAsJob is TRUE, the method can still return a result if it has finished in sufficient time. \nIf FALSE or NULL, this method will follow default WMI asynchronous behavior as determined by the client's method for invocation (i.e. synchronous unless requested otherwise).") : Amended ToSubclass] boolean RunAsJob,[Out,Description("If RunAsJob is set to TRUE and this method takes a while to execute, this parameter returns a reference to the storage job used to track the long running operation.") : Amended ToSubclass] MSFT_StorageJob Ref CreatedStorageJob,[Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("Resizes the storage tier on the virtual disk. This method is not available for pool-level storage tiers.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Not enough available capacity", "Access denied", "There are not enough resources to complete the operation.", "Cannot connect to the storage provider.", "The storage provider cannot connect to the storage subsystem.", "The storage pool could not complete the operation because its health or operational status does not permit it.", "The storage pool could not complete the operation because its configuration is read-only."} : Amended ToSubclass] uint32 Resize([in,out] uint64 Size,[In,Description("This parameter controls the asynchronous behavior the method will follow.\nIf TRUE, this method will make use of the CreatedStorageJob out parameter when the request is taking a long time to service. If a storage job has been created to track the operation, this method will return 4096 - 'Method Parameters Checked - Job Started'. Note, even if RunAsJob is TRUE, the method can still return a result if it has finished in sufficient time. \nIf FALSE or NULL, this method will follow default WMI asynchronous behavior as determined by the client's method for invocation (i.e. synchronous unless requested otherwise).") : Amended ToSubclass] boolean RunAsJob,[Out,Description("If RunAsJob is set to TRUE and this method takes a while to execute, this parameter returns a reference to the storage job used to track the long running operation.") : Amended ToSubclass] MSFT_StorageJob Ref CreatedStorageJob,[Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("This method allows the storage tier to be renamed.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Access denied", "There are not enough resources to complete the operation.", "Cannot connect to the storage provider.", "The storage provider cannot connect to the storage subsystem.", "The storage pool could not complete the operation because its health or operational status does not permit it.", "The storage pool could not complete the operation because its configuration is read-only."} : Amended ToSubclass] uint32 SetFriendlyName([In] string FriendlyName,[Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("This method allows the user to update or set various attributes on the storage tier. Note that not all parameters must be specified, and only those given will be updated.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Access denied", "There are not enough resources to complete the operation.", "Cannot connect to the storage provider.", "The storage provider cannot connect to the storage subsystem.", "The storage pool could not complete the operation because its health or operational status does not permit it.", "The storage pool could not complete the operation because its configuration is read-only.", "No resiliency setting with that name exists.", "The value for PhysicalDiskRedundancy is outside of the supported range of values.", "The value for NumberOfDataCopies is outside of the supported range of values.", "The value for Interleave is outside of the supported range of values.", "The value for NumberOfColumns is outside of the supported range of values.", "The value for NumberOfGroups is outside of the supported range of values.", "The specified ProvisioningType is not supported.", "The specified FaultDomainAwareness, ColumnIsolation, or both are not valid."} : Amended ToSubclass] uint32 SetAttributes([In,Values{"Thin", "Fixed"} : Amended ToSubclass] uint16 ProvisioningType,[In] uint64 AllocationUnitSize,[In,Description("Media type of this storage tier") : Amended ToSubclass,Values{"HDD", "SSD", "SCM"} : Amended ToSubclass] uint16 MediaType,[In,Values{"PhysicalDisk", "StorageEnclosure", "StorageScaleUnit", "StorageChassis", "StorageRack"} : Amended ToSubclass] uint16 FaultDomainAwareness,[In,Values{"PhysicalDisk", "StorageEnclosure", "StorageScaleUnit", "StorageChassis", "StorageRack"} : Amended ToSubclass] uint16 ColumnIsolation,[In] string ResiliencySettingName,[In,Values{"Unknown", "Data", "Read Cache", "Cache Log", "Dirty Region Tracking", "Stripe State Tracking", "Valid Data Tracking", "Cache Lines"} : Amended ToSubclass] uint16 Usage,[In] uint16 PhysicalDiskRedundancy,[In] uint16 NumberOfDataCopies,[In] uint16 NumberOfGroups,[In] uint16 NumberOfColumns,[In] uint64 Interleave,[Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("This method allows the storage tier's description to be changed.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Access denied", "There are not enough resources to complete the operation.", "Cannot connect to the storage provider.", "The storage provider cannot connect to the storage subsystem.", "The storage pool could not complete the operation because its health or operational status does not permit it.", "The storage pool could not complete the operation because its configuration is read-only."} : Amended ToSubclass] uint32 SetDescription([In] string Description,[Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("This method returns the supported sizes for a new storage tier. These sizes can either be returned in an array of all supported sizes, through a min, max, and divisor, or both.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Access denied", "There are not enough resources to complete the operation.", "Cache out of date", "Cannot connect to the storage provider.", "The storage provider cannot connect to the storage subsystem."} : Amended ToSubclass] uint32 GetSupportedSize([In,Description("Specifies the name of the resiliency setting that should be used when determining the supported sizes. Note that the sizes returned may be different depending on the resiliency setting.") : Amended ToSubclass] string ResiliencySettingName,[Out,Description("This output parameter will contain an array of all of the supported sizes for the storage tier. This parameter may be NULL if the number of supported sizes is large, but is useful for storage tiers that only support a select number of tier sizes.") : Amended ToSubclass,Units("Bytes") : Amended ToSubclass] uint64 SupportedSizes[],[Out,Description("This parameter denotes the minimum supported size that a tier created in this pool can be.") : Amended ToSubclass,Units("Bytes") : Amended ToSubclass] uint64 TierSizeMin,[Out,Description("This parameter denotes the maximum supported size that a tier created in this pool can be.") : Amended ToSubclass,Units("Bytes") : Amended ToSubclass] uint64 TierSizeMax,[Out,Description("This parameter indicates the interval in which the supported sizes increment. For example: If the minimum supported size is 10 GB, and this parameter is 2 GB, then the supported sizes for this pool would be 10 GB, 12 GB, 14 GB, etc. until the maximum supported size is reached.") : Amended ToSubclass,Units("Bytes") : Amended ToSubclass] uint64 TierSizeDivisor,[Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("This method adds one or more storage fault domains for manual allocation.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Method Parameters Checked - Job Started", "Access denied", "There are not enough resources to complete the operation.", "Cache out of date", "Cannot connect to the storage provider.", "The storage provider cannot connect to the storage subsystem.", "The storage pool could not complete the operation because its health or operational status does not permit it.", "The storage pool could not complete the operation because its configuration is read-only."} : Amended ToSubclass] uint32 AddStorageFaultDomain([In] MSFT_StorageFaultDomain StorageFaultDomains[],[In,Description("This parameter controls the asynchronous behavior the method will follow.\nIf TRUE, this method will make use of the CreatedStorageJob out parameter when the request is taking a long time to service. If a storage job has been created to track the operation, this method will return 4096 - 'Method Parameters Checked - Job Started'. Note, even if RunAsJob is TRUE, the method can still return a result if it has finished in sufficient time. \nIf FALSE or NULL, this method will follow default WMI asynchronous behavior as determined by the client's method for invocation (i.e. synchronous unless requested otherwise).") : Amended ToSubclass] boolean RunAsJob,[Out,Description("If RunAsJob is set to TRUE and this method takes a while to execute, this parameter returns a reference to the storage job used to track the long running operation.") : Amended ToSubclass] MSFT_StorageJob Ref CreatedStorageJob,[Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("This method removes one or more storage fault domains from manual allocation.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Method Parameters Checked - Job Started", "Access denied", "There are not enough resources to complete the operation.", "Cache out of date", "Cannot connect to the storage provider.", "The storage provider cannot connect to the storage subsystem.", "The storage pool could not complete the operation because its health or operational status does not permit it.", "The storage pool could not complete the operation because its configuration is read-only."} : Amended ToSubclass] uint32 RemoveStorageFaultDomain([In] MSFT_StorageFaultDomain StorageFaultDomains[],[In,Description("This parameter controls the asynchronous behavior the method will follow.\nIf TRUE, this method will make use of the CreatedStorageJob out parameter when the request is taking a long time to service. If a storage job has been created to track the operation, this method will return 4096 - 'Method Parameters Checked - Job Started'. Note, even if RunAsJob is TRUE, the method can still return a result if it has finished in sufficient time. \nIf FALSE or NULL, this method will follow default WMI asynchronous behavior as determined by the client's method for invocation (i.e. synchronous unless requested otherwise).") : Amended ToSubclass] boolean RunAsJob,[Out,Description("If RunAsJob is set to TRUE and this method takes a while to execute, this parameter returns a reference to the storage job used to track the long running operation.") : Amended ToSubclass] MSFT_StorageJob Ref CreatedStorageJob,[Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

};



[Description("A target port represents an instance of an endpoint in a storage subsystem with associated properties for showing and hiding virtual disks. Fibre Channel, Serial Attached SCSI, or iSCSI ports within a storage subsystem controller are all examples of target ports.") : Amended ToSubclass,ClassVersion("1.0") : Amended,AMENDMENT, LOCALE("MS_409")] 

class MSFT_TargetPort : MSFT_StorageObject

{

  [Description("FriendlyName is a user-friendly name of the target port.") : Amended ToSubclass] string FriendlyName;

  [Description("This field is the node identifier / address. \nFor Fibre Channel networks, this field should be the World-Wide Name (WWN) for the port, formatted as a hexadecimal string (16 characters long), with the most significant byte first. For example, a WWN address of 01:23:45:67:89:AB:CD:EF should be represented as 0123456789ABCDEF. \nFor iSCSI networks, this field should be the IQN.") : Amended ToSubclass] string NodeAddress;

  [Description("The identifier of the controller to which this port belongs") : Amended ToSubclass] string StorageControllerId;

  [Description("Denotes the role of this controller port. For iSCSI, this port must act as either a target or an initiator endpoint. Other transports allow a port to act as both an initiator and a target.") : Amended ToSubclass,Values{"Unknown", "Initiator", "Target", "Both Initiator and Target"} : Amended ToSubclass] uint16 Role;

  [Description("In some circumstances, a target port may be identifiable as a front-end or back-end port. For example: a storage array might have back-end ports to communicate with physical disks, and front-end ports to communicate with hosts. If there is no restriction on the use of the port, then the value should be set to 4 - 'Not restricted'.") : Amended ToSubclass,Values{"Unknown", "Front-end only", "Back-end only", "Not restricted"} : Amended ToSubclass] uint16 UsageRestriction;

  [Values{"Healthy", "Warning", "Unhealthy"} : Amended ToSubclass] uint16 HealthStatus;

  [Description("Indicates the current operating status of the target port.") : Amended ToSubclass,Values{"Unknown", "Other", "OK", "Degraded", "Stressed", "Predictive Failure", "Error", "Non-Recoverable Error", "Starting", "Stopping", "Stopped", "In Service", "No Contact", "Lost Communication", "Aborted", "Dormant", "Supporting Entity in Error", "Completed", "Power Mode", "Relocating", "Microsoft Reserved"} : Amended ToSubclass] uint16 OperationalStatus[];

  [Description("A string representation of the vendor defined operational status. This field should only be set if the OperationalStatus array contains 1 - 'Other'.") : Amended ToSubclass] string OtherOperationalStatusDescription;

  [Values{"Other", "Fibre Channel", "Parallel SCSI", "SSA", "IEEE 1394", "RDMA", "iSCSI", "SAS", "ADT"} : Amended ToSubclass] uint16 ConnectionType;

  [Description("A string representation of the vendor defined connection type. This field should only be set if ConnectionType is set to 1 - 'Other'.") : Amended ToSubclass] string OtherConnectionTypeDescription;

  [Values{"Unknown", "Other", "Ethernet", "IB", "FC", "FDDI", "ATM", "Token Ring", "Frame Relay", "Infrared", "Bluetooth", "Wireless LAN", "Microsoft Reserved"} : Amended ToSubclass] uint16 LinkTechnology;

  [Description("A string representation of the vendor defined link technology. This field should only be set if LinkTechnology is set to 1 - 'Other'.") : Amended ToSubclass] string OtherLinkTechnology;

  [Description("The current bandwidth of the port in bits per second. For ports that vary in bandwidth or for those where no accurate estimation can be made, this property should contain the nominal bandwidth for the port.") : Amended ToSubclass,Units("bits/sec") : Amended ToSubclass] uint64 Speed;

  [Description("The maximum bandwidth of the port in bits per second") : Amended ToSubclass,Units("bits/sec") : Amended ToSubclass] uint64 MaxSpeed;

  [Description("An array of strings that represent the various network addresses for the target port. The type and format of these addresses depend on the PortType.") : Amended ToSubclass] string NetworkAddresses[];

  [Description("Indicates the specific mode currently enabled for the port. If the port is logged in, this will be the negotiated port type. Otherwise, the configured port type will be reported.") : Amended ToSubclass,Values{"Unknown", "Other", "N", "NL", "F/NL", "Nx", "E", "F", "FL", "B", "G", "10BaseT", "10-100BaseT", "100BaseT", "1000BaseT", "2500BaseT", "10GBaseT", "10GBase-CX4", "SAS", "100Base-FX", "100Base-SX", "1000Base-SX", "1000Base-LX", "1000Base-CX", "10GBase-SR", "10GBase-SW", "10GBase-LX4", "10GBase-LR", "10GBase-LW", "10GBase-ER", "10GBase-EW", "Microsoft Reserved", "Vendor Reserved"} : Amended ToSubclass] uint16 PortType;

};



[ClassVersion("1.0") : Amended,Description("Association between TargetPort and TargetPortal") : Amended ToSubclass,AMENDMENT, LOCALE("MS_409")] 

class MSFT_TargetPortToTargetPortal

{

};



[ClassVersion("1.0") : Amended,Description("Association between TargetPort and VirtualDisk") : Amended ToSubclass,AMENDMENT, LOCALE("MS_409")] 

class MSFT_TargetPortToVirtualDisk

{

};



[Description("TargetPortal is an endpoint used by IP based storage networks (such as iSCSI). It provides initiators the IP address for which they should discover target ports on.") : Amended ToSubclass,ClassVersion("1.0") : Amended,AMENDMENT, LOCALE("MS_409")] 

class MSFT_TargetPortal : MSFT_StorageObject

{

  [Description("The IPv4 address that this portal / endpoint uses.") : Amended ToSubclass] string IPv4Address;

  [Description("The IPv6 address that this portal / endpoint uses.") : Amended ToSubclass] string IPv6Address;

  [Description("The mask for the IPv4 address of this portal / endpoint, if one is defined.") : Amended ToSubclass] string SubnetMask;

  [Description("The port number used by this portal / endpoint") : Amended ToSubclass] uint32 PortNumber;

};



[Description("A subsystem storage volume.") : Amended ToSubclass,ClassVersion("1.0") : Amended,AMENDMENT, LOCALE("MS_409")] 

class MSFT_VirtualDisk : MSFT_StorageObject

{

  [Description("A user-settable, display-oriented string representing the name of the virtual disk.") : Amended ToSubclass] string FriendlyName;

  [Description("Name is a semi-unique (scoped to the owning storage subsystem), human-readable string used to identify the virtual disk.") : Amended ToSubclass] string Name;

  [Values{"Unknown", "Other", "VPD83NAA6", "VPD83NAA5", "VPD83Type2", "VPD83Type1", "VPD83Type0", "SNVM", "NodeWWN", "NAA", "EUI64", "T10VID"} : Amended ToSubclass] uint16 NameFormat;

  [Description("UniqueIdFormat indicates the type of identifier used in the UniqueId field. The identifier used in UniqueId must be the highest available identifier using the following order of preference: 8 (highest), 3, 2, 1, 0 (lowest). For example: if the virtual disk device exposes identifiers of type 0, 1, and 3, UniqueId must be the identifier of type 3, and UniqueIdFormat should be set to 3.") : Amended ToSubclass,Values{"Vendor Specific", "Vendor Id", "EUI64", "FCPH Name", "SCSI Name String"} : Amended ToSubclass] uint16 UniqueIdFormat;

  [Description("Certain values for UniqueIdFormat may include various sub-formats. This field is a free-form string used to describe the specific format used in UniqueId.") : Amended ToSubclass] string UniqueIdFormatDescription;

  [Description("This field indicates the intended usage for this virtual disk.") : Amended ToSubclass,Values{"Unknown", "Other", "Unrestricted", "Reserved for ComputerSystem (the block server)", "Reserved by Replication Services", "Reserved by Migration Services", "Local Replica Source", "Remote Replica Source", "Local Replica Target", "Remote Replica Target", "Local Replica Source or Target", "Remote Replica Source or Target", "Delta Replica Target", "Element Component", "Reserved as Pool Contributor", "Composite Volume Member", "Composite VirtualDisk Member", "Reserved for Sparing", "Configuration", "Data", "Journal", "Read Cache", "Cache Log", "Dirty Region Tracking", "Stripe State Tracking", "Snapshot", "Reserve", "Valid Data Tracking", "Cache Lines"} : Amended ToSubclass] uint16 Usage;

  [Description("If the virtual disk's Usage field is set to 1 - 'Other', this field must contain a description of the vendor or user defined usage. If Usage is not set to 1 - 'Other', this field must not be set.") : Amended ToSubclass] string OtherUsageDescription;

  [Description("Denotes the current health status of the virtual disk. Health of a virtual disk is derived from the health of the backing physical disks, and whether or not the virtual disk can maintain the required levels of resiliency.\n 0 - 'Healthy': All physical disks are present and in a healthy state. \n1 - 'Warning': The majority of physical disks are healthy, but one or more may be failing I/O requests. \n2 - 'Unhealthy': The majority of physical disks are unhealthy or in a failed state, and the virtual disk no longer has data integrity.") : Amended ToSubclass,Values{"Healthy", "Warning", "Unhealthy", "Unknown"} : Amended ToSubclass] uint16 HealthStatus;

  [Description("Indicates the current operating conditions of the virtual disk. Unlike HealthStatus, this field indicates the status of hardware, software, and infrastructure issues related to this virtual disk, and can contain multiple values. Various operational statuses are defined. \n11 - 'In Service': describes a virtual disk being configured, maintained, or otherwise administered. \n0xD002 - 'Detached': This value is reserved for Windows. This value indicates a virtual disk that is visible to the host system but does not have a disk device object. \n0xD003 - 'Incomplete': describes a virtual disk which does not have enough redundancy remaining to successfully repair or regenerate its data.") : Amended ToSubclass,Values{"Unknown", "Other", "OK", "Degraded", "Stressed", "Predictive Failure", "Error", "Non-Recoverable Error", "Starting", "Stopping", "Stopped", "In Service", "No Contact", "Lost Communication", "Aborted", "Dormant", "Supporting Entity in Error", "Completed", "Power Mode", "Relocating", "Microsoft Reserved", "Detached", "Incomplete", "Microsoft Reserved", "Suboptimal", "Microsoft Reserved", "No Redundancy"} : Amended ToSubclass] uint16 OperationalStatus[];

  [Description("If OperationalStatus contains 1 - 'Other', this field contains the string representing the vendor defined operational status. This property must be NULL if OperationalStatus does not contain 1 - 'Other'.") : Amended ToSubclass] string OtherOperationalStatusDescription;

  [Description("The logical size of the virtual disk measured in bytes") : Amended ToSubclass,Units("Bytes") : Amended ToSubclass] uint64 Size;

  [Description("The currently allocated size of the virtual disk. If the virtual disk's ProvisioningType is 2 - 'Fixed', this value should equal Size. If the ProvisioningType is 1 - 'Thin', this value is the amount of space actually allocated (i.e. some value less than Size).") : Amended ToSubclass,Units("Bytes") : Amended ToSubclass] uint64 AllocatedSize;

  [Units("Bytes") : Amended ToSubclass] uint64 LogicalSectorSize;

  [Units("Bytes") : Amended ToSubclass] uint64 PhysicalSectorSize;

  [Description("This field indicates the total storage pool capacity being consumed by this virtual disk. For example: in the case of a 2-way mirrored virtual disk of size 1 GB, the footprint on the pool will be approximately 2 GB.") : Amended ToSubclass,Units("Bytes") : Amended ToSubclass] uint64 FootprintOnPool;

  [Description("Indicates whether or not there are tiers associated with this virtual disk.") : Amended ToSubclass] boolean IsTiered;

  [Description("Denotes the provisioning scheme of the virtual disk. \n1 - 'Thin' indicates that the virtual disk's capacity is allocated on demand. \n2 - 'Fixed' indicates that the virtual disk's capacity is fully allocated upon creation. ") : Amended ToSubclass,Values{"Unknown", "Thin", "Fixed"} : Amended ToSubclass] uint16 ProvisioningType;

  [Description("Specifies the allocation unit size in bytes for this virtual disk.") : Amended ToSubclass,Units("Bytes") : Amended ToSubclass] uint64 AllocationUnitSize;

  [Description("Specifies the media type of the physical disks to which allocations for this virtual disk are scoped to.") : Amended ToSubclass,Values{"Unspecified", "HDD", "SSD", "SCM"} : Amended ToSubclass] uint16 MediaType;

  [Description("Determines the current allocation behavior for this virtual disk. Enclosure aware virtual disks will intelligently pick the physical disks to use for their redundancy. If TRUE, the virtual disk will attempt to use physical disks from different enclosures to balance the fault tolerance between two (or more) physical enclosures.") : Amended ToSubclass] boolean IsEnclosureAware;

  [Description("Determines the current allocation behavior for this virtual disk. Fault domain aware virtual disks will intelligently pick the physical disks to use for their redundancy to balance the fault tolerance between two (or more) fault domain units of the specified type.") : Amended ToSubclass,Values{"PhysicalDisk", "StorageEnclosure", "StorageScaleUnit", "StorageChassis", "StorageRack"} : Amended ToSubclass] uint16 FaultDomainAwareness;

  [Description("Determines the fault domain type by which each column in this virtual disk is isolated.") : Amended ToSubclass,Values{"PhysicalDisk", "StorageEnclosure", "StorageScaleUnit", "StorageChassis", "StorageRack"} : Amended ToSubclass] uint16 ColumnIsolation;

  [Description("The name of the resiliency setting used to create this virtual disk.") : Amended ToSubclass] string ResiliencySettingName;

  [Description("This field indicates how many backing physical disks can fail without compromising data redundancy. For example: RAID 0 cannot tolerate any failures, RAID 5 can tolerate a single drive failure, and RAID 6 can tolerate 2 failures.") : Amended ToSubclass] uint16 PhysicalDiskRedundancy;

  [Description("This field indicates the number of complete data copies that are being maintained. For example, RAID 5 maintains 1 copy of data, whereas RAID 1 maintains at least 2 copies.") : Amended ToSubclass] uint16 NumberOfDataCopies;

  [Description("This field indicates the number of light parities to form for parity-based resiliency settings. If the resiliency setting is not parity-based, this field will be set to 1.") : Amended ToSubclass] uint16 NumberOfGroups;

  [Description("This field indicates the number of underlying physical disks across which data for this virtual disk is striped.") : Amended ToSubclass] uint16 NumberOfColumns;

  [Description("This field indicates the number of bytes that will form a strip in common striping-based resiliency settings. The strip is defined as the size of the portion of a stripe that lies on one physical disk. Thus, Interleave * NumberOfColumns will yield the size of one stripe of user data.") : Amended ToSubclass] uint64 Interleave;

  [Description("This field indicates what type of parity layout is being used for parity resiliency settings. This field should be NULL if the virtual disk does not use a parity resiliency setting.") : Amended ToSubclass,Values{"Non-rotated Parity", "Rotated Parity"} : Amended ToSubclass] uint16 ParityLayout;

  [Description("Indicates whether the virtual disk is available for read and/or write access") : Amended ToSubclass,Values{"Unknown", "Readable", "Writeable", "Read/Write", "Write Once"} : Amended ToSubclass] uint16 Access;

  [Description("Indicates whether this virtual disk is a snapshot of another virtual disk") : Amended ToSubclass] boolean IsSnapshot;

  [Description("If TRUE, this virtual disk will only be attached to the system if an explicit call is made to the Attach method. Note that this property is specific to Storage Spaces.") : Amended ToSubclass] boolean IsManualAttach;

  [Description("This parameter indicates the maximum IOPS supported by the virtual disk.") : Amended ToSubclass] uint64 MaxIops;

  [Description("This parameter indicates the maximum IO bandwidth supported by the virtual disk.") : Amended ToSubclass] uint64 MaxIoBandwidth;

  [Description("Denotes the reason why this virtual disk is detached. This field will only be set when the virtual disk's OperationalStatus includes 0xD002 - 'Detached'. Note that this field is specific to Storage Spaces.") : Amended ToSubclass,Values{"Unknown", "None", "By Policy", "Majority Disks Unhealthy", "Incomplete", "Timeout"} : Amended ToSubclass] uint16 DetachedReason;

  [Description("Size of the write cache for the virtual disk") : Amended ToSubclass,Units("Bytes") : Amended ToSubclass] uint64 WriteCacheSize;

  [Description("Size of the read cache for the virtual disk") : Amended ToSubclass,Units("Bytes") : Amended ToSubclass] uint64 ReadCacheSize;

  [Description("This method returns the physical extents spanned by the virtual disk.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Access denied", "There are not enough resources to complete the operation.", "Cannot connect to the storage provider.", "The storage provider cannot connect to the storage subsystem."} : Amended ToSubclass] uint32 GetPhysicalExtent([Out,Description("Physical extents spanned by the virtual disk.") : Amended ToSubclass] MSFT_PhysicalExtent PhysicalExtents[],[Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("This method deletes the virtual disk. After this method is called, the space used by the virtual disk will be reclaimed and the user will be unable to reverse the delete operation.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Method Parameters Checked - Job Started", "Access denied", "There are not enough resources to complete the operation.", "Cache out of date", "Cannot connect to the storage provider.", "The storage provider cannot connect to the storage subsystem.", "The storage pool could not complete the operation because its health or operational status does not permit it.", "The storage pool could not complete the operation because its configuration is read-only.", "The virtual disk could not complete the operation because another computer controls its configuration.", "The virtual disk could not complete the operation because it is in cluster maintenance mode."} : Amended ToSubclass] uint32 DeleteObject([In,Description("This parameter controls the asynchronous behavior the method will follow.\nIf TRUE, this method will make use of the CreatedStorageJob out parameter when the request is taking a long time to service. If a storage job has been created to track the operation, this method will return 4096 - 'Method Parameters Checked - Job Started'. Note, even if RunAsJob is TRUE, the method can still return a result if it has finished in sufficient time. \nIf FALSE or NULL, this method will follow default WMI asynchronous behavior as determined by the client's method for invocation (i.e. synchronous unless requested otherwise).") : Amended ToSubclass] boolean RunAsJob,[Out,Description("If RunAsJob is set to TRUE and this method takes a while to execute, this parameter returns a reference to the storage job used to track the long running operation.") : Amended ToSubclass] MSFT_StorageJob Ref CreatedStorageJob,[Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("This method shows a virtual disk to an initiator. This operation is also known as 'exposing' or 'unmasking' a virtual disk.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Method Parameters Checked - Job Started", "Access denied", "There are not enough resources to complete the operation.", "Cache out of date", "Cannot connect to the storage provider.", "The storage provider cannot connect to the storage subsystem.", "The HostType requested is not supported.", "The initiator address specified is not valid", "The target port address specified is not valid."} : Amended ToSubclass] uint32 Show([In,Description("An array of target port addresses from which the virtual disk should be shown") : Amended ToSubclass] string TargetPortAddresses[],[In,Description("The address of the initiator to which the virtual disk should be shown") : Amended ToSubclass] string InitiatorAddress,[In,Description("This field indicates the operating system type running on the host of the initiator port.") : Amended ToSubclass,Values{"Unknown", "Other", "Standard", "Solaris", "HPUX", "OpenVMS", "Tru64", "Netware", "Sequent", "AIX", "DGUX", "Dynix", "Irix", "Cisco iSCSI Storage Router", "Linux", "Microsoft Windows", "OS400", "TRESPASS", "HI-UX", "VMware ESXi", "Microsoft Windows Server 2008", "Microsoft Windows Server 2003", "DMTF Reserved", "Vendor Specific"} : Amended ToSubclass] uint16 HostType,[In,Description("This parameter controls the asynchronous behavior the method will follow.\nIf TRUE, this method will make use of the CreatedStorageJob out parameter when the request is taking a long time to service. If a storage job has been created to track the operation, this method will return 4096 - 'Method Parameters Checked - Job Started'. Note, even if RunAsJob is TRUE, the method can still return a result if it has finished in sufficient time. \nIf FALSE or NULL, this method will follow default WMI asynchronous behavior as determined by the client's method for invocation (i.e. synchronous unless requested otherwise).") : Amended ToSubclass] boolean RunAsJob,[Out,Description("If RunAsJob is set to TRUE and this method takes a while to execute, this parameter returns a reference to the storage job used to track the long running operation.") : Amended ToSubclass] MSFT_StorageJob Ref CreatedStorageJob,[Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("This method hides a virtual disk from an initiator. This operation is also known as 'unexposing' or 'masking' a virtual disk.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Method Parameters Checked - Job Started", "Access denied", "There are not enough resources to complete the operation.", "Cache out of date", "Cannot connect to the storage provider.", "The storage provider cannot connect to the storage subsystem.", "The HostType requested is not supported.", "The initiator address specified is not valid", "The target port address specified is not valid."} : Amended ToSubclass] uint32 Hide([In,Description("An array of target port addresses from which the virtual disk should be hidden. Note: this array may contain a subset of the addresses originally given in Show.") : Amended ToSubclass] string TargetPortAddresses[],[In,Description("The address of the initiator to which the virtual disk should be hidden") : Amended ToSubclass] string InitiatorAddress,[In,Description("This parameter controls the asynchronous behavior the method will follow.\nIf TRUE, this method will make use of the CreatedStorageJob out parameter when the request is taking a long time to service. If a storage job has been created to track the operation, this method will return 4096 - 'Method Parameters Checked - Job Started'. Note, even if RunAsJob is TRUE, the method can still return a result if it has finished in sufficient time. \nIf FALSE or NULL, this method will follow default WMI asynchronous behavior as determined by the client's method for invocation (i.e. synchronous unless requested otherwise).") : Amended ToSubclass] boolean RunAsJob,[Out,Description("If RunAsJob is set to TRUE and this method takes a while to execute, this parameter returns a reference to the storage job used to track the long running operation.") : Amended ToSubclass] MSFT_StorageJob Ref CreatedStorageJob,[Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("This method creates a point in time snapshot of the virtual disk.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Method Parameters Checked - Job Started", "Not enough available capacity", "Access denied", "There are not enough resources to complete the operation.", "Cache out of date", "Cannot connect to the storage provider.", "The storage provider cannot connect to the storage subsystem.", "This operation is not supported on primordial storage pools.", "The storage pool is reserved for special usage only.", "The specified storage pool could not be found.", "The storage pool could not complete the operation because its health or operational status does not permit it."} : Amended ToSubclass] uint32 CreateSnapshot([In,Description("The desired name of the snapshot virtual disk") : Amended ToSubclass] string FriendlyName,[In,Description("This field indicates which storage pool should be used to hold the created snapshot. If this field is not set, this method will default to using the same storage pool that contains the source virtual disk.") : Amended ToSubclass] string TargetStoragePoolName,[In,Description("This parameter controls the asynchronous behavior the method will follow.\nIf TRUE, this method will make use of the CreatedStorageJob out parameter when the request is taking a long time to service. If a storage job has been created to track the operation, this method will return 4096 - 'Method Parameters Checked - Job Started'. Note, even if RunAsJob is TRUE, the method can still return a result if it has finished in sufficient time. \nIf FALSE or NULL, this method will follow default WMI asynchronous behavior as determined by the client's method for invocation (i.e. synchronous unless requested otherwise).") : Amended ToSubclass] boolean RunAsJob,[Out,Description("If RunAsJob is set to TRUE and this method takes a while to execute, this parameter returns a reference to the storage job used to track the long running operation.") : Amended ToSubclass] MSFT_StorageJob Ref CreatedStorageJob,[Out] MSFT_VirtualDisk CreatedVirtualDisk,[Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("This method creates a clone of the virtual disk, resulting in another virtual disk with identical data to the source.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Method Parameters Checked - Job Started", "Not enough available capacity", "Access denied", "There are not enough resources to complete the operation.", "Cache out of date", "Cannot connect to the storage provider.", "The storage provider cannot connect to the storage subsystem.", "This operation is not supported on primordial storage pools.", "The storage pool is reserved for special usage only.", "The specified storage pool could not be found.", "The storage pool could not complete the operation because its health or operational status does not permit it."} : Amended ToSubclass] uint32 CreateClone([In,Description("The desired name of the virtual disk clone") : Amended ToSubclass] string FriendlyName,[In,Description("This field indicates which storage pool should be used to hold the created clone. If this field is not set, this method will default to using the same storage pool that contains the source virtual disk.") : Amended ToSubclass] string TargetStoragePoolName,[In,Description("This parameter controls the asynchronous behavior the method will follow.\nIf TRUE, this method will make use of the CreatedStorageJob out parameter when the request is taking a long time to service. If a storage job has been created to track the operation, this method will return 4096 - 'Method Parameters Checked - Job Started'. Note, even if RunAsJob is TRUE, the method can still return a result if it has finished in sufficient time. \nIf FALSE or NULL, this method will follow default WMI asynchronous behavior as determined by the client's method for invocation (i.e. synchronous unless requested otherwise).") : Amended ToSubclass] boolean RunAsJob,[Out,Description("If RunAsJob is set to TRUE and this method takes a while to execute, this parameter returns a reference to the storage job used to track the long running operation.") : Amended ToSubclass] MSFT_StorageJob Ref CreatedStorageJob,[Out] MSFT_VirtualDisk CreatedVirtualDisk,[Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("This method allows a virtual disk to be resized. The size specified must be in the range of valid values given by the GetSupportedSize method on the storage pool object.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "In Use", "Method Parameters Checked - Job Started", "Size Not Supported", "Not enough available capacity", "Access denied", "There are not enough resources to complete the operation.", "Cannot connect to the storage provider.", "The storage provider cannot connect to the storage subsystem.", "The storage pool could not complete the operation because its health or operational status does not permit it.", "The storage pool could not complete the operation because its configuration is read-only.", "The virtual disk could not complete the operation because another computer controls its configuration.", "The virtual disk could not complete the operation because its health or operational status does not permit it."} : Amended ToSubclass] uint32 Resize([in,out,Description("As input, this parameter contains the requested size for the virtual disk to become. As output, this parameter contains the size that was actually achieved after the resize operation.") : Amended ToSubclass] uint64 Size,[In,Description("This parameter controls the asynchronous behavior the method will follow.\nIf TRUE, this method will make use of the CreatedStorageJob out parameter when the request is taking a long time to service. If a storage job has been created to track the operation, this method will return 4096 - 'Method Parameters Checked - Job Started'. Note, even if RunAsJob is TRUE, the method can still return a result if it has finished in sufficient time. \nIf FALSE or NULL, this method will follow default WMI asynchronous behavior as determined by the client's method for invocation (i.e. synchronous unless requested otherwise).") : Amended ToSubclass] boolean RunAsJob,[Out,Description("If RunAsJob is set to TRUE and this method takes a while to execute, this parameter returns a reference to the storage job used to track the long running operation.") : Amended ToSubclass] MSFT_StorageJob Ref CreatedStorageJob,[Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("This method initiates a repair of the virtual disk - restoring data and redundancy to different (or new) physical disks within the storage pool.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "In Use", "Object Not Found", "Method Parameters Checked - Job Started", "Not enough available capacity", "Access denied", "There are not enough resources to complete the operation.", "Cannot connect to the storage provider.", "The storage provider cannot connect to the storage subsystem.", "The storage pool could not complete the operation because its health or operational status does not permit it.", "The storage pool could not complete the operation because its configuration is read-only.", "There is not enough redundancy remaining to repair the virtual disk.", "The virtual disk could not complete the operation because another computer controls its configuration.", "The virtual disk repair operation encountered failures."} : Amended ToSubclass] uint32 Repair([In,Description("This parameter controls the asynchronous behavior the method will follow.\nIf TRUE, this method will make use of the CreatedStorageJob out parameter when the request is taking a long time to service. If a storage job has been created to track the operation, this method will return 4096 - 'Method Parameters Checked - Job Started'. Note, even if RunAsJob is TRUE, the method can still return a result if it has finished in sufficient time. \nIf FALSE or NULL, this method will follow default WMI asynchronous behavior as determined by the client's method for invocation (i.e. synchronous unless requested otherwise).") : Amended ToSubclass] boolean RunAsJob,[Out,Description("If RunAsJob is set to TRUE and this method takes a while to execute, this parameter returns a reference to the storage job used to track the long running operation.") : Amended ToSubclass] MSFT_StorageJob Ref CreatedStorageJob,[Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("This method returns the security descriptor that controls access to this specific object instance.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Access denied", "There are not enough resources to complete the operation.", "Cannot connect to the storage provider.", "The storage provider cannot connect to the storage subsystem."} : Amended ToSubclass] uint32 GetSecurityDescriptor([Out,Description("A Security Descriptor Definition Language (SDDL) formed string describing the access control list of the object.") : Amended ToSubclass] string SecurityDescriptor,[Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("This method allows a user with sufficient privileges to set the security descriptor that control access to this specific object instance. If the call is not made in the context of a user specified in the security descriptor's access control list, this method will fail with 40001 - 'Access Denied'. If an empty security descriptor is passed to this function, the behavior is left to the specific implementation so long as there is some user context (typically domain administrators) that can access and administer the object.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Access denied", "There are not enough resources to complete the operation.", "Cannot connect to the storage provider.", "The storage provider cannot connect to the storage subsystem."} : Amended ToSubclass] uint32 SetSecurityDescriptor([In,Description("A Security Descriptor Definition Language (SDDL) formed string describing the desired access control list for this object.") : Amended ToSubclass] string SecurityDescriptor,[Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("This method allows the virtual disk to be renamed.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Access denied", "There are not enough resources to complete the operation.", "Cannot connect to the storage provider.", "The storage provider cannot connect to the storage subsystem.", "The storage pool could not complete the operation because its health or operational status does not permit it.", "The storage pool could not complete the operation because its configuration is read-only.", "The virtual disk could not complete the operation because another computer controls its configuration.", "The virtual disk could not complete the operation because its health or operational status does not permit it."} : Amended ToSubclass] uint32 SetFriendlyName([In] string FriendlyName,[Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("This method allows the virtual disk's intended usage to be updated. Not all virtual disks may allow this and will return 1 - 'Not Supported' if this operation cannot be performed.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Access denied", "There are not enough resources to complete the operation.", "Cannot connect to the storage provider.", "The storage provider cannot connect to the storage subsystem.", "The storage pool could not complete the operation because its health or operational status does not permit it.", "The storage pool could not complete the operation because its configuration is read-only.", "The virtual disk could not complete the operation because another computer controls its configuration.", "The virtual disk could not complete the operation because its health or operational status does not permit it."} : Amended ToSubclass] uint32 SetUsage([In,Values{"Unknown", "Other", "Unrestricted", "Reserved for ComputerSystem (the block server)", "Reserved by Replication Services", "Reserved by Migration Services", "Local Replica Source", "Remote Replica Source", "Local Replica Target", "Remote Replica Target", "Local Replica Source or Target", "Remote Replica Source or Target", "Delta Replica Target", "Element Component", "Reserved as Pool Contributor", "Composite Volume Member", "Composite VirtualDisk Member", "Reserved for Sparing"} : Amended ToSubclass] uint16 Usage,[In,Description("If Usage is set to 1 - 'Other', this parameter takes in the string representation of a vendor defined usage for this virtual disk. This parameter must not be set if Usage is a value other than 1 - 'Other'.") : Amended ToSubclass] string OtherUsageDescription,[Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("This method allows the user to update or set various attributes on the virtual disk. Note that not all parameters must be specified, and only those given will be updated.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Access denied", "There are not enough resources to complete the operation.", "Cannot connect to the storage provider.", "The storage provider cannot connect to the storage subsystem.", "The storage pool could not complete the operation because its health or operational status does not permit it.", "The storage pool could not complete the operation because its configuration is read-only.", "The virtual disk could not complete the operation because another computer controls its configuration.", "The virtual disk could not complete the operation because its health or operational status does not permit it."} : Amended ToSubclass] uint32 SetAttributes([In] boolean IsManualAttach,[In] string StorageNodeName,[In,Values{"Readable", "Writeable", "Read/Write", "Write Once"} : Amended ToSubclass] uint16 Access,[Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("This method allows the user to update or set various properties on the virtual disk. Note that not all parameters must be specified, and only those given will be updated.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Access denied", "There are not enough resources to complete the operation.", "Cannot connect to the storage provider.", "The storage provider cannot connect to the storage subsystem.", "The storage pool could not complete the operation because its health or operational status does not permit it.", "The storage pool could not complete the operation because its configuration is read-only.", "No resiliency setting with that name exists.", "The value for PhysicalDiskRedundancy is outside of the supported range of values.", "The value for NumberOfDataCopies is outside of the supported range of values.", "The value for Interleave is outside of the supported range of values.", "The value for NumberOfColumns is outside of the supported range of values.", "The value for NumberOfGroups is outside of the supported range of values.", "The virtual disk could not complete the operation because another computer controls its configuration.", "The virtual disk could not complete the operation because its health or operational status does not permit it.", "The specified ProvisioningType is not supported.", "The value for AllocationUnitSize must be a multiple of 256 MB.", "The specified FaultDomainAwareness, ColumnIsolation, or both are not valid."} : Amended ToSubclass] uint32 SetProperties([In,Values{"Thin", "Fixed"} : Amended ToSubclass] uint16 ProvisioningType,[In] uint64 AllocationUnitSize,[In,Values{"HDD", "SSD", "SCM"} : Amended ToSubclass] uint16 MediaType,[In,Values{"PhysicalDisk", "StorageEnclosure", "StorageScaleUnit", "StorageChassis", "StorageRack"} : Amended ToSubclass] uint16 FaultDomainAwareness,[In,Values{"PhysicalDisk", "StorageEnclosure", "StorageScaleUnit", "StorageChassis", "StorageRack"} : Amended ToSubclass] uint16 ColumnIsolation,[In] string ResiliencySettingName,[In] uint16 PhysicalDiskRedundancy,[In] uint16 NumberOfDataCopies,[In] uint16 NumberOfGroups,[In] uint16 NumberOfColumns,[In] uint64 Interleave,[In] uint64 MaxIops,[In] uint64 MaxIoBandwidth,[Out] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("Attaches a Storage Spaces based virtual disk to the system. This operation is similar to Show and Hide, however there is no need for target and initiator configuration since everything is done locally. Depending on the system's NewDiskPolicy (formerly SAN policy), a Storage Space may need to be Attached before it can be used.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Access denied", "There are not enough resources to complete the operation.", "Cannot connect to the storage provider.", "The storage provider cannot connect to the storage subsystem.", "The storage pool could not complete the operation because its health or operational status does not permit it.", "The storage pool could not complete the operation because its configuration is read-only.", "The virtual disk could not complete the operation because another computer controls its configuration.", "The virtual disk could not complete the operation because its health or operational status does not permit it.", "Could not attach the virtual disk because too many physical disks have failed or gone missing."} : Amended ToSubclass] uint32 Attach([In] string StorageNodeName,[Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("Detaches a Storage Spaces based virtual disk from the system. This operation is similar to Hide, however there is no need for target and initiator configuration since everything is done locally. Detaching a Storage Space will result in it's corresponding disk object to be suprise removed from the system. Note that detaching can happen in response to certain failure and warning conditions (such as failing redundancy, or thin provisioning capacity limits being reached).") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Access denied", "There are not enough resources to complete the operation.", "Cannot connect to the storage provider.", "The storage provider cannot connect to the storage subsystem.", "The storage pool could not complete the operation because its health or operational status does not permit it.", "The storage pool could not complete the operation because its configuration is read-only.", "The virtual disk could not complete the operation because another computer controls its configuration.", "The virtual disk could not complete the operation because its health or operational status does not permit it.", "The virtual disk could not complete the operation because its Manual Attach status does not permit it."} : Amended ToSubclass] uint32 Detach([In] string StorageNodeName,[Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("This method adds one or more physical disks for manual allocation.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Method Parameters Checked - Job Started", "Access denied", "There are not enough resources to complete the operation.", "Cache out of date", "Cannot connect to the storage provider.", "The storage provider cannot connect to the storage subsystem.", "The storage pool could not complete the operation because its health or operational status does not permit it.", "The storage pool could not complete the operation because its configuration is read-only.", "One or more physical disks are not supported by this operation.", "One or more physical disks are already in use.", "One or more physical disks use a sector size that is not supported by this storage pool."} : Amended ToSubclass] uint32 AddPhysicalDisk([In] MSFT_PhysicalDisk PhysicalDisks[],[In,Values{"Auto-Select", "Manual-Select", "Hot Spare", "Journal"} : Amended ToSubclass] uint16 Usage,[In,Description("This parameter controls the asynchronous behavior the method will follow.\nIf TRUE, this method will make use of the CreatedStorageJob out parameter when the request is taking a long time to service. If a storage job has been created to track the operation, this method will return 4096 - 'Method Parameters Checked - Job Started'. Note, even if RunAsJob is TRUE, the method can still return a result if it has finished in sufficient time. \nIf FALSE or NULL, this method will follow default WMI asynchronous behavior as determined by the client's method for invocation (i.e. synchronous unless requested otherwise).") : Amended ToSubclass] boolean RunAsJob,[Out,Description("If RunAsJob is set to TRUE and this method takes a while to execute, this parameter returns a reference to the storage job used to track the long running operation.") : Amended ToSubclass] MSFT_StorageJob Ref CreatedStorageJob,[Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("This method removes one or more physical disks from manual allocation.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Method Parameters Checked - Job Started", "Access denied", "There are not enough resources to complete the operation.", "Cache out of date", "Cannot connect to the storage provider.", "The storage provider cannot connect to the storage subsystem.", "The storage pool could not complete the operation because its health or operational status does not permit it.", "The storage pool could not complete the operation because its configuration is read-only.", "One or more physical disks are not supported by this operation.", "One or more physical disks could not be removed because they are still in use."} : Amended ToSubclass] uint32 RemovePhysicalDisk([In] MSFT_PhysicalDisk PhysicalDisks[],[In,Description("This parameter controls the asynchronous behavior the method will follow.\nIf TRUE, this method will make use of the CreatedStorageJob out parameter when the request is taking a long time to service. If a storage job has been created to track the operation, this method will return 4096 - 'Method Parameters Checked - Job Started'. Note, even if RunAsJob is TRUE, the method can still return a result if it has finished in sufficient time. \nIf FALSE or NULL, this method will follow default WMI asynchronous behavior as determined by the client's method for invocation (i.e. synchronous unless requested otherwise).") : Amended ToSubclass] boolean RunAsJob,[Out,Description("If RunAsJob is set to TRUE and this method takes a while to execute, this parameter returns a reference to the storage job used to track the long running operation.") : Amended ToSubclass] MSFT_StorageJob Ref CreatedStorageJob,[Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("This method adds one or more storage fault domains for manual allocation.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Method Parameters Checked - Job Started", "Access denied", "There are not enough resources to complete the operation.", "Cache out of date", "Cannot connect to the storage provider.", "The storage provider cannot connect to the storage subsystem.", "The storage pool could not complete the operation because its health or operational status does not permit it.", "The storage pool could not complete the operation because its configuration is read-only."} : Amended ToSubclass] uint32 AddStorageFaultDomain([In] MSFT_StorageFaultDomain StorageFaultDomains[],[In,Description("This parameter controls the asynchronous behavior the method will follow.\nIf TRUE, this method will make use of the CreatedStorageJob out parameter when the request is taking a long time to service. If a storage job has been created to track the operation, this method will return 4096 - 'Method Parameters Checked - Job Started'. Note, even if RunAsJob is TRUE, the method can still return a result if it has finished in sufficient time. \nIf FALSE or NULL, this method will follow default WMI asynchronous behavior as determined by the client's method for invocation (i.e. synchronous unless requested otherwise).") : Amended ToSubclass] boolean RunAsJob,[Out,Description("If RunAsJob is set to TRUE and this method takes a while to execute, this parameter returns a reference to the storage job used to track the long running operation.") : Amended ToSubclass] MSFT_StorageJob Ref CreatedStorageJob,[Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("This method removes one or more storage fault domains from manual allocation.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Method Parameters Checked - Job Started", "Access denied", "There are not enough resources to complete the operation.", "Cache out of date", "Cannot connect to the storage provider.", "The storage provider cannot connect to the storage subsystem.", "The storage pool could not complete the operation because its health or operational status does not permit it.", "The storage pool could not complete the operation because its configuration is read-only."} : Amended ToSubclass] uint32 RemoveStorageFaultDomain([In] MSFT_StorageFaultDomain StorageFaultDomains[],[In,Description("This parameter controls the asynchronous behavior the method will follow.\nIf TRUE, this method will make use of the CreatedStorageJob out parameter when the request is taking a long time to service. If a storage job has been created to track the operation, this method will return 4096 - 'Method Parameters Checked - Job Started'. Note, even if RunAsJob is TRUE, the method can still return a result if it has finished in sufficient time. \nIf FALSE or NULL, this method will follow default WMI asynchronous behavior as determined by the client's method for invocation (i.e. synchronous unless requested otherwise).") : Amended ToSubclass] boolean RunAsJob,[Out,Description("If RunAsJob is set to TRUE and this method takes a while to execute, this parameter returns a reference to the storage job used to track the long running operation.") : Amended ToSubclass] MSFT_StorageJob Ref CreatedStorageJob,[Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("This method allows for the creation of a replication relationship between virtual disks.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Object Not Found", "Method Parameters Checked - Job Started", "Access denied", "There are not enough resources to complete the operation.", "Cache out of date", "The operation is not supported while the cluster is being upgraded."} : Amended ToSubclass] uint32 CreateReplica([In,Description("A end user relevant name for the element being created. If NULL, then a system supplied default name can be used. The value will be stored in the \\'FriendlyName\\' property for the created element.") : Amended ToSubclass] string FriendlyName,[In,Description("This parameter allows the user to specify the replica target machine.") : Amended ToSubclass] MSFT_ReplicaPeer TargetStorageSubsystem,[In,Description("This parameter allows the user to specify the virtual disk target on the target machine.") : Amended ToSubclass] string TargetVirtualDiskObjectId,[In,Description("A storage pool on the target to be used as the source for creating the TargetVirtualDisk. This parameter is ignored if a target virtual disk is specified.") : Amended ToSubclass] string TargetStoragePoolObjectId,[In,Description("Recovery Point Objective indicates the maximum interval in which data might be lost. For synchronous copy operations, RPO is 0. For asynchronous copy operations RPO represents the interval since the most recent transmission of data to the target element.") : Amended ToSubclass] uint16 RecoveryPointObjective,[In,Description("The replication settings.") : Amended ToSubclass] MSFT_ReplicationSettings ReplicationSettings,[In,Description("SyncType describes the type of copy that will be made.") : Amended ToSubclass,Values{"DMTF Reserved", "Mirror", "Snapshot", "Clone", "TokenizedClone", "DMTF Reserved", "Vendor Specific"} : Amended ToSubclass] uint16 SyncType,[In,Description("This parameter controls the asynchronous behavior the method will follow.\nIf TRUE, this method will make use of the CreatedStorageJob out parameter when the request is taking a long time to service. If a storage job has been created to track the operation, this method will return 4096 - 'Method Parameters Checked - Job Started'. Note, even if RunAsJob is TRUE, the method can still return a result if it has finished in sufficient time. \nIf FALSE or NULL, this method will follow default WMI asynchronous behavior as determined by the client's method for invocation (i.e. synchronous unless requested otherwise).") : Amended ToSubclass] boolean RunAsJob,[Out] MSFT_ReplicaPeer CreatedReplicaPeer,[Out,Description("If RunAsJob is set to TRUE and this method takes a while to execute, this parameter returns a reference to the storage job used to track the long running operation.") : Amended ToSubclass] MSFT_StorageJob Ref CreatedStorageJob,[Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("Sets the relationship between virtual disks.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Object Not Found", "Method Parameters Checked - Job Started", "Access denied", "There are not enough resources to complete the operation.", "Cache out of date", "The operation is not supported while the cluster is being upgraded."} : Amended ToSubclass] uint32 SetReplicationRelationship([In,Values{"Abort", "ActivateConsistency", "Activate", "AddSyncPair", "DeactivateConsistency", "Deactivate", "Detach", "Dissolve", "Failover", "Failback", "Fracture", "RemoveSyncPair", "ResyncReplica", "RestoreFromReplica", "Resume", "ResetToSync", "ResetToAsync", "ReturnToResourcePool", "ReverseRoles", "Split", "Suspend", "Unprepare"} : Amended ToSubclass] uint16 Operation,[In,Description("This parameter is used to specify the replica peer for the target virtual disk.") : Amended ToSubclass] MSFT_ReplicaPeer VirtualDiskReplicaPeer,[In,Description("This parameter controls the asynchronous behavior the method will follow.\nIf TRUE, this method will make use of the CreatedStorageJob out parameter when the request is taking a long time to service. If a storage job has been created to track the operation, this method will return 4096 - 'Method Parameters Checked - Job Started'. Note, even if RunAsJob is TRUE, the method can still return a result if it has finished in sufficient time. \nIf FALSE or NULL, this method will follow default WMI asynchronous behavior as determined by the client's method for invocation (i.e. synchronous unless requested otherwise).") : Amended ToSubclass] boolean RunAsJob,[Out,Description("If RunAsJob is set to TRUE and this method takes a while to execute, this parameter returns a reference to the storage job used to track the long running operation.") : Amended ToSubclass] MSFT_StorageJob Ref CreatedStorageJob,[Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

};



[ClassVersion("1.0") : Amended,Description("Association between VirtualDisk and Disk") : Amended ToSubclass,AMENDMENT, LOCALE("MS_409")] 

class MSFT_VirtualDiskToDisk

{

};



[ClassVersion("1.0") : Amended,Description("Association between VirtualDisk and PhysicalDisk. A virtual disk and a physical disk are associated when the virtual disk has data residing on the physical disk.") : Amended ToSubclass,AMENDMENT, LOCALE("MS_409")] 

class MSFT_VirtualDiskToPhysicalDisk

{

};



[Description("Association between replicated virtual disks") : Amended ToSubclass,ClassVersion("1.0") : Amended,AMENDMENT, LOCALE("MS_409")] 

class MSFT_VirtualDiskToReplicaPeer : MSFT_Synchronized

{

};



[ClassVersion("1.0") : Amended,Description("Association between VirtualDisk and StorageFaultDomain.") : Amended ToSubclass,AMENDMENT, LOCALE("MS_409")] 

class MSFT_VirtualDiskToStorageFaultDomain

{

};



[ClassVersion("1.0") : Amended,AMENDMENT, LOCALE("MS_409")] 

class MSFT_VirtualDiskToStorageTier

{

};



[Description("Association between VirtualDisk and VirtualDisk Snapshots / Clones") : Amended ToSubclass,ClassVersion("1.0") : Amended,AMENDMENT, LOCALE("MS_409")] 

class MSFT_VirtualDiskToVirtualDisk : MSFT_Synchronized

{

};



[Description("Represents a volume on the system.") : Amended ToSubclass,ClassVersion("1.0") : Amended,AMENDMENT, LOCALE("MS_409")] 

class MSFT_Volume : MSFT_StorageObject

{

  [Description("Drive letter assigned to the volume.") : Amended ToSubclass] char16 DriveLetter;

  [Description("Guid path of the volume.") : Amended ToSubclass] string Path;

  [Description("The health status of the Volume.\n0 - 'Healthy': The volume is functioning normally.\n1 - 'Warning': The volume is still functioning, but has detected errors or issues that require administrator intervention.\n2 - 'Unhealthy': The volume is not functioning, due to errors or failures. The volume needs immediate attention from an administrator.") : Amended ToSubclass,Values{"Healthy", "Warning", "Unhealthy"} : Amended ToSubclass] uint16 HealthStatus;

  [Description("An array of values that denote the current operational status of the volume.\n0 - 'Unknown': The operational status is unknown.\n1 - 'Other': A vendor-specific OperationalStatus has been specified by setting the OtherOperationalStatusDescription property.\n2 - 'OK': The volume is responding to commands and is in a normal operating state.\n3 - 'Degraded': The volume is responding to commands, but is not running in an optimal operating state.\n4 - 'Stressed': The volume is functioning, but needs attention. For example, the volume might be overloaded or overheated.\n5 - 'Predictive Failure': The volume is functioning, but a failure is likely to occur in the near future.\n6 - 'Error': An error has occurred.\n7 - 'Non-Recoverable Error': A non-recoverable error has occurred.\n8 - 'Starting': The volume is in the process of starting.\n9 - 'Stopping': The volume is in the process of stopping.\n10 - 'Stopped': The volume was stopped or shut down in a clean and orderly fashion.\n11 - 'In Service': The volume is being configured, maintained, cleaned, or otherwise administered.\n12 - 'No Contact': The storage provider has knowledge of the volume, but has never been able to establish communication with it.\n13 - 'Lost Communication': The storage provider has knowledge of the volume and has contacted it successfully in the past, but the volume is currently unreachable.\n14 - 'Aborted': Similar to Stopped, except that the volume stopped abruptly and may require configuration or maintenance.\n15 - 'Dormant': The volume is reachable, but it is inactive.\n16 - 'Supporting Entity in Error': This status value does not necessarily indicate trouble with the volume, but it does indicate that another device or connection that the volume depends on may need attention.\n17 - 'Completed': The volume has completed an operation. This status value should be combined with OK, Error, or Degraded, depending on the outcome of the operation.\n0xD00D - 'Scan Needed': In Windows-based storage subsystems, this indicates a scan is needed but not repair.\n0xD00E - 'Spot Fix Needed': In Windows-based storage subsystems, this indicates limited repair is needed.\n0xD00F - 'Full Repair Needed': In Windows-based storage subsystems, this indicates full repair is needed.\n0xD013 - 'Offline': In Windows-based storage subsystems, this indicates that the object is offline.") : Amended ToSubclass,Values{"Unknown", "Other", "OK", "Degraded", "Stressed", "Predictive Failure", "Error", "Non-Recoverable Error", "Starting", "Stopping", "Stopped", "In Service", "No Contact", "Lost Communication", "Aborted", "Dormant", "Supporting Entity in Error", "Completed", "Vendor Specific", "Scan Needed", "Spot Fix Needed", "Full Repair Needed", "Offline"} : Amended ToSubclass] uint16 OperationalStatus[];

  [Description("File system on the volume.") : Amended ToSubclass] string FileSystem;

  [Description("File system label of the volume.") : Amended ToSubclass] string FileSystemLabel;

  [Description("The underlying file system type of the volume.") : Amended ToSubclass,Values{"Unknown", "Threshold", "UFS", "HFS", "FAT", "FAT16", "FAT32", "NTFS4", "NTFS5", "XFS", "AFS", "EXT2", "EXT3", "ReiserFS", "NTFS", "ReFS", "exFAT", "CSVFS_NTFS", "CSVFS_ReFS"} : Amended ToSubclass] uint16 FileSystemType;

  [Description("Total size of the volume") : Amended ToSubclass,Units("Bytes") : Amended ToSubclass] uint64 Size;

  [Description("Available space on the volume") : Amended ToSubclass,Units("Bytes") : Amended ToSubclass] uint64 SizeRemaining;

  [Description("Denotes the type of the volume.") : Amended ToSubclass,Values{"Unknown", "Invalid Root Path", "Removable", "Fixed", "Remote", "CD-ROM", "RAM Disk"} : Amended ToSubclass] uint32 DriveType;

  [Description("Indicates the deduplication mode of the volume.") : Amended ToSubclass,Values{"Disabled", "GeneralPurpose", "HyperV", "Backup", "NotAvailable"} : Amended ToSubclass] uint32 DedupMode;

  [Description("The allocation unit size of the volume.") : Amended ToSubclass,Units("Bytes") : Amended ToSubclass] uint32 AllocationUnitSize;

  [Description("This method deletes a volume.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Method Parameters Checked - Job Started", "Access denied", "There are not enough resources to complete the operation.", "Cache out of date"} : Amended ToSubclass] uint32 DeleteObject([In,Description("This parameter controls the asynchronous behavior the method will follow.\nIf TRUE, this method will make use of the CreatedStorageJob out parameter when the request is taking a long time to service. If a storage job has been created to track the operation, this method will return 4096 - 'Method Parameters Checked - Job Started'. Note, even if RunAsJob is TRUE, the method can still return a result if it has finished in sufficient time. \nIf FALSE or NULL, this method will follow default WMI asynchronous behavior as determined by the client's method for invocation (i.e. synchronous unless requested otherwise).") : Amended ToSubclass] boolean RunAsJob,[Out,Description("If RunAsJob is set to TRUE and this method takes a while to execute, this parameter returns a reference to the storage job used to track the long running operation.") : Amended ToSubclass] MSFT_StorageJob Ref CreatedStorageJob,[Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("Format") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "This command is not supported on x86 running in x64 environment", "Method Parameters Checked - Job Started", "Size Not Supported", "Access Denied", "An unexpected I/O error has occurred", "The specified object is managed by the Microsoft Failover Clustering component. The disk must be in cluster maintenance mode and the cluster resource status must be online to perform this operation.", "The operation is not allowed on a system or critical partition.", "The specified cluster size is invalid", "The specified file system is not supported", "The volume cannot be quick formatted", "The number of clusters exceeds 32 bits", "The specified UDF version is not supported", "The cluster size must be a multiple of the disk's physical sector size", "Cannot perform the requested operation when the drive is read only", "Starting offset of the thinly provisioned or DAX partition is not aligned to a cluster boundary."} : Amended ToSubclass] uint32 Format([In] string FileSystem,[In] string FileSystemLabel,[In,Units("Bytes") : Amended ToSubclass] uint32 AllocationUnitSize,[In] boolean Full,[In] boolean Force,[In] boolean Compress,[In] boolean ShortFileNameSupport,[In] boolean SetIntegrityStreams,[In] boolean UseLargeFRS,[In] boolean DisableHeatGathering,[In] boolean IsDAX,[In] boolean NoTrim,[In,Description("This parameter controls the asynchronous behavior the method will follow.\nIf TRUE, this method will make use of the CreatedStorageJob out parameter when the request is taking a long time to service. If a storage job has been created to track the operation, this method will return 4096 - 'Method Parameters Checked - Job Started'. Note, even if RunAsJob is TRUE, the method can still return a result if it has finished in sufficient time. \nIf FALSE or NULL, this method will follow default WMI asynchronous behavior as determined by the client's method for invocation (i.e. synchronous unless requested otherwise).") : Amended ToSubclass] boolean RunAsJob,[Out] MSFT_Volume FormattedVolume,[Out,Description("If RunAsJob is set to TRUE and this method takes a while to execute, this parameter returns a reference to the storage job used to track the long running operation.") : Amended ToSubclass] MSFT_StorageJob Ref CreatedStorageJob,[Out] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("Repair") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "This command is not supported on x86 running in x64 environment", "Method Parameters Checked - Job Started", "Access denied", "An unexpected I/O error has occurred", "The specified file system is not supported", "Cannot perform the requested operation when the drive is read only", "The repair failed", "The scan failed", "A snapshot error occurred while scanning this drive. You can try again, but if this problem persists, run an offline scan and fix.", "A scan is already running on this drive. Chkdsk cannot run more than one simultaneous scan on a drive.", "A snapshot error occurred while scanning this drive. You can try again, but if this problem persists, run an offline scan and fix.", "A snapshot error occurred while scanning this drive. Run an offline scan and fix.", "Cannot open drive for direct access", "Cannot determine the file system of the drive"} : Amended ToSubclass] uint32 Repair([In] boolean OfflineScanAndFix,[In] boolean Scan,[In] boolean SpotFix,[In,Description("This parameter controls which type of leak detection should be done.") : Amended ToSubclass] uint32 DetectLeaks,[In,Description("Specifies the scratch file to be used for leak detection. If a scratch file is not specified, a temporary file will be created. Note that for cluster, the name is local to the volume owner node.") : Amended ToSubclass] string ScratchFile,[In,Description("Number of threads to be used by leak detection.") : Amended ToSubclass] uint32 Threads,[In,Description("This specifies that the ReFS volume should be triaged. When DirectoryIds are not specified, then triage is done on global tables.") : Amended ToSubclass] boolean Triage,[In,Description("Specifies directories to be triaged by their object IDs.") : Amended ToSubclass] uint64 DirectoryIds[],[In,Description("This parameter controls which type of salvage operation should be done.") : Amended ToSubclass] uint32 Salvage,[In,Description("Specifies the scratch directory to be used for salvage. Note that for cluster, the name is local to the volume owner node.") : Amended ToSubclass] string ScratchDir,[In,Description("Specifies the target file to be used for salvage. Information about salvaged files are written to this file. Note that for cluster, the name is local to the volume owner node.") : Amended ToSubclass] string TargetFile,[In,Description("Specifies the target directory to be used for salvage. Salvaged files are copied to this directory. Note that for cluster, the name is local to the volume owner node.") : Amended ToSubclass] string TargetDir,[Out] uint32 Output,[In,Description("This parameter controls the asynchronous behavior the method will follow.\nIf TRUE, this method will make use of the CreatedStorageJob out parameter when the request is taking a long time to service. If a storage job has been created to track the operation, this method will return 4096 - 'Method Parameters Checked - Job Started'. Note, even if RunAsJob is TRUE, the method can still return a result if it has finished in sufficient time. \nIf FALSE or NULL, this method will follow default WMI asynchronous behavior as determined by the client's method for invocation (i.e. synchronous unless requested otherwise).") : Amended ToSubclass] boolean RunAsJob,[Out,Description("If RunAsJob is set to TRUE and this method takes a while to execute, this parameter returns a reference to the storage job used to track the long running operation.") : Amended ToSubclass] MSFT_StorageJob Ref CreatedStorageJob,[Out] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("Optimize") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "This command is not supported on x86 running in x64 environment", "Object Not Found", "Method Parameters Checked - Job Started", "Access denied", "The volume optimization operation requested is not supported by the hardware backing the volume.", "Volume optimization was unable to complete because the disk backing the volume is full.", "Another volume optimization operation is currently in progress on the volume.", "This volume cannot be optimized.", "The volume to be optimized is corrupted.", "The user cancelled the operation.", "A file on the disk could not be opened.", "Volume optimization aborted because the storage slab size changed while performing the operation.", "Neither slab consolidation nor slab analysis can run if slabs are less than 8 MB.", "The volume alignment is invalid for the slab consolidation/trim operation requested.", "The storage optimizer could not continue because the file system's master file table is too fragmented."} : Amended ToSubclass] uint32 Optimize([In] boolean ReTrim,[In] boolean Analyze,[In] boolean Defrag,[In] boolean SlabConsolidate,[In] boolean TierOptimize,[In] boolean NormalPriority,[In,Description("This parameter controls the asynchronous behavior the method will follow.\nIf TRUE, this method will make use of the CreatedStorageJob out parameter when the request is taking a long time to service. If a storage job has been created to track the operation, this method will return 4096 - 'Method Parameters Checked - Job Started'. Note, even if RunAsJob is TRUE, the method can still return a result if it has finished in sufficient time. \nIf FALSE or NULL, this method will follow default WMI asynchronous behavior as determined by the client's method for invocation (i.e. synchronous unless requested otherwise).") : Amended ToSubclass] boolean RunAsJob,[Out,Description("If RunAsJob is set to TRUE and this method takes a while to execute, this parameter returns a reference to the storage job used to track the long running operation.") : Amended ToSubclass] MSFT_StorageJob Ref CreatedStorageJob,[Out] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("SetFileSystemLabel") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter"} : Amended ToSubclass] uint32 SetFileSystemLabel([In] string FileSystemLabel,[Out] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("GetSupportedFileSystems") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter"} : Amended ToSubclass] uint32 GetSupportedFileSystems([Out] string SupportedFileSystems[],[Out] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("GetSupportedClusterSizes") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter"} : Amended ToSubclass] uint32 GetSupportedClusterSizes([In] string FileSystem,[Out] uint32 SupportedClusterSizes[],[Out] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("GetCorruptionCount") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Access denied"} : Amended ToSubclass] uint32 GetCorruptionCount([Out] uint32 CorruptionCount,[Out] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("Gets the volume attributes") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter"} : Amended ToSubclass] uint32 GetAttributes([Out,Description("Indicates whether the automatic data integrity scanner should scrub files on this volume. \nTrue - files on this volume will be scrubbed. \nFalse - files on this volume will not be scrubbed.") : Amended ToSubclass] boolean VolumeScrubEnabled);

  [Description("Sets the volume attributes") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "This setting may not be changed due to the group policy setting", "This setting may not be changed due to the global registry setting"} : Amended ToSubclass] uint32 SetAttributes([In,Description("Sets whether the automatic data integrity scanner should scrub files on this volume. \nTrue - files on this volume will be scrubbed. \nFalse - files on this volume will not be scrubbed.") : Amended ToSubclass] boolean EnableVolumeScrub,[Out] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("This method is used to flush the cached data in the volume's file system to disk.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter"} : Amended ToSubclass] uint32 Flush();

  [Description("Resizes the volume. ") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Not enough available capacity", "Access denied", "There are not enough resources to complete the operation.", "Cannot connect to the storage provider.", "The storage provider cannot connect to the storage subsystem.", "The storage pool could not complete the operation because its configuration is read-only."} : Amended ToSubclass] uint32 Resize([In] uint64 Size,[In,Description("This parameter controls the asynchronous behavior the method will follow.\nIf TRUE, this method will make use of the CreatedStorageJob out parameter when the request is taking a long time to service. If a storage job has been created to track the operation, this method will return 4096 - 'Method Parameters Checked - Job Started'. Note, even if RunAsJob is TRUE, the method can still return a result if it has finished in sufficient time. \nIf FALSE or NULL, this method will follow default WMI asynchronous behavior as determined by the client's method for invocation (i.e. synchronous unless requested otherwise).") : Amended ToSubclass] boolean RunAsJob,[Out,Description("If RunAsJob is set to TRUE and this method takes a while to execute, this parameter returns a reference to the storage job used to track the long running operation.") : Amended ToSubclass] MSFT_StorageJob Ref CreatedStorageJob,[Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("This method performs a diagnostic on the storage subsystem, returning any actionable results.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Method Parameters Checked - Job Started", "Access denied", "There are not enough resources to complete the operation.", "Cache out of date", "The operation is not supported while the cluster is being upgraded.", "Failed to communicate with cluster health resource", "Method not supported in this subsystem.", "The Storage Health is not online."} : Amended ToSubclass] uint32 Diagnose([Out,Description("The actionable results of diagnose.") : Amended ToSubclass] MSFT_StorageDiagnoseResult DiagnoseResults[],[Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("This method changes the deduplication mode of the volume.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Object Not Found", "Access Denied", "Deduplication feature is not available"} : Amended ToSubclass] uint32 SetDedupMode([In,Description("New deduplication mode of the volume.") : Amended ToSubclass,Values{"Disabled", "GeneralPurpose", "HyperV", "Backup", "NotAvailable"} : Amended ToSubclass] uint32 DedupMode,[Out] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("This method returns deduplication properties of the volume.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Object Not Found", "Access Denied", "Deduplication feature is not available", "Deduplication is not enabled for the volume"} : Amended ToSubclass] uint32 GetDedupProperties([Out,Description("Volume deduplication properties.") : Amended ToSubclass] MSFT_DedupProperties DedupProperties,[Out] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("This method retrieved the Health Actions being perfomed on the Volume.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Access denied", "There are not enough resources to complete the operation.", "Cache out of date", "The operation is not supported while the cluster is being upgraded.", "Failed to communicate with cluster health resource", "Method not supported in this subsystem.", "The Storage Health is not online."} : Amended ToSubclass] uint32 GetActions([Out,Description("Health Actions currently being performed on the Volume.") : Amended ToSubclass] MSFT_HealthAction ActionResults[],[Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

};



[ClassVersion("1.0") : Amended,Description("Association between a volume and its file shares") : Amended ToSubclass,AMENDMENT, LOCALE("MS_409")] 

class MSFT_VolumeToFileShare

{

};



[ClassVersion("1.0") : Amended,AMENDMENT, LOCALE("MS_409")] 

class MSFT_Volume_Repair_AsyncOutput : MSFT_StorageJobOutParams

{

};



[Description("Private methods used for mapping cmdlets to WMI methods. These methods should not be used directly and can change without notice.") : Amended ToSubclass,AMENDMENT, LOCALE("MS_409")] 

class PS_StorageCmdlets

{

  [Description("SetDisk") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Disk is in use", "Access Denied", "There are not enough resources to complete the operation.", "Cache out of date", "The disk has not been initialized.", "The disk is read only.", "The disk is offline.", "A parameter is not valid for this type of partition.", "Operation not supported on a critical disk.", "Cannot convert the style of a disk with data or other known partitions on it.", "The disk is not large enough to support a GPT partition style.", "The specified object is managed by the Microsoft Failover Clustering component. The disk must be in cluster maintenance mode and the cluster resource status must be online to perform this operation.", "The specified object is managed by the Microsoft Failover Clustering component. The disk must be removed from the cluster to perform this operation."} : Amended ToSubclass] uint32 SetDisk([In] MSFT_Disk InputObject[],[In] string UniqueId,[In] string Path,[In] uint32 Number,[In] uint16 PartitionStyle,[In] boolean IsReadOnly,[In] boolean IsOffline,[In] uint32 Signature,[In] string Guid);

  [Description("SetVolume") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Object Not Found", "Access Denied", "Deduplication feature is not available"} : Amended ToSubclass] uint32 SetVolume([In] MSFT_Volume InputObject[],[In] string UniqueId,[In] string Path,[In] string FileSystemLabel,[In] char16 DriveLetter,[In] string NewFileSystemLabel,[In,Values{"Disabled", "GeneralPurpose", "HyperV", "Backup", "NotAvailable"} : Amended ToSubclass] uint32 DedupMode);

  [Description("SetPartition") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "In Use", "Access denied", "There are not enough resources to complete the operation.", "The disk has not been initialized.", "The disk is read only.", "The disk is offline.", "A parameter is not valid for this type of partition.", "The specified partition type is not valid.", "The specified object is managed by the Microsoft Failover Clustering component. The disk must be in cluster maintenance mode and the cluster resource status must be online to perform this operation.", "The requested access path is already in use.", "Cannot assign access paths to hidden partitions.", "The access path is not valid.", "The operation is not allowed on a system or critical partition.", "This operation is only supported on data partitions.", "The volume still has access path to it."} : Amended ToSubclass] uint32 SetPartition([In] MSFT_Partition InputObject[],[In] string DiskId,[In] uint64 Offset,[In] uint32 DiskNumber,[In] uint32 PartitionNumber,[In] char16 DriveLetter,[In] char16 NewDriveLetter,[In] boolean IsOffline,[In] boolean IsReadOnly,[In] boolean NoDefaultDriveLetter,[In] boolean IsActive,[In] boolean IsHidden,[In] boolean IsShadowCopy,[In] boolean IsDAX,[In] uint16 MbrType,[In] string GptType);

  [Description("SetPhysicalDisk") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Object Not Found", "Access denied", "There are not enough resources to complete the operation.", "Cannot connect to the storage provider.", "The storage provider cannot connect to the storage subsystem.", "This operation is not supported on primordial storage pools.", "The storage pool could not complete the operation because its health or operational status does not permit it.", "The storage pool could not complete the operation because its configuration is read-only."} : Amended ToSubclass] uint32 SetPhysicalDisk([In] MSFT_PhysicalDisk InputObject[],[In] string UniqueId,[In] string FriendlyName,[In] string NewFriendlyName,[In] string Description,[In] uint16 Usage,[In] uint16 MediaType,[In] string StorageEnclosureId,[In] string StorageScaleUnitId,[In] boolean IsHidden);

  [Description("SetStoragePool") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Access denied", "There are not enough resources to complete the operation.", "You must specify the enclosure awareness (either the IsEnclosureAware or EnclosureAwareDefault parameter) or the fault domain awareness (either the FaultDomainAwareness or FaultDomainAwarenessDefault parameter), but not both.", "The provider does not support a value for fault domain awareness other than physical disk or storage enclosure.", "Cannot connect to the storage provider.", "The storage provider cannot connect to the storage subsystem.", "This operation is not supported on primordial storage pools.", "The specified resiliency setting is not supported by this storage pool.", "The storage pool could not complete the operation because its health or operational status does not permit it.", "The storage pool could not complete the operation because its configuration is read-only.", "The number of thin provisioning alert thresholds specified exceeds the limit for this storage pool.", "No resiliency setting with that name exists.", "The value for WriteCacheSize is outside of the supported range of values."} : Amended ToSubclass] uint32 SetStoragePool([In] MSFT_StoragePool InputObject[],[In] string UniqueId,[In] string Name,[In] string FriendlyName,[In] string NewFriendlyName,[In] uint16 Usage,[In] string OtherUsageDescription,[In] uint16 ProvisioningTypeDefault,[In] uint16 MediaTypeDefault,[In] string ResiliencySettingNameDefault,[In] boolean EnclosureAwareDefault,[In] uint16 FaultDomainAwarenessDefault,[In] uint64 WriteCacheSizeDefault,[In] boolean AutoWriteCacheSize,[In] boolean IsReadOnly,[In] boolean ClearOnDeallocate,[In] boolean IsPowerProtected,[In] uint16 RepairPolicy,[In] uint16 RetireMissingPhysicalDisks,[In] uint16 ThinProvisioningAlertThresholds[]);

  [Description("SetVirtualDisk") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Not enough available capacity", "Access denied", "There are not enough resources to complete the operation.", "Cannot connect to the storage provider.", "The storage provider cannot connect to the storage subsystem.", "The storage pool could not complete the operation because its health or operational status does not permit it.", "The storage pool could not complete the operation because its configuration is read-only.", "No resiliency setting with that name exists.", "The value for PhysicalDiskRedundancy is outside of the supported range of values.", "The value for NumberOfDataCopies is outside of the supported range of values.", "The value for Interleave is outside of the supported range of values.", "The value for NumberOfColumns is outside of the supported range of values.", "The value for NumberOfGroups is outside of the supported range of values.", "The virtual disk could not complete the operation because another computer controls its configuration.", "The virtual disk could not complete the operation because its health or operational status does not permit it.", "The value for WriteCacheSize is outside of the supported range of values.", "The specified ProvisioningType is not supported.", "The value for AllocationUnitSize must be a multiple of 256 MB.", "The specified FaultDomainAwareness, ColumnIsolation, or both are not valid."} : Amended ToSubclass] uint32 SetVirtualDisk([In] MSFT_VirtualDisk InputObject[],[In] string UniqueId,[In] string Name,[In] string FriendlyName,[In] string NewFriendlyName,[In] uint16 Usage,[In] string OtherUsageDescription,[In] boolean IsManualAttach,[In] string StorageNodeName,[In] uint16 Access,[In,Values{"Thin", "Fixed"} : Amended ToSubclass] uint16 ProvisioningType,[In] uint64 AllocationUnitSize,[In,Values{"HDD", "SSD", "SCM"} : Amended ToSubclass] uint16 MediaType,[In,Values{"PhysicalDisk", "StorageEnclosure", "StorageScaleUnit", "StorageChassis", "StorageRack"} : Amended ToSubclass] uint16 FaultDomainAwareness,[In,Values{"PhysicalDisk", "StorageEnclosure", "StorageScaleUnit", "StorageChassis", "StorageRack"} : Amended ToSubclass] uint16 ColumnIsolation,[In] string ResiliencySettingName,[In] uint16 PhysicalDiskRedundancy,[In] uint16 NumberOfDataCopies,[In] uint16 NumberOfGroups,[In] uint16 NumberOfColumns,[In] uint64 Interleave,[In] uint64 MaxIops,[In] uint64 MaxIoBandwidth);

  [Description("SetStorageTier") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Not enough available capacity", "The storage pool could not complete the operation because its health or operational status does not permit it.", "The storage pool could not complete the operation because its configuration is read-only.", "No resiliency setting with that name exists.", "The value for PhysicalDiskRedundancy is outside of the supported range of values.", "The value for NumberOfDataCopies is outside of the supported range of values.", "The value for Interleave is outside of the supported range of values.", "The value for NumberOfColumns is outside of the supported range of values.", "The value for NumberOfGroups is outside of the supported range of values.", "The specified ProvisioningType is not supported.", "The specified FaultDomainAwareness, ColumnIsolation, or both are not valid."} : Amended ToSubclass] uint32 SetStorageTier([In] MSFT_StorageTier InputObject[],[In] string UniqueId,[In] string FriendlyName,[In] string NewFriendlyName,[In] uint16 ProvisioningType,[In] uint64 AllocationUnitSize,[In] uint16 MediaType,[In] uint16 FaultDomainAwareness,[In] uint16 ColumnIsolation,[In] string ResiliencySettingName,[In] uint16 Usage,[In] uint16 PhysicalDiskRedundancy,[In] uint16 NumberOfDataCopies,[In] uint16 NumberOfGroups,[In] uint16 NumberOfColumns,[In] uint64 Interleave,[In] string Description);

  [Description("SetStorageSubSystem") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Access denied", "There are not enough resources to complete the operation.", "The provider does not support the fault domain awareness parameter.", "Cannot connect to the storage provider.", "The storage provider cannot connect to the storage subsystem."} : Amended ToSubclass] uint32 SetStorageSubSystem([In] MSFT_StorageSubSystem InputObject[],[In] string UniqueId,[In] string Name,[In] string FriendlyName,[In] string Description,[In] boolean AutomaticClusteringEnabled,[In] boolean VirtualDiskRepairEnabled,[In] uint32 VirtualDiskRepairQueueDepth,[In] uint16 FaultDomainAwarenessDefault);

  [Description("AddPhysicalDisk") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Object Not Found", "Method Parameters Checked - Job Started", "Access denied", "There are not enough resources to complete the operation.", "Cache out of date", "An unexpected I/O error has occurred", "One or more storage devices are unresponsive.", "Cannot connect to the storage provider.", "The storage provider cannot connect to the storage subsystem.", "This operation is not supported on primordial storage pools.", "The storage pool could not complete the operation because its health or operational status does not permit it.", "The storage pool could not complete the operation because its configuration is read-only.", "One or more physical disks are not supported by this operation.", "One or more physical disks are already in use.", "One or more physical disks use a sector size that is not supported by this storage pool."} : Amended ToSubclass] uint32 AddPhysicalDisk([In] MSFT_StoragePool StoragePool,[In] string StoragePoolUniqueId,[In] string StoragePoolName,[In] string StoragePoolFriendlyName,[In] MSFT_VirtualDisk VirtualDisk,[In] string VirtualDiskUniqueId,[In] string VirtualDiskName,[In] string VirtualDiskFriendlyName,[In] MSFT_PhysicalDisk PhysicalDisks[],[In,Values{"Auto-Select", "Manual-Select", "Hot Spare", "Journal"} : Amended ToSubclass] uint16 Usage);

  [Description("RemovePhysicalDisk") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Object Not Found", "Method Parameters Checked - Job Started", "Not enough available capacity", "Access denied", "There are not enough resources to complete the operation.", "Cache out of date", "An unexpected I/O error has occurred", "The request failed due to a fatal device hardware error.", "One or more storage devices are unresponsive.", "Cannot connect to the storage provider.", "The storage provider cannot connect to the storage subsystem.", "This operation is not supported on primordial storage pools.", "The storage pool could not complete the operation because its health or operational status does not permit it.", "The storage pool could not complete the operation because its configuration is read-only.", "The storage pool could not complete the operation because the health or operational status of one or more virtual disks in it does not permit it.", "Could not repair the virtual disk because too many physical disks failed. Not enough information exists on the remaining physical disks to reconstruct the lost data.", "The virtual disk could not complete the operation because its health or operational status does not permit it.", "One or more physical disks could not be removed because they are still in use.", "One or more physical disks are not in the pool.", "One or more physical disks could not be removed. The policy on this storage pool requires a minimum number of physical disks to remain present."} : Amended ToSubclass] uint32 RemovePhysicalDisk([In] MSFT_StoragePool StoragePool,[In] string StoragePoolUniqueId,[In] string StoragePoolName,[In] string StoragePoolFriendlyName,[In] MSFT_VirtualDisk VirtualDisk,[In] string VirtualDiskUniqueId,[In] string VirtualDiskName,[In] string VirtualDiskFriendlyName,[In] MSFT_PhysicalDisk PhysicalDisks[]);

  [Description("SetFileShare") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Access denied", "There are not enough resources to complete the operation.", "Cannot connect to the storage provider.", "The storage provider cannot connect to the storage subsystem.", "This operation is not supported for local file servers."} : Amended ToSubclass] uint32 SetFileShare([In] MSFT_FileShare InputObject[],[In] string UniqueId,[In] string Name,[In] string Description,[In] boolean EncryptData);

  [Description("CreateVolume") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Disk is in use", "Object Not Found", "Method Parameters Checked - Job Started", "Size Not Supported", "Not enough available capacity", "Access denied", "There are not enough resources to complete the operation.", "An unexpected I/O error has occurred", "You must specify a size by using either the Size or the UseMaximumSize parameter. You can specify only one of these parameters at a time.", "The request failed due to a fatal device hardware error.", "The operation is not supported while the cluster is being upgraded.", "The provider does not support the allocation unit size parameter.", "This combination of parameters is unsupported.", "The disk has already been initialized.", "The disk is read only.", "The disk is offline.", "The disk's partition limit has been reached.", "The disk is not large enough to support a GPT partition style.", "Operation not supported on a non-empty removable disk.", "The specified object is managed by the Microsoft Failover Clustering component. The disk must be in cluster maintenance mode and the cluster resource status must be online to perform this operation.", "The specified object is managed by the Microsoft Failover Clustering component. The disk must be removed from the cluster to perform this operation.", "The requested access path is already in use.", "The access path is not valid.", "The specified cluster size is invalid.", "The specified file system is not supported", "The volume cannot be quick formatted", "The cluster size must be a multiple of the disk's physical sector size", "Cannot perform the requested operation when the drive is read only", "You must specify a name for this volume", "You must specify a file server to expose this volume to", "The volume is not exposed to the specified file server", "Read cache is only supported by the ReFS filesystem.", "Starting offset of the thinly provisioned or DAX partition is not aligned to a cluster boundary.", "Cannot connect to the storage provider.", "The storage provider cannot connect to the storage subsystem.", "Failover clustering could not be enabled for this storage object.", "Failover clustering was enabled for the storage object but it failed to come online.", "This operation is not supported on primordial storage pools.", "The storage pool is reserved for special usage only.", "The specified resiliency setting is not supported by this storage pool.", "There are not enough eligible physical disks in the storage pool to create the specified virtual disk configuration.", "The storage pool could not complete the operation because its health or operational status does not permit it.", "The storage pool could not complete the operation because its configuration is read-only.", "You must specify the size info (either the Size or UseMaximumSize parameter) or the tier info (the StorageTiers and StorageTierSizes parameters), but not both size info and tier info.", "You must specify the FileSystem parameter.", "No resiliency setting with that name exists.", "The value for NoSinglePointOfFailure is not supported.", "The value for PhysicalDiskRedundancy is outside of the supported range of values.", "The value for NumberOfDataCopies is outside of the supported range of values.", "The value for ParityLayout is outside of the supported range of values.", "The value for Interleave is outside of the supported range of values.", "The value for NumberOfColumns is outside of the supported range of values."} : Amended ToSubclass] uint32 CreateVolume([In] MSFT_StoragePool StoragePool,[In] string StoragePoolUniqueId,[In] string StoragePoolName,[In] string StoragePoolFriendlyName,[In] MSFT_Disk Disk,[In] uint32 DiskNumber,[In] string DiskPath,[In] string DiskUniqueId,[In,Description("This parameter allows the user to specify the FriendlyName at the time of the volume creation. FriendlyNames are expected to be descriptive, however they are not required to be unique. The filesystem's label will also be set to this friendly name.") : Amended ToSubclass] string FriendlyName,[In,Description("Indicates the size for the virtual disk. Note that some storage subsystems will round the size up or down to a multiple of its allocation unit size. The size of the resulting volume will be the maximum size possible for the resulting virtual disk.") : Amended ToSubclass,Units("Bytes") : Amended ToSubclass] uint64 Size,[In,Description("Storage tiers on this virtual disk") : Amended ToSubclass] MSFT_StorageTier StorageTiers[],[In,Description("Sizes of each tier") : Amended ToSubclass] uint64 StorageTierSizes[],[In,Description("Denotes the provisioning type of the volume. \n1 - 'Thin': The storage for the volume is allocated on-demand. \n2 - 'Fixed': The storage for the volume is allocated up front.") : Amended ToSubclass,Values{"Thin", "Fixed"} : Amended ToSubclass] uint16 ProvisioningType,[In,Description("This parameter specifies the resiliency setting to use as a template for this volume. This property's value should correspond with the particular resiliency setting instance's Name property. Only resiliency settings associated with this storage pool may be used.") : Amended ToSubclass] string ResiliencySettingName,[In,Description("Specifies how many physical disk failures the virtual disk should be able to withstand before data loss occurs. If specified, this value will override the PhysicalDiskRedundancyDefault which would have been inherited from the resiliency setting specified by ResiliencySettingName.") : Amended ToSubclass] uint16 PhysicalDiskRedundancy,[In,Description("Specifies the number of underlying physical disks across which data should be striped. If specified, this value will override the NumberOfColumnsDefault value that would have been inherited from the resiliency setting specified by ResiliencySettingName.") : Amended ToSubclass] uint16 NumberOfColumns,[In,Description("Specifies the file system to format the created volume. Specifying a CSV file system is only supported on a storage spaces subsystem. For CSV the pool must be clusterable and the volume created will be a cluster shared volume.") : Amended ToSubclass,Values{"NTFS", "ReFS", "CSVFS_NTFS", "CSVFS_ReFS"} : Amended ToSubclass] uint16 FileSystem,[In,Description("If set to a valid access path, the system will attempt to use this path as a way to access the local volume. If the access path could not be set, or this parameter was left NULL, a new access path will be automatically assigned.") : Amended ToSubclass] string AccessPath,[In,Units("Bytes") : Amended ToSubclass,Description("Specifies the allocation unit size to use when formatting the volume.") : Amended ToSubclass] uint32 AllocationUnitSize,[In,Units("Bytes") : Amended ToSubclass,Description("Indicates the size of the read cache on the virtual disk.") : Amended ToSubclass] uint64 ReadCacheSize,[In,Description("The file server that will own this volume.") : Amended ToSubclass] MSFT_FileServer FileServer,[Out] MSFT_Volume CreatedVolume[],[In,Description("This parameter controls the asynchronous behavior the method will follow.\nIf TRUE, this method will make use of the CreatedStorageJob out parameter when the request is taking a long time to service. If a storage job has been created to track the operation, this method will return 4096 - 'Method Parameters Checked - Job Started'. Note, even if RunAsJob is TRUE, the method can still return a result if it has finished in sufficient time. \nIf FALSE or NULL, this method will follow default WMI asynchronous behavior as determined by the client's method for invocation (i.e. synchronous unless requested otherwise).") : Amended ToSubclass] boolean RunAsJob,[Out,Description("If RunAsJob is set to TRUE and this method takes a while to execute, this parameter returns a reference to the storage job used to track the long running operation.") : Amended ToSubclass] MSFT_StorageJob Ref CreatedStorageJob,[Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus);

  [Description("GetStorageReliabilityCounter") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Access denied"} : Amended ToSubclass] uint32 GetStorageReliabilityCounter([In] MSFT_PhysicalDisk PhysicalDisk,[In] MSFT_Disk Disk,[Out] MSFT_StorageReliabilityCounter StorageReliabilityCounter);

};