#pragma autorecover #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("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,AMENDMENT, LOCALE("MS_409")] class MSFT_Disk { [key,Description("ObjectId is a mandatory property that is used to opaquely and uniquely identify an instance of a class within the scope of the host computer system.") : Amended ToSubclass] string ObjectId; [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 #(PTL). If the bus type is IDE, ATA, PATA, or SATA, the format is #(CTL). 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("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("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 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; [Values{"Unknown", "Online", "Not Ready", "No Media", "Offline", "Failed", "Missing"} : Amended ToSubclass] uint16 OperationalStatus; [Values{"Unknown", "Healthy", "Failing", "Failed"} : 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"} : 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("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", "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", "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", "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,[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", "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", "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", "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", "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", "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); }; [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"} : 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); }; [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); }; [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; [Description("This method gets the tier information for pinned files.") : Amended ToSubclass] uint32 Get([In] string FilePath,[In] char16 VolumeDriveLetter,[In] string VolumePath,[In] MSFT_Volume Volume,[Out] MSFT_FileStorageTier FileStorageTier[]); [Description("This method is used to pin a file to a storage tier.") : Amended ToSubclass] uint32 Set([In] string FilePath,[In] string DesiredStorageTierFriendlyName,[In] string DesiredStorageTierUniqueId,[In] MSFT_StorageTier DesiredStorageTier); [Description("This method is used to unpin a file from a storage tier.") : Amended ToSubclass] uint32 Clear([In] string FilePath); }; [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("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", "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", "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", "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", "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", "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", "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", "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; }; [ClassVersion("1.0") : Amended,Description("Represents a partition on a disk.") : Amended ToSubclass,AMENDMENT, LOCALE("MS_409")] class MSFT_Partition { [key,Description("This is one of two keys required to uniquely identify the partition. 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; [key,Description("This is the second of two keys required to uniquely identify the partition. 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 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 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", "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.", "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("Onlines the partition 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 offline.", "A parameter is not valid for this type of partition.", "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,[Out] MSFT_StorageExtendedStatus ExtendedStatus); }; [ClassVersion("1.0") : Amended,Description("Association between Partition and Volume") : Amended ToSubclass,AMENDMENT, LOCALE("MS_409")] class MSFT_PartitionToVolume { }; [Description("A subsystem drive or spindle.") : Amended ToSubclass,ClassVersion("1.0") : Amended,AMENDMENT, LOCALE("MS_409")] class MSFT_PhysicalDisk : MSFT_StorageObject { [Description("DeviceId is an address or other identifier that uniquely names the physical disk.") : Amended ToSubclass] string DeviceId; [Description("FriendlyName is a user-friendly name of the physical disk. The initial value should be set by the storage provider or subsystem, and can be modified by the user at any point in the object's lifetime.") : Amended ToSubclass] string FriendlyName; [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("A user settable description of the physical disk") : Amended ToSubclass] string Description; [Description("This field represents the name of the company responsible for the hardware backing the physical disk. This manufacturer information must match what is reported by the disk's SCSI inquiry data.") : Amended ToSubclass] string Manufacturer; [Description("This field represents the model number of the physical disk hardware. This information must match what is reported by the disk's SCSI inquiry data.") : Amended ToSubclass] string Model; [Description("This field is a string representation of the physical disk's serial number. This information must match what is reported by the disk's SCSI inquiry data.") : Amended ToSubclass] string SerialNumber; [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("Denotes the operational status of the PhysicalDisk.") : 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", "Microsoft Reserved"} : Amended ToSubclass] uint16 OperationalStatus[]; [Values{"Healthy", "Warning", "Unhealthy", "Unknown"} : Amended ToSubclass] uint16 HealthStatus; [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; [Values{"Unknown", "SCSI", "ATAPI", "ATA", "1394", "SSA", "Fibre Channel", "USB", "RAID", "iSCSI", "SAS", "SATA", "SD", "MMC", "Virtual", "File Backed Virtual", "Storage Spaces", "NVMe", "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("This field is a free-form string indicating where the disk physically resides.") : Amended ToSubclass] string PhysicalLocation; [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("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", "Microsoft Reserved", "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"} : Amended ToSubclass] uint16 MediaType; [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", "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,[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.", "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"} : Amended ToSubclass] uint16 MediaType,[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 { }; [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 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."} : 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,[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; }; [ClassVersion("1.0") : Amended,Description("Base storage event indication") : Amended ToSubclass,AMENDMENT, LOCALE("MS_409")] class MSFT_StorageEvent { [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("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("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("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 { }; [Description("Represents a manageable physical disk enclosure.") : Amended ToSubclass,ClassVersion("1.0") : Amended,AMENDMENT, LOCALE("MS_409")] class MSFT_StorageEnclosure : MSFT_StorageObject { [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("A user-friendly string representing the name of the enclosure.") : Amended ToSubclass] string FriendlyName; [Description("This field represents the manufacturer of the enclosure.") : Amended ToSubclass] string Manufacturer; [Description("This field represents the model number of the enclosure.") : Amended ToSubclass] string Model; [Description("This field is a string representation of the enclosure's serial number.") : Amended ToSubclass] string SerialNumber; [Description("This field is a string representation of the enclosure's firmware version.") : Amended ToSubclass] string FirmwareVersion; [Description("Denotes the current health status of the enclosure.") : Amended ToSubclass,Values{"Healthy", "Warning", "Unhealthy", "Unknown"} : Amended ToSubclass] uint16 HealthStatus; [Description("Number of slots hosted within the enclosure") : Amended ToSubclass] uint32 NumberOfSlots; [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 - 'Not Available': The element is present but has problems. \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", "Not Available", "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 - 'Not Available': The element is present but has problems. \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", "Not Available", "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 - 'Not Available': The element is present but has problems. \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", "Not Available", "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 - 'Not Available': The element is present but has problems. \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", "Not Available", "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 - 'Not Available': The element is present but has problems. \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", "Not Available", "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 - 'Not Available': The element is present but has problems. \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", "Not Available", "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); }; [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 { }; [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("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", "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] uint32 GetExtendedStatus([Out] MSFT_StorageExtendedStatus ExtendedStatus); }; [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; }; [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", "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("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[]; [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; }; [ClassVersion("1.0") : Amended,Description("Association between StorageNode and StorageEnclosure") : Amended ToSubclass,AMENDMENT, LOCALE("MS_409")] class MSFT_StorageNodeToStorageEnclosure { }; [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 { }; [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 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("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 minimum OS version that supports this storage pool") : Amended ToSubclass,Values{"Windows Server 2012", "Windows Server 2012 R2 Preview", "Windows Server 2012 R2"} : 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", "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.", "Failover clustering could not be enabled for this storage object.", "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.", "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 WriteCacheSize is outside of the supported range of values.", "One of the physical disks specified is not supported by this operation.", "Not enough physical disks were specified to successfully complete the operation."} : 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("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("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("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("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] uint64 WriteCacheSize,[In,Description("Indicates whether the provider should pick up the auto write cache size") : Amended ToSubclass] boolean AutoWriteCacheSize,[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", "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 requested access path is already in use.", "The access path is not valid.", "The specified file system is not supported", "The volume cannot be quick formatted", "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 could not be enabled for this storage object.", "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.", "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,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,[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.", "The storage pool could not complete the operation because its configuration is read-only."} : Amended ToSubclass] uint32 CreateStorageTier([In,Description("Friendly name of the storage tier") : Amended ToSubclass] string FriendlyName,[In,Description("Media type of the storage tier") : Amended ToSubclass,Values{"HDD", "SSD"} : Amended ToSubclass] uint16 MediaType,[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 will upgrade 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.", "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 Upgrade([Out,Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information.") : Amended ToSubclass] MSFT_StorageExtendedStatus ExtendedStatus); [Description("This method will add 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", "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.", "One of the physical disks specified is not supported by this operation.", "One of the physical disks specified is already in use.", "One of the physical disks specified uses 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", "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 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.", "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 of the physical disks specified could not be removed because it is 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 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", "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,[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.", "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("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("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 { }; [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."} : 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("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(); }; [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 array subsystem that exposes virtual disks.") : 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 the minimum number of physical disks required for creating a storage pool on this subsystem.") : Amended ToSubclass] uint16 PhysicalDisksPerStoragePoolMin; [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("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("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", "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.", "No resiliency setting with that name exists.", "The value for WriteCacheSize is outside of the supported range of values.", "One of the physical disks specified is not supported by this operation.", "Not enough physical disks were specified to successfully complete the operation.", "One of the physical disks specified is already in use.", "One of the physical disks specified uses 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 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 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("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("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.", "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("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 set the SupportsAutomaticObjectClustering 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 SetAttributes([In] boolean AutomaticClusteringEnabled,[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("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] 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); }; [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 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 StorageSubSystem and StorageEnclosure") : Amended ToSubclass,AMENDMENT, LOCALE("MS_409")] class MSFT_StorageSubSystemToStorageEnclosure { }; [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 { }; [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("Media type of this storage tier") : Amended ToSubclass,Values{"Unspecified", "HDD", "SSD"} : Amended ToSubclass] uint16 MediaType; [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("A user settable description of the storage tier") : Amended ToSubclass] string Description; [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 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 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 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 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 configuration is read-only."} : Amended ToSubclass] uint32 SetAttributes([In,Description("Media type of this storage tier") : Amended ToSubclass,Values{"HDD", "SSD"} : Amended ToSubclass] uint16 MediaType,[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 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("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"} : 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"} : 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 name of the resiliency setting used to create this virtual disk.") : Amended ToSubclass] string ResiliencySettingName; [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("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("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 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 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("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("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("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("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"} : Amended ToSubclass] uint16 DetachedReason; [Description("Size of the write cache for the virtual disk") : Amended ToSubclass] uint64 WriteCacheSize; [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."} : 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", "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.", "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."} : 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("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."} : 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 will add 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 of the physical disks specified is not supported by this operation.", "One of the physical disks specified is already in use.", "One of the physical disks specified uses 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 will remove 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 of the physical disks specified is not supported by this operation.", "One of the physical disks specified could not be removed because it is 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); }; [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 { }; [ClassVersion("1.0") : Amended,AMENDMENT, LOCALE("MS_409")] class MSFT_VirtualDiskToStorageTier { }; [ClassVersion("1.0") : Amended,Description("Association between VirtualDisk and VirtualDisk Snapshots / Clones") : Amended ToSubclass,AMENDMENT, LOCALE("MS_409")] class MSFT_VirtualDiskToVirtualDisk { [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; }; [ClassVersion("1.0") : Amended,Description("Represents a volume on the system.") : Amended ToSubclass,AMENDMENT, LOCALE("MS_409")] class MSFT_Volume { [key,Description("ObjectId is a mandatory property that is used to opaquely and uniquely identify an instance of a class within the scope of the host computer system.") : Amended ToSubclass] string ObjectId; [Description("Drive letter assigned to the volume.") : Amended ToSubclass] char16 DriveLetter; [Description("Guid path of the volume.") : Amended ToSubclass] string Path; [Description("Denotes the health of the volume.") : Amended ToSubclass,Values{"Healthy", "Scan Needed", "Spot Fix Needed", "Full Repair Needed"} : Amended ToSubclass] uint16 HealthStatus; [Description("File system on the volume.") : Amended ToSubclass] string FileSystem; [Description("File system label of the volume.") : Amended ToSubclass] string FileSystemLabel; [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("Format") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "This command is not supported on x86 running in x64 environment", "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 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"} : 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,[Out] MSFT_Volume FormattedVolume,[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", "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,[Out] uint32 Output,[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", "Neither Slab Consolidation nor Slab Analysis will run if slabs are less than 8 MB"} : Amended ToSubclass] uint32 Optimize([In] boolean ReTrim,[In] boolean Analyze,[In] boolean Defrag,[In] boolean SlabConsolidate,[In] boolean TierOptimize,[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("Repair") : 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("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("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 is offline.", "A parameter is not valid for this type of partition.", "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); [Description("SetPhysicalDisk") : 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 SetPhysicalDisk([In] MSFT_PhysicalDisk InputObject[],[In] string UniqueId,[In] string FriendlyName,[In] string NewFriendlyName,[In] string Description,[In] uint16 Usage,[In] uint16 MediaType); [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.", "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] string ResiliencySettingNameDefault,[In] boolean EnclosureAwareDefault,[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.", "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."} : 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); [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 configuration is read-only."} : Amended ToSubclass] uint32 SetStorageTier([In] MSFT_StorageTier InputObject[],[In] string UniqueId,[In] string FriendlyName,[In] string NewFriendlyName,[In] uint16 MediaType,[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.", "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); [Description("AddPhysicalDisk") : 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.", "One of the physical disks specified is not supported by this operation.", "One of the physical disks specified is already in use.", "One of the physical disks specified uses 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", "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 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.", "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 of the physical disks specified could not be removed because it is still in use."} : 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[]); };