#pragma autorecover
#pragma classflags ("forceupdate")
#pragma namespace ( "\\\\.\\root\\Microsoft\\Windows\\Storage\\Providers_v2")

Instance of __Win32Provider as $prov
{
 Name = "wsp_sr";
 ClsId = "{F31AA484-82E6-4159-9DBB-7DE30196F75F}";
 ImpersonationLevel = 1;
 HostingModel = "Decoupled:Com:FoldIdentity(false)";
 securityDescriptor="O:BAG:BAD:(A;;0x1;;;BA)(A;;0x1;;;NS)";
 version=0x40000001;
};

Instance of __MethodProviderRegistration
{
 Provider = $prov;
};

Instance of __EventProviderRegistration
{
 Provider = $prov;
 eventQueryList = {"select * from WSP_ReplicationGroupStorageArrivalEvent" , "select * from WSP_ReplicationGroupStorageDepartureEvent" , "select * from WSP_ReplicationGroupStorageModificationEvent"};
};

Instance of __InstanceProviderRegistration
{
 Provider = $prov;

 supportsGet = TRUE;
 supportsPut = TRUE;
 supportsDelete = TRUE;
 supportsEnumeration = TRUE;
 QuerySupportLevels = {"WQL:UnarySelect"};
};

[Indication: DisableOverride ToSubClass, Version("2.22.1"): Amended, Exception: DisableOverride ToSubClass, UMLPackagePath("CIM::Interop"): ToSubClass, 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."): ToSubClass Amended]
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."): ToSubClass Amended, ValueMap{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", ".."}: 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"}: ToSubClass Amended, ModelCorrespondence{"CIM_Error.OtherErrorType"}: ToSubClass] uint16 ErrorType;
	[Description("A free-form string describing the ErrorType when 1, \"Other\", is specified as the ErrorType."): ToSubClass Amended, ModelCorrespondence{"CIM_Error.ErrorType"}: 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."): ToSubClass Amended] string OwningEntity;
	[Required: DisableOverride ToSubClass, Description("An opaque string that uniquely identifies, within the scope of the OwningEntity, the format of the Message."): ToSubClass Amended, ModelCorrespondence{"CIM_Error.Message", "CIM_Error.MessageArguments"}: 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."): ToSubClass Amended, ModelCorrespondence{"CIM_Error.MessageID", "CIM_Error.MessageArguments"}: ToSubClass] string Message;
	[Description("An array containing the dynamic content of the message."): ToSubClass Amended, ModelCorrespondence{"CIM_Error.MessageID", "CIM_Error.Message"}: 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."): ToSubClass Amended, ValueMap{"0", "1", "2", "3", "4", "5", "6", "7", ".."}: ToSubClass, Values{"Unknown", "Other", "Information", "Degraded/Warning", "Minor", "Major", "Critical", "Fatal/NonRecoverable", "DMTF Reserved"}: ToSubClass Amended] uint16 PerceivedSeverity;
	[Description("An enumerated value that describes the probable cause of the error."): ToSubClass Amended, ValueMap{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "32", "33", "34", "35", "36", "37", "38", "39", "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "50", "51", "52", "53", "54", "55", "56", "57", "58", "59", "60", "61", "62", "63", "64", "65", "66", "67", "68", "69", "70", "71", "72", "73", "74", "75", "76", "77", "78", "79", "80", "81", "82", "83", "84", "85", "86", "87", "88", "89", "90", "91", "92", "93", "94", "95", "96", "97", "98", "99", "100", "101", "102", "103", "104", "105", "106", "107", "108", "109", "110", "111", "112", "113", "114", "115", "116", "117", "118", "119", "120", "121", "122", "123", "124", "125", "126", "127", "128", "129", "130", ".."}: 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"}: ToSubClass Amended, ModelCorrespondence{"CIM_Error.ProbableCauseDescription"}: ToSubClass] uint16 ProbableCause;
	[Description("A free-form string describing the probable cause of the error."): ToSubClass Amended, ModelCorrespondence{"CIM_Error.ProbableCause"}: ToSubClass] string ProbableCauseDescription;
	[Description("A free-form string describing recommended actions to take to resolve the error."): ToSubClass Amended] 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."): ToSubClass Amended, ModelCorrespondence{"CIM_Error.ErrorSourceFormat"}: 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."): ToSubClass Amended, ValueMap{"0", "1", "2", ".."}: ToSubClass, Values{"Unknown", "Other", "CIMObjectPath", "DMTF Reserved"}: ToSubClass Amended, ModelCorrespondence{"CIM_Error.ErrorSource", "CIM_Error.OtherErrorSourceFormat"}: ToSubClass] uint16 ErrorSourceFormat = 0;
	[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."): ToSubClass Amended, ModelCorrespondence{"CIM_Error.ErrorSourceFormat"}: 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."): ToSubClass Amended, ValueMap{"1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", ".."}: 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"}: ToSubClass Amended, ModelCorrespondence{"CIM_Error.CIMStatusCodeDescription"}: 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."): ToSubClass Amended, ModelCorrespondence{"CIM_Error.CIMStatusCode"}: ToSubClass] string CIMStatusCodeDescription;
};
[Abstract, ClassVersion("1.0"): Amended, Description("Volume deduplication properties."): ToSubClass Amended]
class MSFT_DedupProperties
{
	[read: ToSubClass, Description("The total logical size of all files on the volume, in bytes. This is an estimate of the volume used space if deduplication feature was disabled."): ToSubClass Amended] uint64 UnoptimizedSize;
	[read: ToSubClass, Description("The difference between the logical size of the optimized files and the logical size of the store (the deduplicated user data plus deduplication metadata)."): ToSubClass Amended] uint64 SavingsSize;
	[read: ToSubClass, Description("The ratio of deduplication savings to the logical size of all of the files on the volume, expressed as a percentage."): ToSubClass Amended] uint32 SavingsRate;
	[read: ToSubClass, Description("The number of optimized files on the volume."): ToSubClass Amended] uint64 OptimizedFilesCount;
	[read: ToSubClass, Description("The total logical size of all optimized files on the volume, in bytes."): ToSubClass Amended] uint64 OptimizedFilesSize;
	[read: ToSubClass, Description("The ratio of deduplication savings to the logical size of all optimized files on the volume, expressed as a percentage."): ToSubClass Amended] uint32 OptimizedFilesSavingsRate;
	[read: ToSubClass, Description("The number of files that currently qualify for optimization."): ToSubClass Amended] uint64 InPolicyFilesCount;
	[read: ToSubClass, Description("The aggregate size of all files that currently qualify for optimization."): ToSubClass Amended] uint64 InPolicyFilesSize;
};
[Abstract, ClassVersion("1.0"): Amended, Description("Common base class for all Storage Management Provider objects"): ToSubClass Amended]
class MSFT_StorageObject
{
	[key, read: ToSubClass, Required: DisableOverride ToSubClass, 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."): ToSubClass Amended] string ObjectId;
	[read: ToSubClass, Required: DisableOverride ToSubClass, 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."): ToSubClass Amended] string UniqueId;
	[read: ToSubClass, 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'."): ToSubClass Amended] string PassThroughIds;
	[read: ToSubClass, Description("PassThroughServer is the name or address of the computer system hosting the proprietary storage provider classes."): ToSubClass Amended] string PassThroughServer;
	[read: ToSubClass, Description("PassThroughNamespace is the WBEM namespace that contains the proprietary storage provider classes."): ToSubClass Amended] string PassThroughNamespace;
	[read: ToSubClass, Description("PassThroughClass is the WBEM class name of the proprietary storage provider object."): ToSubClass Amended] string PassThroughClass;
};
[Abstract, Description("A file server object models the subsystems concept of a file server."): ToSubClass Amended, ClassVersion("1.0"): Amended]
class MSFT_FileServer : MSFT_StorageObject
{
	[read: ToSubClass, Required: DisableOverride ToSubClass, Description("A user-friendly string representing the name of the file server. Friendly name can be set using the SetFriendlyName method."): ToSubClass Amended] string FriendlyName;
	[read: ToSubClass, Required: DisableOverride ToSubClass, Description("HostNames are semi-unique (scoped to the owning storage subsystem), human-readable strings used to identify a file server. There is a separate host name element per file sharing protocol."): ToSubClass Amended] string HostNames[];
	[read: ToSubClass, Required: DisableOverride ToSubClass, Description("Denotes the current health status of the file server.\n 0 - 'Healthy': TBD.\n1 - 'Warning': TBD.\n2 - 'Unhealthy': TBD.5 - 'Unknown': TBD."): ToSubClass Amended, ValueMap{"0", "1", "2", "5"}: ToSubClass, Values{"Healthy", "Warning", "Unhealthy", "Unknown"}: ToSubClass Amended] uint16 HealthStatus;
	[read: ToSubClass, Required: DisableOverride ToSubClass, Description("Indicates the current operating conditions of the file server. Unlike HealthStatus, this field indicates the status of hardware, software, and infrastructure issues related to this server, and can contain multiple values. Various operational statuses are defined. Many of the enumeration's values are self-explanatory."): ToSubClass Amended, ValueMap{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "..", "0xD000", "0xD001", "0xD002.."}: 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"}: ToSubClass Amended] uint16 OperationalStatus[];
	[read: ToSubClass, Description("A string representation of the vendor defined operational status. This field should only be set if the OperationalStatus array contains 1 - 'Other'."): ToSubClass Amended] string OtherOperationalStatusDescription;
	[read: ToSubClass, Description("If TRUE the server supports file share creation."): ToSubClass Amended] boolean SupportsFileShareCreation;
	[read: ToSubClass, Description("If TRUE the file server will support continuously available file shares."): ToSubClass Amended] boolean SupportsContinuouslyAvailableFileShare;
	[read: ToSubClass, Description("The file sharing protocols supported by the file server."): ToSubClass Amended, ValueMap{"2", "3"}: ToSubClass, Values{"NFS", "SMB"}: ToSubClass Amended] uint16 FileSharingProtocols[];
	[read: ToSubClass, Description("Specifies the file sharing protocol versions supported."): ToSubClass Amended] string FileSharingProtocolVersions[];
	 uint32 CreateFileShare([In, Required: DisableOverride ToSubClass] string Name, [In] string Description, [In, Required: DisableOverride ToSubClass, EmbeddedInstance("MSFT_Volume"): ToSubClass] MSFT_Volume SourceVolume, [In] string VolumeRelativePath, [In] boolean ContinuouslyAvailable, [In] boolean EncryptData, [In] uint16 FileSharingProtocol, [Out, EmbeddedInstance("MSFT_FileShare"): ToSubClass] MSFT_FileShare CreatedFileShare, [Out] MSFT_StorageJob ref CreatedStorageJob, [Out, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
	 uint32 DeleteObject([Out] MSFT_StorageJob ref CreatedStorageJob, [Out, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
	 uint32 SetFriendlyName([In, Required: DisableOverride ToSubClass] string FriendlyName, [Out, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
};
[Abstract, Description("A file share object models the subsystem's concept of a file share."): ToSubClass Amended, ClassVersion("1.0"): Amended]
class MSFT_FileShare : MSFT_StorageObject
{
	[read: ToSubClass, Required: DisableOverride ToSubClass, Description("Name is a semi-unique (scoped to the owning file server), human-readable string used to access and identify a file share."): ToSubClass Amended] string Name;
	[read: ToSubClass, Description("A user settable description of the file share. This field can be used to store extra free-form information, such as notes or details about the intended usage."): ToSubClass Amended] string Description;
	[read: ToSubClass, Description("The volume relative path to the directory that is being shared."): ToSubClass Amended] string VolumeRelativePath;
	[read: ToSubClass, Description("If TRUE the share is continuously available."): ToSubClass Amended] boolean ContinuouslyAvailable;
	[read: ToSubClass, Description("If TRUE the share data transmission is encrypted."): ToSubClass Amended] boolean EncryptData;
	[read: ToSubClass, Description("The file sharing protocol used by the share."): ToSubClass Amended, ValueMap{"2", "3"}: ToSubClass, Values{"NFS", "CIFS(SMB)"}: ToSubClass Amended] uint16 FileSharingProtocol;
	[read: ToSubClass, Description("TODO"): ToSubClass Amended, ValueMap{"0", "1", "2"}: ToSubClass, Values{"Pending", "Online", "Offline"}: ToSubClass Amended] uint16 ShareState;
	[read: ToSubClass, Description("Denotes the current health status of the file share.\n 0 - 'Healthy': TBD.\n1 - 'Warning': TBD.\n2 - 'Unhealthy': TBD."): ToSubClass Amended, ValueMap{"0", "1", "2", "5"}: ToSubClass, Values{"Healthy", "Warning", "Unhealthy", "Unknown"}: ToSubClass Amended] uint16 HealthStatus;
	[read: ToSubClass, Required: DisableOverride ToSubClass, Description("An array of values that denote the current operational status of the fileshare.\n0 - 'Unknown': The operational status is unknown.\n1 - 'Other': A vendor-specific OperationalStatus has been specified by setting the OtherOperationalStatusDescription property.\n2 - 'OK': The disk is responding to commands and is in a normal operating state.\n3 - 'Degraded': The disk is responding to commands, but is not running in an optimal operating state.\n4 - 'Stressed': The disk is functioning, but needs attention. For example, the disk might be overloaded or overheated.\n5 - 'Predictive Failure': The disk is functioning, but a failure is likely to occur in the near future.\n6 - 'Error': An error has occurred.\n7 - 'Non-Recoverable Error': A non-recoverable error has occurred.\n8 - 'Starting': The disk is in the process of starting.\n9 - 'Stopping': The disk is in the process of stopping.\n10 - 'Stopped': The disk was stopped or shut down in a clean and orderly fashion.\n11 - 'In Service': The disk is being configured, maintained, cleaned, or otherwise administered.\n12 - 'No Contact': The storage provider has knowledge of the disk, but has never been able to establish communication with it.\n13 - 'Lost Communication': The storage provider has knowledge of the disk and has contacted it successfully in the past, but the disk is currently unreachable.\n14 - 'Aborted': Similar to Stopped, except that the disk stopped abruptly and may require configuration or maintenance.\n15 - 'Dormant': The disk is reachable, but it is inactive.\n16 - 'Supporting Entity in Error': This status value does not necessarily indicate trouble with the disk, but it does indicate that another device or connection that the disk depends on may need attention.\n17 - 'Completed': The disk has completed an operation. This status value should be combined with OK, Error, or Degraded, depending on the outcome of the operation.\n0xD010 - 'Online': In Windows-based storage subsystems, this indicates that the object is online.\n0xD011 - 'Not Ready': In Windows-based storage subsystems, this indicates that the object is not ready.\n0xD012 - 'No Media': In Windows-based storage subsystems, this indicates that the object has no media present.\n0xD013 - 'Offline': In Windows-based storage subsystems, this indicates that the object is offline.\n0xD014 - 'Failed': In Windows-based storage subsystems, this indicates that the object is in a failed state."): ToSubClass Amended, ValueMap{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "..", "0xD010", "0xD011", "0xD012", "0xD013", "0xD014"}: ToSubClass, Values{"Unknown", "Other", "OK", "Degraded", "Stressed", "Predictive Failure", "Error", "Non-Recoverable Error", "Starting", "Stopping", "Stopped", "In Service", "No Contact", "Lost Communication", "Aborted", "Dormant", "Supporting Entity in Error", "Completed", "Vendor Specific", "Online", "Not Ready", "No Media", "Offline", "Failed"}: ToSubClass Amended] uint16 OperationalStatus[];
	 uint32 DeleteObject([Out] MSFT_StorageJob ref CreatedStorageJob, [Out, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
	 uint32 SetDescription([In, Required: DisableOverride ToSubClass] string Description, [Out, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
	 uint32 SetAttributes([In] boolean EncryptData, [Out, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
	 uint32 GetAccessControlEntries([Out, EmbeddedInstance("MSFT_FileShareAccessControlEntry"): ToSubClass] MSFT_FileShareAccessControlEntry AccessControlEntries[], [Out, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
	 uint32 GrantAccess([In, Required: DisableOverride ToSubClass] string AccountNames[], [In, Required: DisableOverride ToSubClass] uint32 AccessRight, [Out, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
	 uint32 RevokeAccess([In, Required: DisableOverride ToSubClass] string AccountNames[], [Out, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
	 uint32 BlockAccess([In, Required: DisableOverride ToSubClass] string AccountNames[], [Out, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
	 uint32 UnblockAccess([In, Required: DisableOverride ToSubClass] string AccountNames[], [Out, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
	 uint32 Diagnose([Out, EmbeddedInstance("MSFT_StorageDiagnoseResult"): ToSubClass] MSFT_StorageDiagnoseResult DiagnoseResults[], [Out, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
	 uint32 GetActions([Out, EmbeddedInstance("MSFT_HealthAction"): ToSubClass] MSFT_HealthAction ActionResults[], [Out, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
};
[Abstract, ClassVersion("1.0"): Amended, Description("A file share access control entry object models the subsystem's concept of an access control entry for a file share."): ToSubClass Amended]
class MSFT_FileShareAccessControlEntry
{
	[read: ToSubClass, Description("The name of the account to which the access right is granted."): ToSubClass Amended] string AccountName;
	[read: ToSubClass, Description("Denotes the access type ( Allow, Deny )."): ToSubClass Amended, ValueMap{"0", "1"}: ToSubClass, Values{"Allow", "Deny"}: ToSubClass Amended] uint16 AccessControlType;
	[read: ToSubClass, Description("Denotes the access right."): ToSubClass Amended, ValueMap{"0", "1", "2", "3"}: ToSubClass, Values{"Full", "Modify", "Read", "Custom"}: ToSubClass Amended] uint16 AccessRight;
};
[Abstract, Description("This class represents health-related system activities that are rolled up and scoped by the three designated health-monitored classes, i.e. MSFT_StorageSubsystem, MSFT_FileShare, and MSFT_Volume."): ToSubClass Amended, ClassVersion("1.0"): Amended]
class MSFT_HealthAction : MSFT_StorageObject
{
	[read: ToSubClass, Description("The type of Health Action."): ToSubClass Amended] string Type;
	[read: ToSubClass, Description("The short summary description of the action."): ToSubClass Amended] string Reason;
	[read: ToSubClass, Description("A identifier of the object that triggered the action."): ToSubClass Amended] string ReportingObjectId;
	[read: ToSubClass, Description("A unique identifier of the object that triggered the action."): ToSubClass Amended] string ReportingObjectUniqueId;
	[read: ToSubClass, Description("A string that uniquely identifies the type of the object that triggered the action."): ToSubClass Amended] string ReportingObjectType;
	[read: ToSubClass, Description("The message parameters that are plugged into the default message template for the Health Action type. These can be plugged into a custom message."): ToSubClass Amended] string MessageParameters[];
	[read: ToSubClass, Description("The full description of the action."): ToSubClass Amended] string Description;
	[read: ToSubClass, Description("This is the error code if the action failed. This should be set to 0 if the action was successful. This should be NULL until the action has completed."): ToSubClass Amended] uint32 ErrorCode;
	[read: ToSubClass, Description("A free-form string that can contain a vendor-specific error description if the action failed."): ToSubClass Amended] string ErrorDescription;
	[read: ToSubClass, Description("Current high level state of the action."): ToSubClass Amended] uint16 State;
	[read: ToSubClass, Description("A free-form string that provides implementation-specific status of the action."): ToSubClass Amended] string Status;
	[read: ToSubClass, Description("The percentage of the action that has completed at the time that this value is requested."): ToSubClass Amended, Units("Percent"): ToSubClass Amended, MinValue("0"): ToSubClass, MaxValue("100"): ToSubClass] uint16 PercentComplete;
	[read: ToSubClass, Description("The time that the action was started."): ToSubClass Amended] datetime StartTime;
};
[Abstract, 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."): ToSubClass Amended, ClassVersion("1.0"): Amended]
class MSFT_MaskingSet : MSFT_StorageObject
{
	[read: ToSubClass, Required: DisableOverride ToSubClass, 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."): ToSubClass Amended] string FriendlyName;
	[read: ToSubClass, Required: DisableOverride ToSubClass, Description("Name is a user-friendly system defined name for the masking set. Name is unique within the scope of the owning storage subsystem."): ToSubClass Amended] string Name;
	[read: ToSubClass, Description("This field specifies the operating system, version, driver, and other host environment factors that influence the behavior exposed by the storage subsystem."): ToSubClass Amended, ValueMap{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22..32767", "32768..65535"}: 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"}: ToSubClass Amended] 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."): ToSubClass Amended, ValueMap{"0", "1", "2", "3", "4", "5", "40001", "40002", "46000", "46001", "53000", "53001"}: 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."}: ToSubClass Amended] uint32 AddInitiatorId([In, Required: DisableOverride ToSubClass, 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."): ToSubClass Amended] string InitiatorIds[], [In, ValueMap{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22..32767", "32768..65535"}: 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"}: ToSubClass Amended] uint16 HostType, [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."): ToSubClass Amended] MSFT_StorageJob ref CreatedStorageJob, [Out, Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information."): ToSubClass Amended, EmbeddedInstance("MSFT_StorageExtendedStatus"): 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."): ToSubClass Amended, ValueMap{"0", "1", "2", "3", "4", "5", "40001", "40002", "46000", "46001", "53000"}: 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"}: ToSubClass Amended] uint32 RemoveInitiatorId([In, Required: DisableOverride ToSubClass] string InitiatorIds[], [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."): ToSubClass Amended] MSFT_StorageJob ref CreatedStorageJob, [Out, Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information."): ToSubClass Amended, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
	[Description("This method adds one or more target ports to the masking set."): ToSubClass Amended, ValueMap{"0", "1", "2", "3", "4", "5", "40001", "40002", "46000", "46001", "54000"}: 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."}: ToSubClass Amended] uint32 AddTargetPort([In, Required: DisableOverride ToSubClass] string TargetPortAddresses[], [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."): ToSubClass Amended] MSFT_StorageJob ref CreatedStorageJob, [Out, Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information."): ToSubClass Amended, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
	[Description("This method removes one or more target ports from the masking set."): ToSubClass Amended, ValueMap{"0", "1", "2", "3", "4", "5", "40001", "40002", "46000", "46001", "54000"}: 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."}: ToSubClass Amended] uint32 RemoveTargetPort([In, Required: DisableOverride ToSubClass] string TargetPortAddresses[], [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."): ToSubClass Amended] MSFT_StorageJob ref CreatedStorageJob, [Out, Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information."): ToSubClass Amended, EmbeddedInstance("MSFT_StorageExtendedStatus"): 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."): ToSubClass Amended, ValueMap{"0", "1", "2", "3", "4", "5", "40001", "40002", "46000", "46001", "50000", "52000", "52002"}: 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."}: ToSubClass Amended] uint32 AddVirtualDisk([In, Required: DisableOverride ToSubClass] string VirtualDiskNames[], [In, Required: DisableOverride ToSubClass] string DeviceNumbers[], [In, Required: DisableOverride ToSubClass, ValueMap{"2", "3", "4"}: ToSubClass, Values{"Read Write", "Read-Only", "No Access"}: ToSubClass Amended] uint16 DeviceAccesses[], [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."): ToSubClass Amended] MSFT_StorageJob ref CreatedStorageJob, [Out, Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information."): ToSubClass Amended, EmbeddedInstance("MSFT_StorageExtendedStatus"): 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."): ToSubClass Amended, ValueMap{"0", "1", "2", "3", "4", "5", "40001", "40002", "46000", "46001", "50000"}: 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."}: ToSubClass Amended] uint32 RemoveVirtualDisk([In, Required: DisableOverride ToSubClass] string VirtualDiskNames[], [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."): ToSubClass Amended] MSFT_StorageJob ref CreatedStorageJob, [Out, Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information."): ToSubClass Amended, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
	[Description("This method deletes the masking set instance."): ToSubClass Amended, ValueMap{"0", "1", "2", "3", "4", "5", "40001", "40002", "40003", "46000", "46001"}: 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."}: ToSubClass Amended] uint32 DeleteObject([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."): ToSubClass Amended] MSFT_StorageJob ref CreatedStorageJob, [Out, Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information."): ToSubClass Amended, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
	[Description("This method allows the FriendlyName to be set."): ToSubClass Amended, ValueMap{"0", "1", "2", "3", "4", "5", "40001", "40002", "40003", "46000", "46001"}: 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."}: ToSubClass Amended] uint32 SetFriendlyName([In, Required: DisableOverride ToSubClass] string FriendlyName, [Out, Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information."): ToSubClass Amended, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
	[Description("This method returns the security descriptor that controls access to this specific object instance."): ToSubClass Amended, ValueMap{"0", "1", "2", "3", "4", "5", "40001", "40002", "46000", "46001"}: 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."}: ToSubClass Amended] uint32 GetSecurityDescriptor([Out, Required: DisableOverride ToSubClass, Description("A Security Descriptor Definition Language (SDDL) formed string describing the access control list of the object."): ToSubClass Amended] string SecurityDescriptor, [Out, Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information."): ToSubClass Amended, EmbeddedInstance("MSFT_StorageExtendedStatus"): 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."): ToSubClass Amended, ValueMap{"0", "1", "2", "3", "4", "5", "40001", "40002", "46000", "46001"}: 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."}: ToSubClass Amended] uint32 SetSecurityDescriptor([In, Required: DisableOverride ToSubClass, Description("A Security Descriptor Definition Language (SDDL) formed string describing the desired access control list for this object."): ToSubClass Amended] string SecurityDescriptor, [Out, Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information."): ToSubClass Amended, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
};
[Description("Represents a partition on a disk."): ToSubClass Amended, ClassVersion("1.0"): Amended]
class MSFT_Partition : MSFT_StorageObject
{
	[read: ToSubClass, Description("This property is identical to the ObjectId field of the disk object that contains this partition."): ToSubClass Amended, ModelCorrespondence{"MSFT_Disk.ObjectId"}: ToSubClass] string DiskId;
	[read: ToSubClass, Required: DisableOverride ToSubClass, Description("The operating system's number for the disk that contains this partition. Disk numbers may not necessarily remain the same across reboots."): ToSubClass Amended, ModelCorrespondence{"MSFT_Disk.Number"}: ToSubClass] uint32 DiskNumber;
	[read: ToSubClass, Required: DisableOverride ToSubClass, 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."): ToSubClass Amended] uint32 PartitionNumber;
	[read: ToSubClass, Description("The currently assigned drive letter to the partition. This property is NULL if no drive letter has been assigned."): ToSubClass Amended] char16 DriveLetter;
	[read: ToSubClass, 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."): ToSubClass Amended] string AccessPaths[];
	[read: ToSubClass, ValueMap{"0", "1", "3", "5", "4"}: ToSubClass, Values{"Unknown", "Online", "No Media", "Failed", "Offline"}: ToSubClass Amended] uint16 OperationalStatus;
	[read: ToSubClass] uint16 TransitionState;
	[read: ToSubClass, Description("This property indicates the partition's offset from the beginning of the disk, measured in bytes."): ToSubClass Amended, Units("Bytes"): ToSubClass Amended] uint64 Offset;
	[read: ToSubClass, Required: DisableOverride ToSubClass, Description("Total size of the partition, measured in bytes."): ToSubClass Amended, Units("Bytes"): ToSubClass Amended] uint64 Size;
	[read: ToSubClass, 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."): ToSubClass Amended, ValueMap{"1", "4", "5", "6", "7", "12"}: ToSubClass, Values{"FAT12", "FAT16", "Extended", "Huge", "IFS", "FAT32"}: ToSubClass Amended] uint16 MbrType;
	[read: ToSubClass, 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."): ToSubClass Amended, ValueMap{"{c12a7328-f81f-11d2-ba4b-00a0c93ec93b}", "{e3c9e316-0b5c-4db8-817d-f92df00215ae}", "{ebd0a0a2-b9e5-4433-87c0-68b6b72699c7}", "{5808c8aa-7e8f-42e0-85d2-e1e90434cfb3}", "{af9b60a0-1431-4f62-bc68-3311714a69ad}", "{de94bba4-06d1-4d40-a16a-bfd50179d6ac}"}: ToSubClass, Values{"System Partition", "Microsoft Reserved", "Basic data", "LDM Metadata", "LDM Data", "Microsoft Recovery"}: ToSubClass Amended] string GptType;
	[read: ToSubClass, 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."): ToSubClass Amended] string Guid;
	[read: ToSubClass] boolean IsReadOnly;
	[read: ToSubClass] boolean IsOffline;
	[read: ToSubClass] boolean IsSystem;
	[read: ToSubClass] boolean IsBoot;
	[read: ToSubClass, Description("Signifies whether or not the partition is active and can be booted. This property is only relevant for MBR disks."): ToSubClass Amended] boolean IsActive;
	[read: ToSubClass, 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."): ToSubClass Amended] boolean IsHidden;
	[read: ToSubClass, 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."): ToSubClass Amended] boolean IsShadowCopy;
	[read: ToSubClass] boolean IsDAX;
	[read: ToSubClass, 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."): ToSubClass Amended] boolean NoDefaultDriveLetter;
	[Required: DisableOverride ToSubClass] uint32 DeleteObject([Out, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
	 uint32 GetAccessPaths([Out] string AccessPaths[], [Out, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
	 uint32 AddAccessPath([In] string AccessPath, [In] boolean AssignDriveLetter, [Out, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
	 uint32 RemoveAccessPath([In, Required: DisableOverride ToSubClass] string AccessPath, [Out, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
	 uint32 Resize([In, Required: DisableOverride ToSubClass] uint64 Size, [Out, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
	 uint32 GetSupportedSize([Out] uint64 SizeMin, [Out] uint64 SizeMax, [Out, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
	 uint32 Online([Out, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
	 uint32 Offline([Out, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
	 uint32 SetAttributes([In] boolean IsReadOnly, [In] boolean NoDefaultDriveLetter, [In] boolean IsActive, [In] boolean IsHidden, [In] boolean IsShadowCopy, [In] boolean IsDAX, [In] uint16 MbrType, [In] string GptType, [Out, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
};
[Abstract, ClassVersion("1.0"): Amended, Description("Synchronized status of a storage object and its Snapshots / Clones / Mirrors."): ToSubClass Amended]
class MSFT_Synchronized
{
	[read: ToSubClass, Description("The point in time that the virtual disks were synchronized."): ToSubClass Amended] datetime SyncTime;
	[read: ToSubClass, Description("Boolean indicating whether synchronization is maintained."): ToSubClass Amended] boolean SyncMaintained;
	[read: ToSubClass, 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."): ToSubClass Amended, ValueMap{"2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "..", "0x8000.."}: ToSubClass, Values{"Initialized", "Unsynchronized", "Synchronized", "Broken", "Fractured", "Split", "Inactive", "Suspended", "Failedover", "Prepared", "Aborted", "Skewed", "Mixed", "Not Applicable", "Microsoft Reserved", "Vendor Specific"}: ToSubClass Amended] uint16 CopyState;
	[read: ToSubClass, 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."): ToSubClass Amended] uint16 RequestedCopyState = 15;
	[read: ToSubClass, 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."): ToSubClass Amended, ValueMap{"..", "6", "7", "8", "..", "0x8000.."}: ToSubClass, Values{"Microsoft Reserved", "Mirror", "Snapshot", "Clone", "Microsoft Reserved", "Vendor Specific"}: ToSubClass Amended] uint16 SyncType;
	[read: ToSubClass, Description("Mode describes whether the target elements will be updated synchronously or asynchronously. If NULL, implementation decides the mode."): ToSubClass Amended, ValueMap{"0", "2", "3", "..", "32768..65535"}: ToSubClass, Values{"Unknown", "Synchronous", "Asynchronous", "Microsoft Reserved", "Vendor Specific"}: ToSubClass Amended] uint16 SyncMode;
	[read: ToSubClass, 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."): ToSubClass Amended, ValueMap{"0", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "..", "0x8000.."}: 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"}: ToSubClass Amended] uint16 ProgressStatus;
	[read: ToSubClass, 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."): ToSubClass Amended] uint16 PercentSynced;
	[read: ToSubClass, 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."): ToSubClass Amended, ValueMap{"2", "3", "4", "5", "..", "0x8000.."}: ToSubClass, Values{"Async", "Sync", "UnSyncAssoc", "UnSyncUnAssoc", "Microsoft Reserved", "Vendor Specific"}: ToSubClass Amended] uint16 CopyType;
	[read: ToSubClass, 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."): ToSubClass Amended, ValueMap{"0", "2", "3", "4", "5", "..", "0x8000.."}: ToSubClass, Values{"Not Specified", "Full Copy", "Before Delta", "After Delta", "Log", "Microsoft Reserved", "Vendor Specific"}: ToSubClass Amended] uint16 ReplicaType;
	[read: ToSubClass, 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"): ToSubClass Amended, ValueMap{"2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "..", "0x8000.."}: 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"}: ToSubClass Amended] uint16 SyncState;
	[read: ToSubClass, 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."): ToSubClass Amended, ValueMap{"0", "1", "2", "3", "..", "0x8000.."}: ToSubClass, Values{"Not Managed", "Low", "Same", "High", "Microsoft Reserved", "Vendor Specific"}: ToSubClass Amended] uint16 CopyPriority;
	[read: ToSubClass, 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."): ToSubClass Amended, ValueMap{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "..", "0x8000.."}: 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"}: ToSubClass Amended] uint16 CopyMethodology;
	[read: ToSubClass, Description("Recovery Point Objective indicates the maximum interval in which data might be lost. For synchronous copy operations, RPO is 0. For asynchronous copy operations RPO represents the interval since the most recent transmission of data to the target element."): ToSubClass Amended] uint16 RecoveryPointObjective[];
};
[Association: DisableOverride ToSubClass, Description("Association between replicated partitions"): ToSubClass Amended, ClassVersion("1.0"): Amended]
class MSFT_PartitionToReplicaPeer : MSFT_Synchronized
{
	[key] MSFT_Partition ref Partition;
	[key] MSFT_ReplicaPeer ref ReplicaPeer;
};
[Abstract, Description("Common base class for all storage fault domain objects"): ToSubClass Amended, ClassVersion("1.0"): Amended]
class MSFT_StorageFaultDomain : MSFT_StorageObject
{
	[read: ToSubClass, Description("A user-friendly string representing the name of the fault domain object."): ToSubClass Amended] string FriendlyName;
	[read: ToSubClass, Description("A user settable description of the fault domain object."): ToSubClass Amended] string Description;
	[read: ToSubClass, Description("This field represents the name of the company responsible for the hardware backing the fault domain oject. For physical disk it must match the disk's SCSI inquiry data."): ToSubClass Amended] string Manufacturer;
	[read: ToSubClass, Description("This field represents the model number of the hardware. For physical disk it must match the disk's SCSI inquiry data."): ToSubClass Amended] string Model;
	[read: ToSubClass, Description("This field represents the serial number of the hardware. For physical disk it must match the disk's SCSI inquiry data."): ToSubClass Amended] string SerialNumber;
	[read: ToSubClass, Description("This field is a free-form string indicating where the hardware is located."): ToSubClass Amended] string PhysicalLocation;
	[read: ToSubClass, ValueMap{"0", "1", "2", "5"}: ToSubClass, Values{"Healthy", "Warning", "Unhealthy", "Unknown"}: ToSubClass Amended] uint16 HealthStatus;
	[read: ToSubClass, ValueMap{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "..", "0xD004", "0xD005", "0xD006", "0xD007", "0xD008", "0xD015", "0xD016", "0xD017", "0xD018.."}: ToSubClass, Values{"Unknown", "Other", "OK", "Degraded", "Stressed", "Predictive Failure", "Error", "Non-Recoverable Error", "Starting", "Stopping", "Stopped", "In Service", "No Contact", "Lost Communication", "Aborted", "Dormant", "Supporting Entity in Error", "Completed", "Power Mode", "Relocating", "Microsoft Reserved", "Failed Media", "Split", "Stale Metadata", "IO Error", "Unrecognized Metadata", "Removing From Pool", "In Maintenance Mode", "Updating Firmware", "Microsoft Reserved"}: ToSubClass Amended] uint16 OperationalStatus[];
	[read: ToSubClass] string OperationalDetails[];
};
[Abstract, Description("A subsystem drive or spindle."): ToSubClass Amended, ClassVersion("1.0"): Amended]
class MSFT_PhysicalDisk : MSFT_StorageFaultDomain
{
	[read: ToSubClass, Required: DisableOverride ToSubClass, Description("UniqueIdFormat indicates the type of identifier used in the UniqueId field. The identifier used in UniqueId must be the highest available identifier using the following order of preference: 8 (highest), 3, 2, 1, 0 (lowest). For example: if the physical disk device exposes identifiers of type 0, 1, and 3, UniqueId must be the identifier of type 3, and UniqueIdFormat should be set to 3."): ToSubClass Amended, ValueMap{"0", "1", "2", "3", "8"}: ToSubClass, Values{"Vendor Specific", "Vendor Id", "EUI64", "FCPH Name", "SCSI Name String"}: ToSubClass Amended, ModelCorrespondence{"MSFT_StorageObject.UniqueId"}: ToSubClass] uint16 UniqueIdFormat;
	[read: ToSubClass, Description("DeviceId is an address or other identifier that uniquely names the physical disk."): ToSubClass Amended] string DeviceId;
	[read: ToSubClass, Required: DisableOverride ToSubClass, 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."): ToSubClass Amended, ValueMap{"0", "1", "2", "3", "4", "5"}: ToSubClass, Values{"Unknown", "Auto-Select", "Manual-Select", "Hot Spare", "Retired", "Journal"}: ToSubClass Amended] uint16 Usage;
	[read: ToSubClass, Required: DisableOverride ToSubClass, Description("This field describes the supported usages of this physical disk."): ToSubClass Amended, ValueMap{"1", "2", "3", "4", "5"}: ToSubClass, Values{"Auto-Select", "Manual-Select", "Hot Spare", "Retired", "Journal"}: ToSubClass Amended] uint16 SupportedUsages[];
	[read: ToSubClass, Required: DisableOverride ToSubClass, Description("This field is a string representation of the physical disk's part number or SKU."): ToSubClass Amended] string PartNumber;
	[read: ToSubClass, Required: DisableOverride ToSubClass, Description("This field is a string representation of the physical disk's firmware version."): ToSubClass Amended] string FirmwareVersion;
	[read: ToSubClass, Required: DisableOverride ToSubClass, Description("This field is a string representation of the physical disk's software version."): ToSubClass Amended] string SoftwareVersion;
	[read: ToSubClass, Required: DisableOverride ToSubClass, Description("Indicates the total physical storage size of the disk in bytes"): ToSubClass Amended, Units("Bytes"): ToSubClass Amended] uint64 Size;
	[read: ToSubClass, 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."): ToSubClass Amended, Units("Bytes"): ToSubClass Amended] uint64 AllocatedSize;
	[read: ToSubClass, Description("This field indicates the size in bytes of the user data footprint from virtual disks on this physical disk."): ToSubClass Amended, Units("Bytes"): ToSubClass Amended] uint64 VirtualDiskFootprint;
	[read: ToSubClass, Required: DisableOverride ToSubClass, ValueMap{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18.."}: ToSubClass, 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"}: ToSubClass Amended] uint16 BusType;
	[read: ToSubClass, Required: DisableOverride ToSubClass, 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."): ToSubClass Amended, Units("Bytes"): ToSubClass Amended] uint64 PhysicalSectorSize;
	[read: ToSubClass, Required: DisableOverride ToSubClass, 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."): ToSubClass Amended, Units("Bytes"): ToSubClass Amended] uint64 LogicalSectorSize;
	[read: ToSubClass, Required: DisableOverride ToSubClass, Description("This field indicates the rotational speed of spindle-based physical disks. For solid state devices (SSDs) or other non-rotational media, this field should set to 0. For rotating media which has an unknown speed, this field should be set to -1 (UINT32_MAX)."): ToSubClass Amended, Units("RPM"): ToSubClass Amended] uint32 SpindleSpeed;
	[read: ToSubClass, Description("Indicates whether the physical disk's identification LEDs are active or not. This is typically used in maintenance operations."): ToSubClass Amended] boolean IsIndicationEnabled;
	[read: ToSubClass, Description("Indicates the enclosure number in which the disk physically resides"): ToSubClass Amended] uint16 EnclosureNumber;
	[read: ToSubClass, Description("Indicates the enclosure slot number in which the disk physically resides"): ToSubClass Amended] uint16 SlotNumber;
	[read: ToSubClass] string StoragePoolUniqueId;
	[read: ToSubClass, Required: DisableOverride ToSubClass, Description("Indicates whether this physical disk can be added to a concrete pool or not"): ToSubClass Amended] boolean CanPool;
	[read: ToSubClass, Required: DisableOverride ToSubClass, Description("Indicates the reason why this physical disk cannot be added to a concrete pool"): ToSubClass Amended, ValueMap{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "..", "0x8000", "0x8001", "0x8002", "0x8003", "0x8004.."}: ToSubClass, Values{"Unknown", "Other", "In a Pool", "Not Healthy", "Removable Media", "In Use by Cluster", "Offline", "Insufficient Capacity", "Spare Disk", "Reserved by subsystem", "Starting", "Partial SCM", "Discovery Disabled", "Microsoft Reserved", "Verification in progress", "Verification failed", "Firmware not compliant", "Hardware not compliant", "Vendor Reserved"}: ToSubClass Amended] uint16 CannotPoolReason[];
	[read: ToSubClass, 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'."): ToSubClass Amended] string OtherCannotPoolReasonDescription;
	[read: ToSubClass, Description("Indicates whether this physical disk is partially consumed by a system or service whose use is outside of normal storage pool operations."): ToSubClass Amended] boolean IsPartial;
	[Description("Media type of this physical disk"): ToSubClass Amended, ValueMap{"0", "3", "4"}: ToSubClass, Values{"Unspecified", "HDD", "SSD"}: ToSubClass Amended] uint16 MediaType;
	[read: ToSubClass, Description("A string representation of the Adapter's serial number."): ToSubClass Amended] string AdapterSerialNumber;
	 uint32 GetPhysicalExtent([Out, EmbeddedInstance("MSFT_PhysicalExtent"): ToSubClass] MSFT_PhysicalExtent PhysicalExtents[], [Out, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
	[Description("This method allows a user to perform certain maintenance tasks on the physical disk. "): ToSubClass Amended, ValueMap{"0", "1", "2", "3", "4", "5", "40001", "40002", "46000", "46001", "48006", "48007"}: 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."}: ToSubClass Amended] 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."): ToSubClass Amended] boolean EnableIndication, [Out, Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information."): ToSubClass Amended, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
	 uint32 Maintenance2([In] boolean EnableIndication, [In] boolean ValidateMaintenanceMode, [In] boolean EnableMaintenanceMode, [In] uint32 Timeout, [In] boolean IgnoreDetachedVirtualDisks, [Out, EmbeddedInstance("MSFT_StorageExtendedStatus"): 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."): ToSubClass Amended, ValueMap{"0", "1", "2", "3", "4", "5", "40001", "40002", "46000", "46001", "48006", "48007"}: 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."}: ToSubClass Amended] uint32 Reset([Out, Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information."): ToSubClass Amended, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
	[Description("This method allows the physical disk to be renamed."): ToSubClass Amended, ValueMap{"0", "1", "2", "3", "4", "5", "40001", "40002", "46000", "46001", "48006", "48007"}: 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."}: ToSubClass Amended] uint32 SetFriendlyName([In, Required: DisableOverride ToSubClass] string FriendlyName, [Out, Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information."): ToSubClass Amended, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
	[Description("This method allows the physical disk's description to be changed."): ToSubClass Amended, ValueMap{"0", "1", "2", "3", "4", "5", "40001", "40002", "46000", "46001", "48006", "48007"}: 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."}: ToSubClass Amended] uint32 SetDescription([In, Required: DisableOverride ToSubClass] string Description, [Out, Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information."): ToSubClass Amended, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
	[Description("This method allows the physical disk's usage to be updated."): ToSubClass Amended, ValueMap{"0", "1", "2", "3", "4", "5", "40001", "40002", "46000", "46001", "48006", "48007"}: 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."}: ToSubClass Amended] uint32 SetUsage([In, Required: DisableOverride ToSubClass, 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."): ToSubClass Amended, ValueMap{"1", "2", "3", "4", "5"}: ToSubClass, Values{"Auto-Select", "Manual-Select", "Hot Spare", "Retired", "Journal"}: ToSubClass Amended] uint16 Usage, [Out, Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information."): ToSubClass Amended, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
	[Description("This method allows the physical disk's attributes to be updated."): ToSubClass Amended, ValueMap{"0", "1", "2", "3", "4", "5", "40001", "40002", "46000", "46001", "48006", "48007"}: 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."}: ToSubClass Amended] uint32 SetAttributes([In, Required: DisableOverride ToSubClass, Description("Media type of this physical disk"): ToSubClass Amended, ValueMap{"3", "4"}: ToSubClass, Values{"HDD", "SSD"}: ToSubClass Amended] uint16 MediaType, [Out, Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information."): ToSubClass Amended, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
	 uint32 SetAttributes2([In] uint16 MediaType, [In] string StorageEnclosureId, [In] string StorageScaleUnitId, [In] boolean IsHidden, [Out] string ExtendedStatus);
	 uint32 IsDeviceCacheEnabled([Out] boolean IsDeviceCacheEnabled, [Out, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
	 uint32 IsPowerProtected([Out] boolean IsPowerProtected, [Out, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
	 uint32 GetFirmwareInformation([Out] boolean SupportsUpdate, [Out] uint16 NumberOfSlots, [Out] uint16 ActiveSlotNumber, [Out] uint16 SlotNumber[], [Out] boolean IsSlotWritable[], [Out] string FirmwareVersionInSlot[], [Out, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
	 uint32 UpdateFirmware([In] string ImagePath, [In] uint16 SlotNumber, [Out, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
};
[Abstract, ClassVersion("1.0"): Amended, Description("Physical extent properties."): ToSubClass Amended]
class MSFT_PhysicalExtent
{
	[read: ToSubClass, Description("The unique id of the storage tier associated with this extent."): ToSubClass Amended] string StorageTierUniqueId;
	[read: ToSubClass, Description("The unique id of the virtual disk associated with this extent."): ToSubClass Amended] string VirtualDiskUniqueId;
	[read: ToSubClass, Description("The byte offset of this extent from the start of the virtual disk."): ToSubClass Amended] uint64 VirtualDiskOffset;
	[read: ToSubClass, Description("The column number associated with this extent."): ToSubClass Amended] uint16 ColumnNumber;
	[read: ToSubClass, Description("The copy number associated with this extent."): ToSubClass Amended] uint16 CopyNumber;
	[read: ToSubClass, Description("The copy number of the replacement for this extent."): ToSubClass Amended] uint16 ReplacementCopyNumber;
	[read: ToSubClass, Description("The unique id of the physical disk associated with this extent."): ToSubClass Amended] string PhysicalDiskUniqueId;
	[read: ToSubClass, Description("The byte offset of this extent from the start of the physical disk."): ToSubClass Amended] uint64 PhysicalDiskOffset;
	[read: ToSubClass, Description("The size of this extent in bytes."): ToSubClass Amended] uint64 Size;
	[read: ToSubClass, Description("The flags associated with this extent."): ToSubClass Amended] uint64 Flags;
	[read: ToSubClass, Description("The operational statuses associated with this extent."): ToSubClass Amended] uint16 OperationalStatus[];
	[read: ToSubClass, Description("The operational details associated with this extent."): ToSubClass Amended] string OperationalDetails[];
};
[Abstract, Description("An enumerable object that represents an object in a target subsystem for which there is a replication relationship."): ToSubClass Amended, ClassVersion("1.0"): Amended]
class MSFT_ReplicaPeer : MSFT_StorageObject
{
	[read: ToSubClass, Description("The object type of this replica peer."): ToSubClass Amended, ValueMap{"4", "5", "..", "0x8000", "0x8001", "0x8002"}: ToSubClass, Values{"VirtualDisk", "Volume", "Partition", "ReplicationGroup", "StorageSubSystem"}: ToSubClass Amended] uint16 PeerObjectType;
	[read: ToSubClass, Description("The ObjectId of the replica peer within the replica's storage subsystem."): ToSubClass Amended] string PeerObjectId;
	[read: ToSubClass, Description("The name of the replica peer within the replica's storage subsystem."): ToSubClass Amended] string PeerObjectName;
	[read: ToSubClass, Required: DisableOverride ToSubClass, Description("The UniqueId of the replica peer within the replica's storage subsystem."): ToSubClass Amended] string PeerUniqueId;
	[read: ToSubClass, Required: DisableOverride ToSubClass, Description("The subsystem name of the replica peer within the replica's storage subsystem."): ToSubClass Amended] string PeerSubsystemName;
	[read: ToSubClass, 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."): ToSubClass Amended] string PeerProviderURI;
	[read: ToSubClass, Description("Indicates if the ReplicaPeer is primary i.e: If the ReplicaPeer is a System Element and not a Synced Element"): ToSubClass Amended] boolean IsPrimary;
	[write: ToSubClass, Description("Populated when \"Type\" has the value of \"EmbeddedInstance\"."): ToSubClass Amended, EmbeddedInstance("MSFT_StorageObject"): ToSubClass, ModelCorrespondence{"MSFT_ReplicaPeer.PeerObjectType"}: ToSubClass] MSFT_StorageObject PeerObject;
};
[Description("Represents the replication capabilities of a storage subsystem."): ToSubClass Amended, ClassVersion("1.0"): Amended]
class MSFT_ReplicationCapabilities : MSFT_StorageObject
{
	[Description("Enumeration indicating the supported object types associated with these replication capabilities."): ToSubClass Amended, ValueMap{"2", "3", "4", "..", "0x8000", "0x8001", "0x8002"}: ToSubClass, Values{"VirtualDisk", "Volume", "ReplicaPeer", "Partition", "ReplicationGroup", "StorageSubSystem"}: ToSubClass Amended] uint16 SupportedObjectTypes[];
	[Description("Enumeration indicating the supported SyncType/Mode/Local-or-Remote combinations."): ToSubClass Amended, ValueMap{"2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "..", "0x8000.."}: ToSubClass, Values{"Synchronous Mirror Local", "Asynchronous Mirror Local", "Synchronous Mirror Remote", "Asynchronous Mirror Remote", "Synchronous Snapshot Local", "Asynchronous Snapshot Local", "Synchronous Snapshot Remote", "Asynchronous Snapshot Remote", "Synchronous Clone Local", "Asynchronous Clone Local", "Synchronous Clone Remote", "Asynchronous Clone Remote", "Synchronous TokenizedClone Local", "Asynchronous TokenizedClone Local", "Synchronous TokenizedClone Remote", "Asynchronous TokenizedClone Remote", "Adaptive Mirror Local", "Adaptive Mirror Remote", "Adaptive Snapshot Local", "Adaptive Snapshot Remote", "Adaptive Clone Local", "Adaptive Clone Remote", "Adaptive TokenizedClone Local", "Adaptive TokenizedClone Remote", "DMTF Reserved", "Vendor Specific"}: ToSubClass Amended] uint16 SupportedReplicationTypes[];
	[Description("An array of supported features of partition objects for replication."): ToSubClass Amended, ValueMap{"2", "3", "..", "0x8000.."}: ToSubClass, Values{"Supports GUID Partition Table", "Supports MBR Partition", "DMTF Reserved", "Vendor Specific"}: ToSubClass Amended] uint16 SupportedReplicatedPartitionFeatures[];
	[Description("An array of supported features of partition objects for replication."): ToSubClass Amended, ValueMap{"2", "3", "4", "5", "6", "..", "0x8000.."}: ToSubClass, Values{"Supports GUID Partition Table", "Supports MBR Partition", "Supports NTFS File System", "Supports ReFS File System", "Supports Cluster Shared Volume", "DMTF Reserved", "Vendor Specific"}: ToSubClass Amended] uint16 SupportedLogVolumeFeatures[];
	[Description("Minimum log size in bytes supported for replication."): ToSubClass Amended] uint64 SupportedMinimumLogSize;
	[Description("Maximum log size in bytes supported for replication."): ToSubClass Amended] uint64 SupportedMaximumLogSize;
	[Description("Default value for recovery point"): ToSubClass Amended] uint32 DefaultRecoveryPointObjective;
	[Description("Indicates if Replication Groups is supported"): ToSubClass Amended] boolean SupportsReplicationGroup;
	[Description("Indicates if empty Replicaiotn Groups are allowed"): ToSubClass Amended] boolean SupportsEmptyReplicationGroup;
	[Description("Indicates if this is a fully discovered model"): ToSubClass Amended] boolean SupportsFullDiscovery;
	[Description("Indicates if CreateReplicationShip operation is supported"): ToSubClass Amended] boolean SupportsCreateReplicationRelationshipMethod;
	[Description("Enumeration indicating what operations will be executed as asynchronous jobs. If an operation is included in both this and SupportedSynchronousActions properties then the underlying implementation is indicating that it may or may not create a job.\nNote: the following methods are not supported asynchronously, hence the gap between 11 and 19: \n\t - CreateGroup \n\t - DeleteGroup \n\t - AddMembers \n\t - RemoveMembers \n\t - AddReplicationEntity \n\t - AddServiceAccessPoint \n\t - AddSharedSecret."): ToSubClass Amended, ValueMap{"2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "..", "0x8000.."}: ToSubClass, Values{"CreateElementReplica", "CreateGroupReplica", "CreateSynchronizationAspect", "ModifyReplicaSynchronization", "ModifyListSynchronization", "ModifySettingsDefineState", "GetAvailableTargetElements", "GetPeerSystems", "GetReplicationRelationships", "GetServiceAccessPoints", "CreateListReplica", "CreateGroupReplicaFromElements", "GetReplicationRelationshipInstances", "ModifyListSettingsDefineState", "CreateRemoteReplicationCollection", "AddToRemoteReplicationCollection", "RemoveFromRemoteReplicationCollection", "GetSynchronizationAspects", "GetSynchronizationAspectInstances", "CreateGroupReplicaFromElementSynchronizations", "AddElementsToGroupSynchronized", "ConfirmTargetData", "CreateListSynchronizationAspect", "DMTF Reserved", "Vendor Specific"}: ToSubClass Amended, ModelCorrespondence{"CIM_ReplicationServiceCapabilities.SupportedSynchronousActions"}: ToSubClass] uint16 SupportedAsynchronousActions[];
	[Description("Enumeration indicating what operations will be executed synchronously -- without the creation of a job. If an operation is included in both this property and SupportedAsynchronousActions then the underlying implementation is indicating that it may or may not create a job.\nNote: the following methods are not supported asynchronously: \n\t - CreateGroup \n\t - DeleteGroup \n\t - AddMembers \n\t - RemoveMembers \n\t - AddReplicationEntity \n\t - AddServiceAccessPoint \n\t - AddSharedSecret."): ToSubClass Amended, ValueMap{"2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "..", "0x8000.."}: ToSubClass, Values{"CreateElementReplica", "CreateGroupReplica", "CreateSynchronizationAspect", "ModifyReplicaSynchronization", "ModifyListSynchronization", "ModifySettingsDefineState", "GetAvailableTargetElements", "GetPeerSystems", "GetReplicationRelationships", "GetServiceAccessPoints", "CreateGroup", "DeleteGroup", "AddMembers", "RemoveMembers", "AddReplicationEntity", "AddServiceAccessPoint", "AddSharedSecret", "CreateListReplica", "CreateGroupReplicaFromElements", "GetReplicationRelationshipInstances", "ModifyListSettingsDefineState", "CreateRemoteReplicationCollection", "AddToRemoteReplicationCollection", "RemoveFromRemoteReplicationCollection", "GetSynchronizationAspects", "GetSynchronizationAspectInstances", "CreateGroupReplicaFromElementSynchronizations", "AddElementsToGroupSynchronized", "ConfirmTargetData", "CreateListSynchronizationAspect", "DMTF Reserved", "Vendor Specific"}: ToSubClass Amended, ModelCorrespondence{"CIM_ReplicationServiceCapabilities.SupportedAsynchronousActions"}: ToSubClass] uint16 SupportedSynchronousActions[];
	 uint32 GetSupportedOperations([In, ModelCorrespondence{"MSFT_ReplicationCapabilities.SupportedReplicationTypes"}: ToSubClass] uint16 ReplicationType, [Out] uint16 SupportedOperations[], [Out, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
	 uint32 GetSupportedGroupOperations([In, ModelCorrespondence{"MSFT_ReplicationCapabilities.SupportedReplicationTypes"}: ToSubClass] uint16 ReplicationType, [Out] uint16 SupportedGroupOperations[], [Out, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
	 uint32 GetSupportedFeatures([In, ModelCorrespondence{"MSFT_ReplicationCapabilities.SupportedReplicationTypes"}: ToSubClass] uint16 ReplicationType, [Out] uint16 Features[], [Out, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
	 uint32 GetSupportedGroupFeatures([In, ModelCorrespondence{"CIM_ReplicationServiceCapabilities.SupportedReplicationTypes"}: ToSubClass] uint16 ReplicationType, [Out] uint16 GroupFeatures[], [Out, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
	 uint32 GetSupportedCopyStates([In, ModelCorrespondence{"MSFT_ReplicationCapabilities.SupportedReplicationTypes"}: ToSubClass] uint16 ReplicationType, [Out] uint16 SupportedCopyStates[], [Out, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
	 uint32 GetSupportedGroupCopyStates([In, ModelCorrespondence{"MSFT_ReplicationCapabilities.SupportedReplicationTypes"}: ToSubClass] uint16 ReplicationType, [Out] uint16 SupportedCopyStates[], [Out, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
	 uint32 GetRecoveryPointData([In, ModelCorrespondence{"MSFT_ReplicationCapabilities.SupportedReplicationTypes"}: ToSubClass] uint16 ReplicationType, [Out] uint32 DefaultRecoveryPoint, [Out] uint32 RecoveryPointValues[], [Out] uint16 RecoveryPointIndicator, [Out, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
};
[Description("A replication group represents a consistency grouping of storage replicas."): ToSubClass Amended, ClassVersion("1.0"): Amended]
class MSFT_ReplicationGroup : MSFT_StorageObject
{
	[read: ToSubClass, Required: DisableOverride ToSubClass, Description("A user-friendly string representing the name of the replication group."): ToSubClass Amended] string FriendlyName;
	[read: ToSubClass, Description("A user-friendly string representing the description of the replication group."): ToSubClass Amended] string Description;
	[read: ToSubClass, Required: DisableOverride ToSubClass, Description("Denotes the current health status of the replication group. Health of a group is derived from the health of the backing storage replicas.\n 0 - 'Healthy': All replicas are in a healthy state. \n1 - 'Warning': The majority of replicas are healthy, but one or more may be not fully synchronized. \n2 - 'Unhealthy': The majority of replicas are unhealthy or in a failed state."): ToSubClass Amended, ValueMap{"0", "1", "2", "5"}: ToSubClass, Values{"Healthy", "Warning", "Unhealthy", "Unknown"}: ToSubClass Amended] uint16 HealthStatus;
	[read: ToSubClass, Description("Indicates the current operating conditions of the group. Unlike HealthStatus, this field indicates the status of hardware, software, and infrastructure issues related to this group, and can contain multiple values."): ToSubClass Amended, ValueMap{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", ".."}: 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"}: ToSubClass Amended] uint16 OperationalStatus[];
	 uint32 CreateReplica([In] string FriendlyName, [In, Required: DisableOverride ToSubClass, EmbeddedInstance("MSFT_ReplicaPeer"): ToSubClass] MSFT_ReplicaPeer TargetStorageSubsystem, [In, Required: DisableOverride ToSubClass] string TargetGroupObjectId, [In] string TargetStoragePoolObjectId, [In] uint32 RecoveryPointObjective, [In, Required: DisableOverride ToSubClass, EmbeddedInstance("MSFT_ReplicationSettings"): ToSubClass] MSFT_ReplicationSettings ReplicationSettings, [In, Required: DisableOverride ToSubClass] uint16 SyncType, [Out, EmbeddedInstance("MSFT_ReplicaPeer"): ToSubClass] MSFT_ReplicaPeer CreatedReplicaPeer, [Out] MSFT_StorageJob ref CreatedStorageJob, [Out, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
	 uint32 SetReplicationRelationship([In, Required: DisableOverride ToSubClass] uint16 Operation, [In, Required: DisableOverride ToSubClass, EmbeddedInstance("MSFT_ReplicaPeer"): ToSubClass] MSFT_ReplicaPeer TargetGroup, [In, Required: DisableOverride ToSubClass, EmbeddedInstance("MSFT_StorageObject"): ToSubClass] MSFT_StorageObject SourceStorageObjects[], [In, Required: DisableOverride ToSubClass, EmbeddedInstance("MSFT_StorageObject"): ToSubClass] MSFT_StorageObject TargetStorageObjects[], [In, Required: DisableOverride ToSubClass, EmbeddedInstance("MSFT_Synchronized"): ToSubClass] MSFT_Synchronized SyncPairs[], [Out] MSFT_StorageJob ref CreatedStorageJob, [Out, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
	 uint32 SetReplicationSettings([In, Required: DisableOverride ToSubClass, EmbeddedInstance("MSFT_ReplicationSettings"): ToSubClass] MSFT_ReplicationSettings ReplicationSettings, [Out, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
	 uint32 GetReplicationSettings([Out, Required: DisableOverride ToSubClass, EmbeddedInstance("MSFT_ReplicationSettings"): ToSubClass] MSFT_ReplicationSettings ReplicationSettings, [Out, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
	 uint32 AddMember([In, Required: DisableOverride ToSubClass, EmbeddedInstance("MSFT_StorageObject"): ToSubClass] MSFT_StorageObject StorageObjects[], [Out, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
	 uint32 RemoveMember([In, Required: DisableOverride ToSubClass, EmbeddedInstance("MSFT_StorageObject"): ToSubClass] MSFT_StorageObject StorageObjects[], [Out, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
	 uint32 SetFriendlyName([In, Required: DisableOverride ToSubClass] string FriendlyName, [Out, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
	 uint32 DeleteObject([Out, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
};
[Association: DisableOverride ToSubClass, ClassVersion("1.0"): Amended, Description("Association between ReplicationGroup and Partition"): ToSubClass Amended]
class MSFT_ReplicationGroupToPartition
{
	[key] MSFT_ReplicationGroup ref ReplicationGroup;
	[key] MSFT_Partition ref Partition;
};
[Association: DisableOverride ToSubClass, Description("Association between replicated groups"): ToSubClass Amended, ClassVersion("1.0"): Amended, Abstract]
class MSFT_ReplicationGroupToReplicaPeer : MSFT_Synchronized
{
	[key] MSFT_ReplicationGroup ref ReplicationGroup;
	[key] MSFT_ReplicaPeer ref ReplicaPeer;
};
[Association: DisableOverride ToSubClass, ClassVersion("1.0"): Amended, Abstract, Description("Association between a replication group and its virtual disks"): ToSubClass Amended]
class MSFT_ReplicationGroupToVirtualDisk
{
	[key] MSFT_ReplicationGroup ref ReplicationGroup;
	[key] MSFT_VirtualDisk ref VirtualDisk;
};
[Abstract, ClassVersion("1.0"): Amended, Description("Represents the settings to be configured on a group or sync pair."): ToSubClass Amended]
class MSFT_ReplicationSettings
{
	[Description("TODO"): ToSubClass Amended] uint16 TargetElementSupplier;
	[Description("TODO"): ToSubClass Amended] uint16 ThinProvisioningPolicy;
	[Description("A set of volumes where the replication journal for the ReplicationGroup is hosted."): ToSubClass Amended, EmbeddedInstance("MSFT_Volume"): ToSubClass] MSFT_Volume LogDevices[];
	[Description("Size of replication journal in units of bytes. Size must be in multiples of gigabytes."): ToSubClass Amended] uint64 LogSizeInBytes;
	[Description("Minimum number of synchronous replication partnerships that are in synchronous replication state for I/O to continue on source Replication Group."): ToSubClass Amended] uint16 ReplicationQuorum;
	[Description("Mode describes whether the target elements will be updated synchronously or asynchronously. If NULL, implementation decides the mode."): ToSubClass Amended, ValueMap{"0", "2", "3", "..", "32768..65535"}: ToSubClass, Values{"Unknown", "Synchronous", "Asynchronous", "Microsoft Reserved", "Vendor Specific"}: ToSubClass Amended] uint16 SyncMode;
};
[Indication: DisableOverride ToSubClass, Abstract, ClassVersion("1.0"): Amended, Description("Base storage event indication"): ToSubClass Amended]
class MSFT_StorageEvent
{
	[read: ToSubClass] string StorageSubsystemObjectId;
	[read: ToSubClass, EmbeddedInstance("MSFT_StorageObject"): ToSubClass] MSFT_StorageObject SourceInstance;
	[read: ToSubClass, Description("This field allows the Storage Management Provider (SMP) to provide a brief description explaining the indication."): ToSubClass Amended] string Description;
	[read: ToSubClass, Description("Denotes the date and time in which the event that triggered this indication occurred."): ToSubClass Amended] datetime EventTime;
	[read: ToSubClass, 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"): ToSubClass Amended, ValueMap{"0", "2", "3", "4", "5", "6", "7", ".."}: ToSubClass, Values{"Unknown", "Information", "Degraded/Warning", "Minor", "Major", "Critical", "Fatal/NonRecoverable", "Microsoft Reserved"}: ToSubClass Amended] uint16 PerceivedSeverity;
	[read: ToSubClass, Required: DisableOverride ToSubClass, Description("This field indicates the object that caused the indication."): ToSubClass Amended, ModelCorrespondence{"MSFT_StorageObject.ObjectId"}: ToSubClass] string SourceObjectId;
	[read: ToSubClass, Required: DisableOverride ToSubClass, 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)."): ToSubClass Amended] string SourceClassName;
	[read: ToSubClass] string SourceNamespace;
	[read: ToSubClass] string SourceServer;
};
[Indication: DisableOverride ToSubClass, Description("Storage arrival events are used whenever a storage object is added or created."): ToSubClass Amended, ClassVersion("1.0"): Amended, Abstract]
class MSFT_StorageArrivalEvent : MSFT_StorageEvent
{
};
[Indication: DisableOverride ToSubClass, Description("Storage departure events are used whenever a storage object is removed or deleted."): ToSubClass Amended, ClassVersion("1.0"): Amended, Abstract]
class MSFT_StorageDepartureEvent : MSFT_StorageEvent
{
};
[ClassVersion("1.0"): Amended, Description("Object representing the result of a Diagnose method call on a storage object."): ToSubClass Amended]
class MSFT_StorageDiagnoseResult
{
	[read: ToSubClass, Description("A unique identifier for the fault"): ToSubClass Amended] string FaultId;
	[read: ToSubClass, Description("A string that uniquely identifies the type of fault."): ToSubClass Amended] string FaultType;
	[read: ToSubClass, Description("A unique identifier of the object that triggered the fault."): ToSubClass Amended] string FaultingObjectUniqueId;
	[read: ToSubClass, Description("A string that uniquely identifies the type of the object that triggered the fault."): ToSubClass Amended] string FaultingObjectType;
	[read: ToSubClass, Required: DisableOverride ToSubClass, Description("The description of the object that triggered the fault"): ToSubClass Amended] string FaultingObjectDescription;
	[read: ToSubClass, Description("The location of the object that triggered the fault"): ToSubClass Amended] string FaultingObjectLocation;
	[read: ToSubClass, Description("The formatted message describing the reason for the fault"): ToSubClass Amended] string Reason;
	[read: ToSubClass, Description("Free form descriptions of the recommended actions to take to resolve the cause of the fault."): ToSubClass Amended] string RecommendedActions[];
	[read: ToSubClass, 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"): ToSubClass Amended, ValueMap{"0", "2", "3", "4", "5", "6", "7"}: ToSubClass, Values{"Unknown", "Information", "Degraded/Warning", "Minor", "Major", "Critical", "Fatal/NonRecoverable"}: ToSubClass Amended] uint16 PerceivedSeverity;
	[read: ToSubClass] datetime FaultTime;
};
[Indication: DisableOverride ToSubClass, Exception: DisableOverride ToSubClass, UMLPackagePath("CIM::Interop"): ToSubClass, Description("Provides extra status information about an extrinsic method's invocation"): ToSubClass Amended, ClassVersion("1.0"): Amended]
class MSFT_StorageExtendedStatus : CIM_Error
{
};
[Abstract, 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."): ToSubClass Amended, ClassVersion("1.0"): Amended]
class MSFT_StorageJob : MSFT_StorageObject
{
	[read: ToSubClass, Required: DisableOverride ToSubClass, Description("A system defined name for this storage job."): ToSubClass Amended] string Name;
	[read: ToSubClass, Description("The Description property provides a textual description of the storage job operation."): ToSubClass Amended] string Description;
	[read: ToSubClass, Description("The time interval that the job has been executing or the total execution time if the storage job is complete."): ToSubClass Amended] datetime ElapsedTime;
	[read: ToSubClass, 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."): ToSubClass Amended] uint16 ErrorCode;
	[read: ToSubClass, Description("A free-form string that contains the vendor error description."): ToSubClass Amended] string ErrorDescription;
	[read: ToSubClass, Required: DisableOverride ToSubClass, Description("The current execution state of the storage job."): ToSubClass Amended, ValueMap{"2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13..32767", "32768..65535"}: ToSubClass, Values{"New", "Starting", "Running", "Suspended", "Shutting Down", "Completed", "Terminated", "Killed", "Exception", "Service", "Query Pending", "Microsoft Reserved", "Vendor Reserved"}: ToSubClass Amended] uint16 JobState;
	[read: ToSubClass, 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."): ToSubClass Amended] string JobStatus;
	[read: ToSubClass, 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'."): ToSubClass Amended, ValueMap{"1", "2"}: ToSubClass, Values{"Local Time", "UTC Time"}: ToSubClass Amended] uint16 LocalOrUtcTime;
	[read: ToSubClass, Required: DisableOverride ToSubClass, Description("Indicates the current statuses of the element."): ToSubClass Amended, ValueMap{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", ".."}: 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"}: ToSubClass Amended] uint16 OperationalStatus[];
	[read: ToSubClass, 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."): ToSubClass Amended] string StatusDescriptions[];
	[read: ToSubClass, Required: DisableOverride ToSubClass, Description("The percentage of the job that has completed at the time that this value is requested."): ToSubClass Amended, Units("Percent"): ToSubClass Amended, MinValue("0"): ToSubClass, MaxValue("100"): ToSubClass] uint16 PercentComplete;
	[read: ToSubClass, Description("Indicates the number of bytes processed by this job so far."): ToSubClass Amended, Units("Bytes"): ToSubClass Amended] uint64 BytesProcessed;
	[read: ToSubClass, Description("Indicates the total number of bytes being processed by this job."): ToSubClass Amended, Units("Bytes"): ToSubClass Amended] uint64 BytesTotal;
	[read: ToSubClass, Description("The time that the job was actually started."): ToSubClass Amended] datetime StartTime;
	[read: ToSubClass, 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"): ToSubClass Amended] datetime TimeBeforeRemoval;
	[read: ToSubClass, 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."): ToSubClass Amended] datetime TimeOfLastStateChange;
	[read: ToSubClass, 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."): ToSubClass Amended] datetime TimeSubmitted;
	[read: ToSubClass, Description("If TRUE, the storage job will be automatically deleted after a short time interval."): ToSubClass Amended] boolean DeleteOnCompletion;
	[read: ToSubClass, Required: DisableOverride ToSubClass, 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."): ToSubClass Amended] boolean IsBackgroundTask;
	[read: ToSubClass, 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"): ToSubClass Amended, ValueMap{"0", "1", "2", "3", "4"}: ToSubClass, Values{"Unknown", "Other", "Do Not Continue", "Continue With Next Job", "Re-run Job"}: ToSubClass Amended] uint16 RecoveryAction;
	[read: ToSubClass, 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'."): ToSubClass Amended] 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."): ToSubClass Amended, ValueMap{"0", "1", "2", "3", "4", "5", "4096", "4097", "40001", "40002", "46000", "46001"}: 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."}: ToSubClass Amended] 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."): ToSubClass Amended, ValueMap{"2", "3", "4", "5", "6", "7..32767", "32768..65535"}: ToSubClass, Values{"Start", "Suspend", "Terminate", "Kill", "Service", "DMTF Reserved", "Vendor Reserved"}: ToSubClass Amended] uint16 RequestedState, [Out, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
	 uint32 GetExtendedStatus([Out, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
	 uint32 GetMessages([Out] uint16 Channels[], [Out] string Messages[]);
	 uint32 GetOutParameters([Out, EmbeddedInstance("MSFT_StorageJobOutParams"): ToSubClass] MSFT_StorageJobOutParams OutParameters);
};
[Abstract, ClassVersion("1.0"): Amended]
class MSFT_StorageJobOutParams
{
};
[Indication: DisableOverride ToSubClass, 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."): ToSubClass Amended, ClassVersion("1.0"): Amended, Abstract]
class MSFT_StorageModificationEvent : MSFT_StorageEvent
{
};
[Abstract, 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."): ToSubClass Amended, ClassVersion("1.0"): Amended]
class MSFT_StoragePool : MSFT_StorageObject
{
	[read: ToSubClass, Required: DisableOverride ToSubClass, Description("A user-friendly string representing the name of the storage pool. Friendly name can be set using the SetFriendlyName method."): ToSubClass Amended] string FriendlyName;
	[read: ToSubClass, Required: DisableOverride ToSubClass, Description("Name is a semi-unique (scoped to the owning storage subsystem), human-readable string used to identify a storage pool."): ToSubClass Amended] string Name;
	[read: ToSubClass, Required: DisableOverride ToSubClass, Description("Denotes the intended usage of the storage pool."): ToSubClass Amended, ValueMap{"0", "1", "2", "3", "4", "5", "6", "7", "8"}: 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"}: ToSubClass Amended] uint16 Usage;
	[read: ToSubClass, 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'."): ToSubClass Amended] string OtherUsageDescription;
	[read: ToSubClass, Required: DisableOverride ToSubClass, 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."): ToSubClass Amended] boolean IsPrimordial;
	[read: ToSubClass, Required: DisableOverride ToSubClass, 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."): ToSubClass Amended, ValueMap{"0", "1", "2", "5"}: ToSubClass, Values{"Healthy", "Warning", "Unhealthy", "Unknown"}: ToSubClass Amended] uint16 HealthStatus;
	[read: ToSubClass, Required: DisableOverride ToSubClass, 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"): ToSubClass Amended, ValueMap{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "..", "0xD000", "0xD001", "0xD002.."}: 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"}: ToSubClass Amended] uint16 OperationalStatus[];
	[read: ToSubClass, Description("A string representation of the vendor defined operational status. This field should only be set if the OperationalStatus array contains 1 - 'Other'."): ToSubClass Amended] string OtherOperationalStatusDescription;
	[read: ToSubClass, 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)."): ToSubClass Amended, Units("Bytes"): ToSubClass Amended] uint64 Size;
	[read: ToSubClass, 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."): ToSubClass Amended, Units("Bytes"): ToSubClass Amended] uint64 AllocatedSize;
	[read: ToSubClass, 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."): ToSubClass Amended, Units("Bytes"): ToSubClass Amended] uint64 LogicalSectorSize;
	[read: ToSubClass, 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."): ToSubClass Amended, Units("Bytes"): ToSubClass Amended] uint64 PhysicalSectorSize;
	[read: ToSubClass, Required: DisableOverride ToSubClass, 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."): ToSubClass Amended, ValueMap{"0", "1", "2"}: ToSubClass, Values{"Unknown", "Thin", "Fixed"}: ToSubClass Amended] uint16 ProvisioningTypeDefault;
	[read: ToSubClass] uint16 MediaTypeDefault;
	[read: ToSubClass, Required: DisableOverride ToSubClass, Description("Denotes the provisioning schemes that this storage pool supports."): ToSubClass Amended, ValueMap{"0", "1", "2"}: ToSubClass, Values{"Unknown", "Thin", "Fixed"}: ToSubClass Amended] uint16 SupportedProvisioningTypes[];
	[read: ToSubClass, Required: DisableOverride ToSubClass, 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."): ToSubClass Amended, ModelCorrespondence{"MSFT_ResiliencySetting.Name"}: ToSubClass] string ResiliencySettingNameDefault;
	[read: ToSubClass, 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."): ToSubClass Amended] boolean IsReadOnly;
	[read: ToSubClass, 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."): ToSubClass Amended, ValueMap{"0", "1", "2", "3", "4"}: ToSubClass, Values{"Unknown", "None", "By Policy", "Majority Disks Unhealthy", "Starting"}: ToSubClass Amended] uint16 ReadOnlyReason;
	[read: ToSubClass, Description("Indicates whether or not the storage pool is used in a clustered environment."): ToSubClass Amended] boolean IsClustered;
	[read: ToSubClass, Description("If TRUE, this storage pool supports data deduplication."): ToSubClass Amended] boolean SupportsDeduplication;
	[read: ToSubClass, Description("Percentages at which an alert should be generated"): ToSubClass Amended, Units("Percentage"): ToSubClass Amended, MinValue("0"): ToSubClass, MaxValue("100"): ToSubClass] uint16 ThinProvisioningAlertThresholds[];
	[read: ToSubClass, Description("If TRUE, the storage pool should clear (zero out) physical disks that are removed from the pool."): ToSubClass Amended] boolean ClearOnDeallocate;
	[read: ToSubClass, 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."): ToSubClass Amended] boolean IsPowerProtected;
	[read: ToSubClass, 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"): ToSubClass Amended, ValueMap{"2", "3"}: ToSubClass, Values{"Sequential", "Parallel"}: ToSubClass Amended] uint16 RepairPolicy;
	[read: ToSubClass, 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."): ToSubClass Amended] boolean EnclosureAwareDefault;
	[read: ToSubClass, Description("Determines the default allocation behavior for virtual disks created in this pool. Fault domain aware virtual disks will intelligently pick the physical disks to use for their redundancy to balance the fault tolerance between two (or more) fault domain units of the specified type."): ToSubClass Amended, ValueMap{"1", "2", "3", "4", "5"}: ToSubClass, Values{"PhysicalDisk", "StorageEnclosure", "StorageScaleUnit", "StorageChassis", "StorageRack"}: ToSubClass Amended] uint16 FaultDomainAwarenessDefault;
	[read: ToSubClass, 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)."): ToSubClass Amended, ValueMap{"1", "2", "3"}: ToSubClass, Values{"Auto", "Always", "Never"}: ToSubClass Amended] uint16 RetireMissingPhysicalDisks;
	[read: ToSubClass, Description("Denotes the version of this storage pool."): ToSubClass Amended, ValueMap{"1", "2", "3", ".."}: ToSubClass, Values{"Windows Server 2012", "Windows Server 2012 R2 Preview", "Windows Server 2012 R2", "Pool Metadata Version"}: ToSubClass Amended] uint16 Version;
	[Description("Default size of write cache for virtual disk creation"): ToSubClass Amended] uint64 WriteCacheSizeDefault;
	[Description("Minimum size of write cache for virtual disk creation"): ToSubClass Amended] uint64 WriteCacheSizeMin;
	[Description("Maximum size of write cache for virtual disk creation"): ToSubClass Amended] 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."): ToSubClass Amended, ValueMap{"0", "1", "2", "3", "4", "5", "4096", "4097", "40000", "40001", "40002", "46000", "46001", "46008", "47001", "48000", "48001", "48002", "48004", "48006", "48007", "48010", "49000", "49001", "49002", "49003", "49004", "49005", "49006", "50005", "51000", "51001"}: 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."}: ToSubClass Amended] uint32 CreateVirtualDisk([In, Required: DisableOverride ToSubClass, 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."): ToSubClass Amended] 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."): ToSubClass Amended, Units("Bytes"): ToSubClass Amended] 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."): ToSubClass Amended] 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."): ToSubClass Amended, ValueMap{"1", "2"}: ToSubClass, Values{"Thin", "Fixed"}: ToSubClass Amended] 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."): ToSubClass Amended] string ResiliencySettingName, [In, Description("Denotes the intended usage of the virtual disk"): ToSubClass Amended, ValueMap{"1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17"}: 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"}: ToSubClass Amended] 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'."): ToSubClass Amended] 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."): ToSubClass Amended] 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."): ToSubClass Amended] 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."): ToSubClass Amended] 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."): ToSubClass Amended] 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."): ToSubClass Amended] 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."): ToSubClass Amended] 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."): ToSubClass Amended, EmbeddedInstance("MSFT_PhysicalDisk"): ToSubClass] MSFT_PhysicalDisk PhysicalDisksToUse[], [In, Description("Storage tiers on this virtual disk"): ToSubClass Amended, EmbeddedInstance("MSFT_StorageTier"): ToSubClass] MSFT_StorageTier StorageTiers[], [In, Description("Sizes of each tier"): ToSubClass Amended] uint64 StorageTierSizes[], [In, Description("Size of write cache on the virtual disk"): ToSubClass Amended] uint64 WriteCacheSize, [In, Description("Indicates whether the provider should pick up the auto write cache size"): ToSubClass Amended] boolean AutoWriteCacheSize, [Out, EmbeddedInstance("MSFT_VirtualDisk"): ToSubClass] MSFT_VirtualDisk CreatedVirtualDisk, [Out, Description("This parameter returns a reference to the storage job used to track the long running operation. When the operation has completed, an association should exist between the storage job and the created objects."): ToSubClass Amended] MSFT_StorageJob ref CreatedStorageJob, [Out, Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information."): ToSubClass Amended, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
	 uint32 CreateVirtualDisk2([In, Required: DisableOverride ToSubClass] string FriendlyName, [In] uint64 Size, [In] boolean UseMaximumSize, [In] uint16 ProvisioningType, [In] uint64 AllocationUnitSize, [In] uint16 MediaType, [In] string ResiliencySettingName, [In] uint16 Usage, [In] string OtherUsageDescription, [In] uint16 NumberOfDataCopies, [In] uint16 PhysicalDiskRedundancy, [In] uint16 NumberOfColumns, [In] boolean AutoNumberOfColumns, [In] uint64 Interleave, [In] uint16 NumberOfGroups, [In] uint16 FaultDomainAwareness, [In] uint16 ColumnIsolation, [In, EmbeddedInstance("MSFT_PhysicalDisk"): ToSubClass] MSFT_PhysicalDisk PhysicalDisksToUse[], [In, EmbeddedInstance("MSFT_StorageTier"): ToSubClass] MSFT_StorageTier StorageTiers[], [In] uint64 StorageTierSizes[], [In] uint64 WriteCacheSize, [In] boolean AutoWriteCacheSize, [In] uint64 ReadCacheSize, [Out, EmbeddedInstance("MSFT_VirtualDisk"): ToSubClass] MSFT_VirtualDisk CreatedVirtualDisk, [Out] MSFT_StorageJob ref CreatedStorageJob, [Out, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
	 uint32 CreateVirtualDisk3([In, Required: DisableOverride ToSubClass] string FriendlyName, [In] uint64 Size, [In] boolean UseMaximumSize, [In] uint16 ProvisioningType, [In] uint64 AllocationUnitSize, [In] uint16 MediaType, [In] string ResiliencySettingName, [In] uint16 Usage, [In] string OtherUsageDescription, [In] uint16 NumberOfDataCopies, [In] uint16 PhysicalDiskRedundancy, [In] uint16 NumberOfColumns, [In] boolean AutoNumberOfColumns, [In] uint64 Interleave, [In] uint16 NumberOfGroups, [In] uint16 FaultDomainAwareness, [In] uint16 ColumnIsolation, [In] MSFT_StorageFaultDomain ref StorageFaultDomainsToUse[], [In, EmbeddedInstance("MSFT_StorageTier"): ToSubClass] MSFT_StorageTier StorageTiers[], [In] uint64 StorageTierSizes[], [In] uint64 WriteCacheSize, [In] boolean AutoWriteCacheSize, [In] uint64 ReadCacheSize, [In] boolean IsManualAttach, [In] boolean AddToCluster, [Out, EmbeddedInstance("MSFT_VirtualDisk"): ToSubClass] MSFT_VirtualDisk CreatedVirtualDisk, [Out] MSFT_StorageJob ref CreatedStorageJob, [Out, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
	[Description("This method creates a virtual disk and single volume using the resources of the storage pool."): ToSubClass Amended, ValueMap{"0", "1", "2", "3", "4", "5", "4096", "4097", "40000", "40001", "40002", "40004", "40005", "42002", "42007", "43001", "43002", "43006", "43017", "43018", "43019", "46000", "46001", "46008", "48000", "48001", "48002", "48004", "48006", "48007", "48010", "49000", "49001", "49002", "49003", "49004", "49005", "49006"}: 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", "You must specify a name for this volume", "You must specify a file server to expose this volume to", "The volume is not exposed to the specified file server", "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."}: ToSubClass Amended] uint32 CreateVolume([In, Required: DisableOverride ToSubClass, 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."): ToSubClass Amended] 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."): ToSubClass Amended, Units("Bytes"): ToSubClass Amended] uint64 Size, [In, Description("Storage tiers on this virtual disk"): ToSubClass Amended, EmbeddedInstance("MSFT_StorageTier"): ToSubClass] MSFT_StorageTier StorageTiers[], [In, Description("Sizes of each tier"): ToSubClass Amended] 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."): ToSubClass Amended, ValueMap{"1", "2"}: ToSubClass, Values{"Thin", "Fixed"}: ToSubClass Amended] 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."): ToSubClass Amended] 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."): ToSubClass Amended] 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."): ToSubClass Amended] uint16 NumberOfColumns, [In, Required: DisableOverride ToSubClass, 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."): ToSubClass Amended, ValueMap{"14", "15", "0x8000", "0x8001"}: ToSubClass, Values{"NTFS", "ReFS", "CSVFS_NTFS", "CSVFS_ReFS"}: ToSubClass Amended] 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."): ToSubClass Amended] string AccessPath, [In, Description("The file server that will own this volume."): ToSubClass Amended, EmbeddedInstance("MSFT_FileServer"): ToSubClass] MSFT_FileServer FileServer, [Out, EmbeddedInstance("MSFT_Volume"): ToSubClass] MSFT_Volume CreatedVolume, [Out, Description("This parameter returns a reference to the storage job used to track the long running operation. When the operation has completed, an association should exist between the storage job and the created objects."): ToSubClass Amended] MSFT_StorageJob ref CreatedStorageJob, [Out, Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information."): ToSubClass Amended, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
	 uint32 CreateVolume2([In, Required: DisableOverride ToSubClass] string FriendlyName, [In] uint64 Size, [In, EmbeddedInstance("MSFT_StorageTier"): ToSubClass] MSFT_StorageTier StorageTiers[], [In] uint64 StorageTierSizes[], [In] uint16 ProvisioningType, [In] string ResiliencySettingName, [In] uint16 PhysicalDiskRedundancy, [In] uint16 NumberOfColumns, [In] uint16 FileSystem, [In] string AccessPath, [In] uint32 AllocationUnitSize, [In] uint64 ReadCacheSize, [In, EmbeddedInstance("MSFT_FileServer"): ToSubClass] MSFT_FileServer FileServer, [Out, EmbeddedInstance("MSFT_Volume"): ToSubClass] MSFT_Volume CreatedVolume, [Out] MSFT_StorageJob ref CreatedStorageJob, [Out, EmbeddedInstance("MSFT_StorageExtendedStatus"): 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."): ToSubClass Amended, ValueMap{"0", "1", "2", "3", "4", "5", "40001", "40002", "46000", "46001", "48007"}: 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."}: ToSubClass Amended] uint32 CreateStorageTier([In, Description("Friendly name of the storage tier"): ToSubClass Amended] string FriendlyName, [In, Description("Media type of the storage tier"): ToSubClass Amended, ValueMap{"3", "4"}: ToSubClass, Values{"HDD", "SSD"}: ToSubClass Amended] uint16 MediaType, [In, Description("Description of the storage tier"): ToSubClass Amended] string Description, [Out, EmbeddedInstance("MSFT_StorageTier"): ToSubClass] 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."): ToSubClass Amended] MSFT_StorageJob ref CreatedStorageJob, [Out, Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information."): ToSubClass Amended, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
	 uint32 CreateStorageTier2([In] string FriendlyName, [In] uint16 ProvisioningType, [In] uint16 MediaType, [In] uint16 FaultDomainAwareness, [In] uint16 ColumnIsolation, [In] string ResiliencySettingName, [In] uint64 Interleave, [In] uint16 NumberOfDataCopies, [In] uint16 NumberOfGroups, [In] uint16 NumberOfColumns, [In] uint16 PhysicalDiskRedundancy, [In] string Description, [Out, EmbeddedInstance("MSFT_StorageTier"): ToSubClass] MSFT_StorageTier CreatedStorageTier, [Out] MSFT_StorageJob ref CreatedStorageJob, [Out, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
	 uint32 CreateStorageTier3([In] string FriendlyName, [In] uint16 ProvisioningType, [In] uint64 AllocationUnitSize, [In] uint16 MediaType, [In] uint16 FaultDomainAwareness, [In] uint16 ColumnIsolation, [In] MSFT_StorageFaultDomain ref StorageFaultDomainsToUse[], [In] string ResiliencySettingName, [In] uint16 Usage, [In] uint64 Interleave, [In] uint16 NumberOfDataCopies, [In] uint16 NumberOfGroups, [In] uint16 NumberOfColumns, [In] uint16 PhysicalDiskRedundancy, [In] string Description, [Out, EmbeddedInstance("MSFT_StorageTier"): ToSubClass] MSFT_StorageTier CreatedStorageTier, [Out] MSFT_StorageJob ref CreatedStorageJob, [Out, EmbeddedInstance("MSFT_StorageExtendedStatus"): 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."): ToSubClass Amended, ValueMap{"0", "1", "2", "3", "4", "5", "4096", "40001", "40002", "40003", "46000", "46001", "48000", "48006", "48007", "48008"}: 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."}: ToSubClass Amended] uint32 DeleteObject([Out, Description("This parameter returns a reference to the storage job used to track the long running operation."): ToSubClass Amended] MSFT_StorageJob ref CreatedStorageJob, [Out, Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information."): ToSubClass Amended, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
	[Description("This method will upgrade the version of the storage pool."): ToSubClass Amended, ValueMap{"0", "1", "2", "3", "4", "5", "40001", "40002", "46000", "46001", "48007"}: 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."}: ToSubClass Amended] uint32 Upgrade([Out, Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information."): ToSubClass Amended, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
	 uint32 Optimize([In] boolean RunAsJob, [Out] MSFT_StorageJob ref CreatedStorageJob, [Out, EmbeddedInstance("MSFT_StorageExtendedStatus"): 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."): ToSubClass Amended, ValueMap{"0", "1", "2", "3", "4", "5", "4096", "40001", "40002", "40003", "46000", "46001", "48000", "48006", "48007", "51000", "51002", "51003"}: 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."}: ToSubClass Amended] uint32 AddPhysicalDisk([In, Required: DisableOverride ToSubClass, EmbeddedInstance("MSFT_PhysicalDisk"): ToSubClass] MSFT_PhysicalDisk PhysicalDisks[], [In, ValueMap{"1", "2", "3", "5"}: ToSubClass, Values{"Auto-Select", "Manual-Select", "Hot Spare", "Journal"}: ToSubClass Amended] uint16 Usage, [Out, Description("This parameter returns a reference to the storage job used to track the long running operation."): ToSubClass Amended] MSFT_StorageJob ref CreatedStorageJob, [Out, Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information."): ToSubClass Amended, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
	 uint32 AddPhysicalDisk2([In, Required: DisableOverride ToSubClass] MSFT_PhysicalDisk ref PhysicalDisks[], [In] uint16 Usage, [Out] MSFT_StorageJob ref CreatedStorageJob, [Out, EmbeddedInstance("MSFT_StorageExtendedStatus"): 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."): ToSubClass Amended, ValueMap{"0", "1", "2", "3", "4", "5", "4096", "40000", "40001", "40002", "40003", "46000", "46001", "48000", "48006", "48007", "50001", "50003", "51004", "51006"}: 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.", "One or more physical disks are not in the pool."}: ToSubClass Amended] uint32 RemovePhysicalDisk([In, Required: DisableOverride ToSubClass, EmbeddedInstance("MSFT_PhysicalDisk"): ToSubClass] MSFT_PhysicalDisk PhysicalDisks[], [Out, Description("This parameter returns a reference to the storage job used to track the long running operation."): ToSubClass Amended] MSFT_StorageJob ref CreatedStorageJob, [Out, Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information."): ToSubClass Amended, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
	 uint32 RemovePhysicalDisk2([In, Required: DisableOverride ToSubClass] MSFT_PhysicalDisk ref PhysicalDisks[], [Out] MSFT_StorageJob ref CreatedStorageJob, [Out, EmbeddedInstance("MSFT_StorageExtendedStatus"): 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."): ToSubClass Amended, ValueMap{"0", "1", "2", "3", "4", "5", "40001", "40002", "40003", "46000", "46001", "48000"}: 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."}: ToSubClass Amended] uint32 GetSupportedSize([In, Required: DisableOverride ToSubClass, 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."): ToSubClass Amended] 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."): ToSubClass Amended, Units("Bytes"): ToSubClass Amended] uint64 SupportedSizes[], [Out, Description("This parameter denotes the minimum supported size that a virtual disk created in this pool can be."): ToSubClass Amended, Units("Bytes"): ToSubClass Amended] uint64 VirtualDiskSizeMin, [Out, Description("This parameter denotes the maximum supported size that a virtual disk created in this pool can be."): ToSubClass Amended, Units("Bytes"): ToSubClass Amended] 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."): ToSubClass Amended, Units("Bytes"): ToSubClass Amended] uint64 VirtualDiskSizeDivisor, [Out, Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information."): ToSubClass Amended, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
	 uint32 GetSupportedSize2([In, Required: DisableOverride ToSubClass] string ResiliencySettingName, [In] uint16 FaultDomainAwareness, [Out] uint64 SupportedSizes[], [Out] uint64 VirtualDiskSizeMin, [Out] uint64 VirtualDiskSizeMax, [Out] uint64 VirtualDiskSizeDivisor, [Out, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
	[Description("This method returns the security descriptor that controls access to this specific object instance."): ToSubClass Amended, ValueMap{"0", "1", "2", "3", "4", "5", "40001", "40002", "46000", "46001"}: 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."}: ToSubClass Amended] uint32 GetSecurityDescriptor([Out, Required: DisableOverride ToSubClass, Description("A Security Descriptor Definition Language (SDDL) formed string describing the access control list of the object."): ToSubClass Amended] string SecurityDescriptor, [Out, Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information."): ToSubClass Amended, EmbeddedInstance("MSFT_StorageExtendedStatus"): 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."): ToSubClass Amended, ValueMap{"0", "1", "2", "3", "4", "5", "40001", "40002", "46000", "46001"}: 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."}: ToSubClass Amended] uint32 SetSecurityDescriptor([In, Required: DisableOverride ToSubClass, Description("A Security Descriptor Definition Language (SDDL) formed string describing the desired access control list for this object."): ToSubClass Amended] string SecurityDescriptor, [Out, Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information."): ToSubClass Amended, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
	[Description("This method allows the storage pool to be renamed."): ToSubClass Amended, ValueMap{"0", "1", "2", "3", "4", "5", "40001", "40002", "46000", "46001"}: 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."}: ToSubClass Amended] uint32 SetFriendlyName([In, Required: DisableOverride ToSubClass] string FriendlyName, [Out, Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information."): ToSubClass Amended, EmbeddedInstance("MSFT_StorageExtendedStatus"): 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."): ToSubClass Amended, ValueMap{"0", "1", "2", "3", "4", "5", "40001", "40002", "46000", "46001", "48000", "48006", "48007"}: 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."}: ToSubClass Amended] uint32 SetUsage([In, Required: DisableOverride ToSubClass, Description("Denotes the new intended usage of the storage pool."): ToSubClass Amended, ValueMap{"1", "2", "3", "4", "5", "6", "7", "8"}: 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"}: ToSubClass Amended] 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'."): ToSubClass Amended] string OtherUsageDescription, [Out, Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information."): ToSubClass Amended, EmbeddedInstance("MSFT_StorageExtendedStatus"): 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."): ToSubClass Amended, ValueMap{"0", "1", "2", "3", "4", "5", "40001", "40002", "46000", "46001", "48000", "48002", "48006", "48007", "49000", "50005"}: 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."}: ToSubClass Amended] uint32 SetDefaults([In, Description("Specifies the new default provisioning type of the storage pool."): ToSubClass Amended, ValueMap{"1", "2"}: ToSubClass, Values{"Thin", "Fixed"}: ToSubClass Amended] 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."): ToSubClass Amended] 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."): ToSubClass Amended] boolean EnclosureAwareDefault, [In, Description("New default size of write cache for virtual disk creation"): ToSubClass Amended] uint64 WriteCacheSizeDefault, [In, Description("Indicates whether the provider should pick up the auto write cache size"): ToSubClass Amended] boolean AutoWriteCacheSize, [Out, Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information."): ToSubClass Amended, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
	 uint32 SetDefaults2([In] uint16 ProvisioningTypeDefault, [In] uint16 MediaTypeDefault, [In] string ResiliencySettingNameDefault, [In] uint16 FaultDomainAwarenessDefault, [In] uint64 WriteCacheSizeDefault, [In] boolean AutoWriteCacheSize, [Out, EmbeddedInstance("MSFT_StorageExtendedStatus"): 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."): ToSubClass Amended, ValueMap{"0", "1", "2", "3", "4", "5", "40001", "40002", "46000", "46001", "48000", "48006", "48007", "48009"}: 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."}: ToSubClass Amended] uint32 SetAttributes([In] boolean IsReadOnly, [In] boolean ClearOnDeallocate, [In] boolean IsPowerProtected, [In, ValueMap{"2", "3"}: ToSubClass, Values{"Sequential", "Parallel"}: ToSubClass Amended] uint16 RepairPolicy, [In, ValueMap{"1", "2", "3"}: ToSubClass, Values{"Auto", "Always", "Never"}: ToSubClass Amended] uint16 RetireMissingPhysicalDisks, [In, Description("Percentages at which an alert should be generated"): ToSubClass Amended, Units("Percentage"): ToSubClass Amended, MinValue("1"): ToSubClass, MaxValue("100"): ToSubClass] uint16 ThinProvisioningAlertThresholds[], [Out, Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information."): ToSubClass Amended, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
};
[Abstract, Description("Represents a storage array subsystem that exposes virtual disks."): ToSubClass Amended, ClassVersion("1.0"): Amended]
class MSFT_StorageSubSystem : MSFT_StorageObject
{
	[read: ToSubClass, 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."): ToSubClass Amended] string FriendlyName;
	[read: ToSubClass, 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."): ToSubClass Amended] string Description;
	[read: ToSubClass, Required: DisableOverride ToSubClass, Description("Name is a globally unique, human-readable string used to identify a storage subsystem."): ToSubClass Amended] string Name;
	[read: ToSubClass, Required: DisableOverride ToSubClass, Description("NameFormat describes the format of the Name identifier."): ToSubClass Amended, ValueMap{"1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16"}: ToSubClass, Values{"Other", "IP", "Dial", "HID", "NWA", "HWA", "X25", "ISDN", "IPX", "DCC", "ICD", "E.164", "SNA", "OID/OSI", "WWN", "NAA"}: ToSubClass Amended] uint16 NameFormat;
	[read: ToSubClass, Description("This field is an array of custom identifier for the subsystem. If this field is set, the OtherIdentifyingInfoDescription field must also be set."): ToSubClass Amended] string OtherIdentifyingInfo[];
	[read: ToSubClass, 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."): ToSubClass Amended] string OtherIdentifyingInfoDescription[];
	[read: ToSubClass, Required: DisableOverride ToSubClass, 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."): ToSubClass Amended, ValueMap{"0", "1", "2"}: ToSubClass, Values{"Healthy", "Warning", "Unhealthy"}: ToSubClass Amended] uint16 HealthStatus;
	[read: ToSubClass, Required: DisableOverride ToSubClass, 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"): ToSubClass Amended, ValueMap{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", ".."}: 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"}: ToSubClass Amended] uint16 OperationalStatus[];
	[read: ToSubClass, Description("A string representation of the vendor defined operational status. This field should only be set if the OperationalStatus array contains 1 - 'Other'."): ToSubClass Amended] string OtherOperationalStatusDescription;
	[read: ToSubClass, 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."): ToSubClass Amended, ValueMap{"0", "1", "2", "3"}: ToSubClass, Values{"Level 0", "Level 1", "Level 2", "Level 3"}: ToSubClass Amended] uint16 CurrentCacheLevel;
	[read: ToSubClass, Required: DisableOverride ToSubClass, Description("This field is a string representation of the company responsible for creating the storage subsystem hardware."): ToSubClass Amended] string Manufacturer;
	[read: ToSubClass, Required: DisableOverride ToSubClass, Description("This field is a string representation of the model number of the subsystem array."): ToSubClass Amended] string Model;
	[read: ToSubClass, Required: DisableOverride ToSubClass, Description("This field is a string representation of the serial number of the subsystem array."): ToSubClass Amended] string SerialNumber;
	[read: ToSubClass, Required: DisableOverride ToSubClass, Description("This field is a string representation of the subsystem's firmware version."): ToSubClass Amended] string FirmwareVersion;
	[read: ToSubClass, 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."): ToSubClass Amended] string Tag;
	[read: ToSubClass, Required: DisableOverride ToSubClass, Description("Denotes whether this subsystem supports automatic object clustering."): ToSubClass Amended] boolean AutomaticClusteringEnabled;
	[read: ToSubClass, Description("Denotes whether virtual disk repair is enabled on this subsystem."): ToSubClass Amended] boolean VirtualDiskRepairEnabled;
	[read: ToSubClass, Required: DisableOverride ToSubClass, Description("Denotes the minimum number of physical disks required for creating a storage pool on this subsystem."): ToSubClass Amended] uint16 PhysicalDisksPerStoragePoolMin;
	[read: ToSubClass, Description("Determines the default allocation behavior for storage pools created in this subsystem. If the subsystem does not support storage pool creation, then it determines the default allocation behavior for virtual disks created in this subsystem."): ToSubClass Amended, ValueMap{"1", "2", "3", "4", "5"}: ToSubClass, Values{"PhysicalDisk", "StorageEnclosure", "StorageScaleUnit", "StorageChassis", "StorageRack"}: ToSubClass Amended] uint16 FaultDomainAwarenessDefault;
	[read: ToSubClass, Required: DisableOverride ToSubClass, Description("Denotes whether this subsystem supports local mirror replication."): ToSubClass Amended] boolean SupportsMirrorLocal;
	[read: ToSubClass, Required: DisableOverride ToSubClass, Description("Denotes whether this subsystem supports remote mirror replication."): ToSubClass Amended] boolean SupportsMirrorRemote;
	[read: ToSubClass, Required: DisableOverride ToSubClass, Description("Denotes whether this subsystem supports local snapshotting. This field must be true if the VirtualDisk::CreateSnapshot method is implemented."): ToSubClass Amended] boolean SupportsSnapshotLocal;
	[read: ToSubClass, Required: DisableOverride ToSubClass, Description("Denotes whether this subsystem supports remote snapshotting."): ToSubClass Amended] boolean SupportsSnapshotRemote;
	[read: ToSubClass, Required: DisableOverride ToSubClass, Description("Denotes whether this subsystem supports local cloning. This field must be true if the VirtualDisk::CreateClone method is implemented."): ToSubClass Amended] boolean SupportsCloneLocal;
	[read: ToSubClass, Required: DisableOverride ToSubClass, Description("Denotes whether this subsystem supports remote cloning."): ToSubClass Amended] boolean SupportsCloneRemote;
	[read: ToSubClass, Required: DisableOverride ToSubClass, Description("Denotes whether a user can create a virtual disk by using the CreateVirtualDisk method on either the storage subsystem or storage pool objects."): ToSubClass Amended] boolean SupportsVirtualDiskCreation;
	[read: ToSubClass, Required: DisableOverride ToSubClass, 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 )."): ToSubClass Amended] boolean SupportsVirtualDiskModification;
	[read: ToSubClass, Required: DisableOverride ToSubClass, Description("Denotes whether a user can delete a virtual disk through the use of the DeleteObject extrinsic method on the virtual disk instance."): ToSubClass Amended] boolean SupportsVirtualDiskDeletion;
	[read: ToSubClass, Required: DisableOverride ToSubClass, Description("Indicates if the subsystem allows a virtual disk to be grown in size (using the Resize method of the virtual disk instance)."): ToSubClass Amended] boolean SupportsVirtualDiskCapacityExpansion;
	[read: ToSubClass, Required: DisableOverride ToSubClass, Description("Indicates if the subsystem allows a virtual disk to be reduced in size (using the Resize method of the virtual disk instance)."): ToSubClass Amended] boolean SupportsVirtualDiskCapacityReduction;
	[read: ToSubClass, Required: DisableOverride ToSubClass, Description("Indicates if the subsystem supports explicit repairing of a virtual disk through the Repair method of the virtual disk instance."): ToSubClass Amended] boolean SupportsVirtualDiskRepair;
	[read: ToSubClass, Required: DisableOverride ToSubClass, Description("Denotes whether this subsystem supports direct creation of volumes on a storage pool."): ToSubClass Amended] boolean SupportsVolumeCreation;
	[read: ToSubClass, Description("File systems supported on this subsystem."): ToSubClass Amended, ValueMap{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "0x8000", "0x8001"}: ToSubClass, Values{"Unknown", "Threshold", "UFS", "HFS", "FAT", "FAT16", "FAT32", "NTFS4", "NTFS5", "XFS", "AFS", "EXT2", "EXT3", "ReiserFS", "NTFS", "ReFS", "CSVFS_NTFS", "CSVFS_ReFS"}: ToSubClass Amended] uint16 SupportedFileSystems[];
	[read: ToSubClass, Required: DisableOverride ToSubClass, 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."): ToSubClass Amended] boolean SupportsStoragePoolCreation;
	[read: ToSubClass, Required: DisableOverride ToSubClass, Description("If TRUE, this subsystem supports the deletion of its storage pools."): ToSubClass Amended] boolean SupportsStoragePoolDeletion;
	[read: ToSubClass, Required: DisableOverride ToSubClass] boolean SupportsStoragePoolFriendlyNameModification;
	[read: ToSubClass, Required: DisableOverride ToSubClass, Description("If TRUE, storage pools on this subsystem support capacity expansion through adding more physical disks."): ToSubClass Amended] boolean SupportsStoragePoolAddPhysicalDisk;
	[read: ToSubClass, Required: DisableOverride ToSubClass, 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."): ToSubClass Amended] boolean SupportsStoragePoolRemovePhysicalDisk;
	[read: ToSubClass, Required: DisableOverride ToSubClass, Description("If TRUE, the CreateVirtualDisk method on the storage subsystem is supported."): ToSubClass Amended] boolean SupportsAutomaticStoragePoolSelection;
	[read: ToSubClass, Required: DisableOverride ToSubClass, 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."): ToSubClass Amended] boolean SupportsMultipleResiliencySettingsPerStoragePool;
	[read: ToSubClass, Required: DisableOverride ToSubClass, 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."): ToSubClass Amended] boolean SupportsStorageTierCreation;
	[read: ToSubClass, Required: DisableOverride ToSubClass, Description("If TRUE, this subsystem supports the deletion of storage tiers."): ToSubClass Amended] boolean SupportsStorageTierDeletion;
	[read: ToSubClass, Required: DisableOverride ToSubClass, Description("If TRUE, this subsystem supports the resizing of storage tiers."): ToSubClass Amended] boolean SupportsStorageTierResize;
	[read: ToSubClass, Required: DisableOverride ToSubClass, Description("If TRUE, this subsystem supports the modification of the storage tier friendly name."): ToSubClass Amended] boolean SupportsStorageTierFriendlyNameModification;
	[read: ToSubClass, Required: DisableOverride ToSubClass, Description("If TRUE, this subsystem supports the creation of tiered virtual disks."): ToSubClass Amended] boolean SupportsStorageTieredVirtualDiskCreation;
	[read: ToSubClass, Required: DisableOverride ToSubClass, Description("This field is reserved for future releases."): ToSubClass Amended] uint16 ReplicasPerSourceSnapshotMax;
	[read: ToSubClass, Required: DisableOverride ToSubClass, Description("This field is reserved for future releases."): ToSubClass Amended] uint16 ReplicasPerSourceCloneMax;
	[read: ToSubClass, Required: DisableOverride ToSubClass, Description("This field is reserved for future releases."): ToSubClass Amended] uint16 ReplicasPerSourceMirrorMax;
	[read: ToSubClass, 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."): ToSubClass Amended] boolean SupportsMaskingVirtualDiskToHosts;
	[read: ToSubClass, Description("Indicates which address formats can be inferred by the storage provider and subsystem when working with initiator ids."): ToSubClass Amended, ValueMap{"1", "2", "3", "4", "5", "6", "7"}: ToSubClass, Values{"Other", "Port WWN", "Node WWN", "Host Name", "iSCSI Name", "Switch WWN", "SAS Address"}: ToSubClass Amended] uint16 MaskingValidInitiatorIdTypes[];
	[read: ToSubClass, Description("If MaskingValidInitiatorIdTypes contains the value 1 - 'Other', this field is used to enumerate the other valid initiator id types for this storage subsystem."): ToSubClass Amended] string MaskingOtherValidInitiatorIdTypes[];
	[read: ToSubClass, 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."): ToSubClass Amended, ValueMap{"2", "3", "4"}: ToSubClass, Values{"One TargetPort per view", "Multiple target ports per view", "All target ports share the same view"}: ToSubClass Amended] uint16 MaskingPortsPerView;
	[read: ToSubClass, Description("If TRUE, the storage provider supports the use of the DeviceNumbers parameter of the CreateMaskingSet and AddVirtualDisk methods."): ToSubClass Amended] boolean MaskingClientSelectableDeviceNumbers;
	[read: ToSubClass, Description("If TRUE, the subsystem will only allow one initiator to be added to a masking set."): ToSubClass Amended] boolean MaskingOneInitiatorIdPerView;
	[read: ToSubClass, Description("Indicates the maximum number of masking sets that a particular virtual disk can be added to."): ToSubClass Amended] uint16 MaskingMapCountMax;
	[read: ToSubClass, Description("Denotes whether storage tiers are supported by the subsystem."): ToSubClass Amended, ValueMap{"0", "1", "2", "3"}: ToSubClass, Values{"Unknown", "Not Supported", "Manual", "Auto"}: ToSubClass Amended] uint16 DataTieringType;
	[read: ToSubClass, 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"): ToSubClass Amended, ValueMap{"0", "1", "2", "3"}: ToSubClass, Values{"Not Applicable", "Not Supported", "Manual", "Auto"}: ToSubClass Amended] uint16 iSCSITargetCreationScheme;
	[read: ToSubClass, Description("Denotes the total number of physical disk slots in the subsystem or enclosure."): ToSubClass Amended] uint32 NumberOfSlots;
	[read: ToSubClass, Description("An array representing the supported host types."): ToSubClass Amended, ValueMap{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22..32767", "32768..65535"}: 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"}: ToSubClass Amended] uint16 SupportedHostType[];
	[read: ToSubClass, 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."): ToSubClass Amended, ArrayType("Indexed"): DisableOverride ToSubClass, ModelCorrespondence{"CIM_StorageClientSettingData.ClientTypes"}: ToSubClass] string OtherHostTypeDescription[];
	[read: ToSubClass, Description("The storage transport on this subsystem."): ToSubClass Amended] uint16 StorageConnectionType;
	[read: ToSubClass, Description("Denotes whether this subsystem supports a file server."): ToSubClass Amended] boolean SupportsFileServer;
	[read: ToSubClass, Description("Denotes whether this subsystem supports creation of a file server."): ToSubClass Amended] boolean SupportsFileServerCreation;
	[read: ToSubClass, Description("Denotes whether this subsystem supports continuously available (CA) file servers."): ToSubClass Amended] boolean SupportsContinuouslyAvailableFileServer;
	[read: ToSubClass, Required: DisableOverride ToSubClass, Description("This field describes the protocols supported by file servers on this subsystem."): ToSubClass Amended, ValueMap{"2", "3"}: ToSubClass, Values{"NFS", "CIFS(SMB)"}: ToSubClass Amended] uint16 SupportedFileServerProtocols[];
	[read: ToSubClass, Description("Denotes the object types supported for Deduplication in this subsystem."): ToSubClass Amended, ValueMap{"2", "4", "8", "16"}: ToSubClass, Values{"Volume", "VirtualDisk", "Partition", "StoragePool"}: ToSubClass Amended] uint16 SupportedDeduplicationObjectTypes[];
	[read: ToSubClass, Description("Denotes the file system types supported for Deduplication in this subsystem."): ToSubClass Amended, ValueMap{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "0x8000", "0x8001"}: ToSubClass, Values{"Unknown", "Threshold", "UFS", "HFS", "FAT", "FAT16", "FAT32", "NTFS4", "NTFS5", "XFS", "AFS", "EXT2", "EXT3", "ReiserFS", "NTFS", "ReFS", "CSVFS_NTFS", "CSVFS_ReFS"}: ToSubClass Amended] uint16 SupportedDeduplicationFileSystemTypes[];
	[Description("This method creates a storage pool from available physical disks contained within a common primordial pool. A physical disk is available for storage pool creation if its CanPool property is set to TRUE. Storage pool creation is only available when the SupportsStoragePoolCreation field of the storage subsystem is TRUE."): ToSubClass Amended, ValueMap{"0", "1", "2", "3", "4", "5", "8", "4096", "40001", "40002", "40003", "46000", "46001", "46008", "49000", "50005", "51000", "51001", "51002", "51003", "51005"}: 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."}: ToSubClass Amended] uint32 CreateStoragePool([In, Required: DisableOverride ToSubClass, 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."): ToSubClass Amended] string FriendlyName, [In, Description("Denotes the intended usage of the storage pool."): ToSubClass Amended, ValueMap{"1", "2", "3", "4", "5", "6", "7", "8"}: 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"}: ToSubClass Amended] 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'. "): ToSubClass Amended] string OtherUsageDescription, [In, Required: DisableOverride ToSubClass, 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."): ToSubClass Amended, EmbeddedInstance("MSFT_PhysicalDisk"): 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."): ToSubClass Amended] 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."): ToSubClass Amended, ValueMap{"1", "2"}: ToSubClass, Values{"Thin", "Fixed"}: ToSubClass Amended] 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."): ToSubClass Amended, Units("Bytes"): ToSubClass Amended] 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."): ToSubClass Amended] boolean EnclosureAwareDefault, [In, Description("Default size of write cache for virtual disk creation"): ToSubClass Amended] uint64 WriteCacheSizeDefault, [In, Description("Indicates if provider should pick up the auto write cache size or not"): ToSubClass Amended] boolean AutoWriteCacheSize, [Out, EmbeddedInstance("MSFT_StoragePool"): ToSubClass] MSFT_StoragePool CreatedStoragePool, [Out, Description("This parameter returns a reference to the storage job used to track the long running operation. When the operation has completed, an association should exist between the storage job and the created objects."): ToSubClass Amended] MSFT_StorageJob ref CreatedStorageJob, [Out, Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information."): ToSubClass Amended, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
	 uint32 CreateStoragePool2([In, Required: DisableOverride ToSubClass] string FriendlyName, [In] uint16 Usage, [In] string OtherUsageDescription, [In, Required: DisableOverride ToSubClass] MSFT_PhysicalDisk ref PhysicalDisks[], [In] string ResiliencySettingNameDefault, [In] uint16 ProvisioningTypeDefault, [In] uint16 MediaTypeDefault, [In, Units("Bytes"): ToSubClass Amended] uint64 LogicalSectorSizeDefault, [In] uint16 FaultDomainAwarenessDefault, [In] uint64 WriteCacheSizeDefault, [In] boolean AutoWriteCacheSize, [In] uint16 Version, [Out, EmbeddedInstance("MSFT_StoragePool"): ToSubClass] MSFT_StoragePool CreatedStoragePool, [Out] MSFT_StorageJob ref CreatedStorageJob, [Out, EmbeddedInstance("MSFT_StorageExtendedStatus"): 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."): ToSubClass Amended, ValueMap{"0", "1", "2", "3", "4", "5", "4096", "4097", "40000", "40001", "40002", "40003", "40005", "46000", "46001", "47000", "49001", "49002", "49003", "49004", "49005", "49006"}: 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."}: ToSubClass Amended] uint32 CreateVirtualDisk([In, Required: DisableOverride ToSubClass, 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."): ToSubClass Amended] string FriendlyName, [In, Description("Denotes the intended usage of the virtual disk"): ToSubClass Amended, ValueMap{"1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17"}: 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"}: ToSubClass Amended] 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'. "): ToSubClass Amended] string OtherUsageDescription, [in,out, Required: DisableOverride ToSubClass, 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."): ToSubClass Amended, MinValue("1"): ToSubClass, Units("Bytes"): ToSubClass Amended] uint64 Size, [In, Description("Create a virtual disk using the largest supported size. This parameter cannot be used with the Size parameter."): ToSubClass Amended] boolean UseMaximumSize, [In, Description("Specifies the number of complete data copies to maintain for this virtual disk."): ToSubClass Amended, MinValue("1"): ToSubClass] uint16 NumberOfDataCopies, [In, Description("Specifies how many physical disk failures the virtual disk should be able to withstand before data loss occurs."): ToSubClass Amended] uint16 PhysicalDiskRedundancy, [In, Description("Specifies the number of underlying physical disks across which data should be striped."): ToSubClass Amended, MinValue("1"): 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."): ToSubClass Amended, MinValue("1"): 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"): ToSubClass Amended, ValueMap{"1", "2"}: ToSubClass, Values{"Non-rotated Parity", "Rotated Parity"}: ToSubClass Amended] 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."): ToSubClass Amended] 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."): ToSubClass Amended, ValueMap{"1", "2"}: ToSubClass, Values{"Thin", "Fixed"}: ToSubClass Amended] uint16 ProvisioningType, [Out, EmbeddedInstance("MSFT_VirtualDisk"): ToSubClass] MSFT_VirtualDisk CreatedVirtualDisk, [Out, Description("This parameter returns a reference to the storage job used to track the long running operation. When the operation has completed, an association should exist between the storage job and the created objects."): ToSubClass Amended] MSFT_StorageJob ref CreatedStorageJob, [Out, Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information."): ToSubClass Amended, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
	 uint32 CreateVirtualDisk2([In, Required: DisableOverride ToSubClass] string FriendlyName, [In] uint16 Usage, [In] string OtherUsageDescription, [In, Required: DisableOverride ToSubClass] uint64 Size, [In] boolean UseMaximumSize, [In] uint16 NumberOfDataCopies, [In] uint16 PhysicalDiskRedundancy, [In] uint16 NumberOfColumns, [In] uint64 Interleave, [In] uint16 ParityLayout, [In] boolean RequestNoSinglePointOfFailure, [In] uint16 FaultDomainAwareness, [In] uint16 ProvisioningType, [Out, EmbeddedInstance("MSFT_VirtualDisk"): ToSubClass] MSFT_VirtualDisk CreatedVirtualDisk, [Out] MSFT_StorageJob ref CreatedStorageJob, [Out, EmbeddedInstance("MSFT_StorageExtendedStatus"): 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."): ToSubClass Amended, ValueMap{"0", "1", "2", "3", "4", "5", "4096", "40001", "40002", "46000", "46001", "50000", "52000", "52001", "52002", "53000", "53001", "54000"}: 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."}: ToSubClass Amended] uint32 CreateMaskingSet([In, Required: DisableOverride ToSubClass, 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."): ToSubClass Amended] 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)."): ToSubClass Amended] 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)."): ToSubClass Amended, ValueMap{"0", "2", "3", "4"}: ToSubClass, Values{"Unknown", "Read Write", "Read-Only", "No Access"}: ToSubClass Amended] 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."): ToSubClass Amended] 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."): ToSubClass Amended] 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."): ToSubClass Amended] 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."): ToSubClass Amended, ValueMap{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22..32767", "32768..65535"}: 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"}: ToSubClass Amended] uint16 HostType, [Out, Description("This parameter returns a reference to the storage job used to track the long running operation. When the operation has completed, an association should exist between the storage job and the created objects."): ToSubClass Amended] MSFT_StorageJob ref CreatedStorageJob, [Out, EmbeddedInstance("MSFT_MaskingSet"): ToSubClass] MSFT_MaskingSet CreatedMaskingSet, [Out, Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information."): ToSubClass Amended, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
	[Description("This method returns the security descriptor that controls access to this specific object instance."): ToSubClass Amended, ValueMap{"0", "1", "2", "3", "4", "5", "40001", "40002", "46000", "46001"}: 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."}: ToSubClass Amended] uint32 GetSecurityDescriptor([Out, Required: DisableOverride ToSubClass, Description("A Security Descriptor Definition Language (SDDL) formed string describing the access control list of the object."): ToSubClass Amended] string SecurityDescriptor, [Out, Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information."): ToSubClass Amended, EmbeddedInstance("MSFT_StorageExtendedStatus"): 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."): ToSubClass Amended, ValueMap{"0", "1", "2", "3", "4", "5", "40001", "40002", "46000", "46001"}: 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."}: ToSubClass Amended] uint32 SetSecurityDescriptor([In, Required: DisableOverride ToSubClass, Description("A Security Descriptor Definition Language (SDDL) formed string describing the desired access control list for this object."): ToSubClass Amended] string SecurityDescriptor, [Out, Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information."): ToSubClass Amended, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
	[Description("This method allows a user to set the description field of the storage subsystem."): ToSubClass Amended, ValueMap{"0", "1", "2", "3", "4", "5", "40001", "40002", "46000", "46001"}: 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."}: ToSubClass Amended] uint32 SetDescription([In, Required: DisableOverride ToSubClass] string Description, [Out, Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information."): ToSubClass Amended, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
	[Description("This method allows a user to set the SupportsAutomaticObjectClustering field of the storage subsystem."): ToSubClass Amended, ValueMap{"0", "1", "2", "3", "4", "5", "40001", "40002", "46000", "46001"}: 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."}: ToSubClass Amended] uint32 SetAttributes([In, Required: DisableOverride ToSubClass] boolean AutomaticClusteringEnabled, [Out, Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information."): ToSubClass Amended, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
	 uint32 SetAttributes2([In] boolean AutomaticClusteringEnabled, [In] boolean VirtualDiskRepairEnabled, [In] uint16 FaultDomainAwarenessDefault, [Out, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
	 uint32 CreateReplicationRelationship([In] string FriendlyName, [Required: DisableOverride ToSubClass, In, ModelCorrespondence{"MSFT_Synchronized.SyncType"}: ToSubClass] uint16 SyncType, [In, EmbeddedInstance("MSFT_ReplicaPeer"): ToSubClass] MSFT_ReplicaPeer TargetStorageSubsystem, [In, Required: DisableOverride ToSubClass] string SourceReplicationGroupFriendlyName, [In] string SourceReplicationGroupDescription, [In, EmbeddedInstance("MSFT_StorageObject"): ToSubClass] MSFT_StorageObject SourceStorageElements[], [In, Required: DisableOverride ToSubClass, EmbeddedInstance("MSFT_ReplicationSettings"): ToSubClass] MSFT_ReplicationSettings SourceGroupSettings, [In, Required: DisableOverride ToSubClass] string TargetReplicationGroupFriendlyName, [In] string TargetReplicationGroupDescription, [In, EmbeddedInstance("MSFT_StorageObject"): ToSubClass] MSFT_StorageObject TargetStorageElements[], [In, EmbeddedInstance("MSFT_StoragePool"): ToSubClass] MSFT_StoragePool TargetStoragePool, [In, EmbeddedInstance("MSFT_StoragePool"): ToSubClass] MSFT_StoragePool TargetStoragePools[], [In, Required: DisableOverride ToSubClass, EmbeddedInstance("MSFT_ReplicationSettings"): ToSubClass] MSFT_ReplicationSettings TargetGroupSettings, [In] uint32 RecoveryPointObjective, [in,out, EmbeddedInstance("MSFT_ReplicationGroup"): ToSubClass] MSFT_ReplicationGroup SourceGroup, [In, EmbeddedInstance("MSFT_ReplicationGroup"): ToSubClass] MSFT_ReplicationGroup TargetGroup, [Out, EmbeddedInstance("MSFT_ReplicaPeer"): ToSubClass] MSFT_ReplicaPeer CreatedReplicaPeer, [Out] MSFT_StorageJob ref CreatedStorageJob, [Out, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
	 uint32 DeleteReplicationRelationship([In, Required: DisableOverride ToSubClass, EmbeddedInstance("MSFT_ReplicationGroup"): ToSubClass] MSFT_ReplicationGroup SourceReplicationGroup, [In, Required: DisableOverride ToSubClass, EmbeddedInstance("MSFT_ReplicaPeer"): ToSubClass] MSFT_ReplicaPeer TargetGroupReplicaPeer, [Out] MSFT_StorageJob ref CreatedStorageJob, [Out, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
	 uint32 CreateReplicationGroup([In, Required: DisableOverride ToSubClass] string FriendlyName, [In] string Description, [In, Required: DisableOverride ToSubClass, EmbeddedInstance("MSFT_StorageObject"): ToSubClass] MSFT_StorageObject StorageElements[], [In, Required: DisableOverride ToSubClass, EmbeddedInstance("MSFT_ReplicationSettings"): ToSubClass] MSFT_ReplicationSettings ReplicationSettings, [Out] MSFT_StorageJob ref CreatedStorageJob, [Out, EmbeddedInstance("MSFT_ReplicationGroup"): ToSubClass] MSFT_ReplicationGroup CreatedReplicationGroup, [Out, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
	 uint32 CreateFileServer([In] string FriendlyName, [In, Required: DisableOverride ToSubClass] uint16 FileSharingProtocols[], [In, Required: DisableOverride ToSubClass] string HostNames[], [Out, EmbeddedInstance("MSFT_FileServer"): ToSubClass] MSFT_FileServer CreatedFileServer, [Out] MSFT_StorageJob ref CreatedStorageJob, [Out, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
	 uint32 GetDiagnosticInfo([In, Required: DisableOverride ToSubClass] string DestinationPath, [In] uint32 TimeSpan, [In] string ActivityId, [In] boolean ExcludeOperationalLog, [In] boolean ExcludeDiagnosticLog, [In] boolean IncludeLiveDump, [In] boolean CopyExistingInfoOnly, [Out, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
	 uint32 ClearDiagnosticInfo([Out, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
	 uint32 StartDiagnosticLog([In] uint16 Level, [In, Units("MegaBytes"): ToSubClass Amended] uint64 MaxLogSize, [Out, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
	 uint32 StopDiagnosticLog([Out, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
	 uint32 Diagnose([Out, EmbeddedInstance("MSFT_StorageDiagnoseResult"): ToSubClass] MSFT_StorageDiagnoseResult DiagnoseResults[], [Out, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
	 uint32 GetActions([Out, EmbeddedInstance("MSFT_HealthAction"): ToSubClass] MSFT_HealthAction ActionResults[], [Out, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
};
[Association: DisableOverride ToSubClass, ClassVersion("1.0"): Amended, Abstract, Description("Association between a subsystem and replica peer"): ToSubClass Amended]
class MSFT_StorageSubSystemToReplicaPeer
{
	[key] MSFT_StorageSubSystem ref StorageSubSystem;
	[key] MSFT_ReplicaPeer ref ReplicaPeer;
};
[Association: DisableOverride ToSubClass, ClassVersion("1.0"): Amended, Abstract, Description("Association between a subsystem and replication capabilities"): ToSubClass Amended]
class MSFT_StorageSubSystemToReplicationCapabilities
{
	[key] MSFT_StorageSubSystem ref StorageSubSystem;
	[key] MSFT_ReplicationCapabilities ref ReplicationCapabilities;
};
[Association: DisableOverride ToSubClass, ClassVersion("1.0"): Amended, Abstract, Description("Association between a subsystem and replication group"): ToSubClass Amended]
class MSFT_StorageSubSystemToReplicationGroup
{
	[key] MSFT_StorageSubSystem ref StorageSubSystem;
	[key] MSFT_ReplicationGroup ref ReplicationGroup;
};
[Abstract, Description("A storage tier."): ToSubClass Amended, ClassVersion("1.0"): Amended]
class MSFT_StorageTier : MSFT_StorageObject
{
	[Description("Friendly name of the storage tier, defined by the user"): ToSubClass Amended] string FriendlyName;
	[read: ToSubClass] uint16 Usage;
	[Description("A user settable description of the storage tier"): ToSubClass Amended] string Description;
	[Description("Size of the tier on the virtual disk. This property is available only when the storage tier is part of a virtual disk. The property is unspecified for pool-level storage tiers."): ToSubClass Amended] uint64 Size;
	[read: ToSubClass] uint64 AllocatedSize;
	[read: ToSubClass] uint64 FootprintOnPool;
	[read: ToSubClass] uint16 ProvisioningType;
	[read: ToSubClass] uint64 AllocationUnitSize;
	[Description("Media type of this storage tier"): ToSubClass Amended, ValueMap{"0", "3", "4"}: ToSubClass, Values{"Unspecified", "HDD", "SSD"}: ToSubClass Amended] uint16 MediaType;
	[read: ToSubClass] uint16 TierClass;
	[read: ToSubClass] uint16 FaultDomainAwareness;
	[read: ToSubClass] uint16 ColumnIsolation;
	[read: ToSubClass, Description("Specifies the name of the resiliency setting that should be used for storage tier creation."): ToSubClass Amended, ModelCorrespondence{"MSFT_ResiliencySetting.Name"}: ToSubClass] string ResiliencySettingName;
	[read: ToSubClass] uint16 PhysicalDiskRedundancy;
	[read: ToSubClass] uint16 NumberOfDataCopies;
	[read: ToSubClass] uint16 NumberOfGroups;
	[read: ToSubClass] uint16 NumberOfColumns;
	[read: ToSubClass] uint64 Interleave;
	[read: ToSubClass] uint16 ParityLayout;
	 uint32 GetPhysicalExtent([Out, EmbeddedInstance("MSFT_PhysicalExtent"): ToSubClass] MSFT_PhysicalExtent PhysicalExtents[], [Out, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
	[Description("This method deletes the storage tier.This method is available only when the SupportsStorageTierDeletion propertyon the storage subsystem is set to TRUE. If it is set to FALSE, this methodwill fail with MI_RESULT_NOT_SUPPORTED."): ToSubClass Amended, ValueMap{"0", "1", "2", "3", "4", "5", "40001", "40002", "46000", "46001", "48007"}: 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."}: ToSubClass Amended] uint32 DeleteObject([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."): ToSubClass Amended] MSFT_StorageJob ref CreatedStorageJob, [Out, Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information."): ToSubClass Amended, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
	[Description("Resizes the storage tier on the virtual disk. This method is not available for pool-level storage tiers."): ToSubClass Amended, ValueMap{"0", "1", "2", "3", "4", "5", "40000", "40001", "40002", "46000", "46001", "48007"}: 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."}: ToSubClass Amended] uint32 Resize([in,out] uint64 Size, [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."): ToSubClass Amended] MSFT_StorageJob ref CreatedStorageJob, [Out, Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information."): ToSubClass Amended, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
	[Description("This method allows the storage tier to be renamed."): ToSubClass Amended, ValueMap{"0", "1", "2", "3", "4", "5", "40001", "40002", "46000", "46001", "48007"}: 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."}: ToSubClass Amended] uint32 SetFriendlyName([In, Required: DisableOverride ToSubClass] string FriendlyName, [Out, Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information."): ToSubClass Amended, EmbeddedInstance("MSFT_StorageExtendedStatus"): 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."): ToSubClass Amended, ValueMap{"0", "1", "2", "3", "4", "5", "40001", "40002", "46000", "46001", "48007"}: 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."}: ToSubClass Amended] uint32 SetAttributes([In, Required: DisableOverride ToSubClass, Description("Media type of this storage tier"): ToSubClass Amended, ValueMap{"3", "4"}: ToSubClass, Values{"HDD", "SSD"}: ToSubClass Amended] uint16 MediaType, [Out, Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information."): ToSubClass Amended, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
	 uint32 SetAttributes2([In] uint16 ProvisioningType, [In] uint16 MediaType, [In] uint16 FaultDomainAwareness, [In] uint16 ColumnIsolation, [In] string ResiliencySettingName, [In] uint16 PhysicalDiskRedundancy, [In] uint16 NumberOfDataCopies, [In] uint16 NumberOfGroups, [In] uint16 NumberOfColumns, [In] uint64 Interleave, [Out] string ExtendedStatus);
	 uint32 SetAttributes3([In] uint16 ProvisioningType, [In] uint64 AllocationUnitSize, [In] uint16 MediaType, [In] uint16 FaultDomainAwareness, [In] uint16 ColumnIsolation, [In] string ResiliencySettingName, [In] uint16 Usage, [In] uint16 PhysicalDiskRedundancy, [In] uint16 NumberOfDataCopies, [In] uint16 NumberOfGroups, [In] uint16 NumberOfColumns, [In] uint64 Interleave, [Out] string ExtendedStatus);
	[Description("This method allows the storage tier's description to be changed."): ToSubClass Amended, ValueMap{"0", "1", "2", "3", "4", "5", "40001", "40002", "46000", "46001", "48007"}: 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."}: ToSubClass Amended] uint32 SetDescription([In, Required: DisableOverride ToSubClass] string Description, [Out, Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information."): ToSubClass Amended, EmbeddedInstance("MSFT_StorageExtendedStatus"): 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."): ToSubClass Amended, ValueMap{"0", "1", "2", "3", "4", "5", "40001", "40002", "40003", "46000", "46001"}: 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."}: ToSubClass Amended] uint32 GetSupportedSize([In, Required: DisableOverride ToSubClass, 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."): ToSubClass Amended] 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."): ToSubClass Amended, Units("Bytes"): ToSubClass Amended] uint64 SupportedSizes[], [Out, Description("This parameter denotes the minimum supported size that a tier created in this pool can be."): ToSubClass Amended, Units("Bytes"): ToSubClass Amended] uint64 TierSizeMin, [Out, Description("This parameter denotes the maximum supported size that a tier created in this pool can be."): ToSubClass Amended, Units("Bytes"): ToSubClass Amended] 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."): ToSubClass Amended, Units("Bytes"): ToSubClass Amended] uint64 TierSizeDivisor, [Out, Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information."): ToSubClass Amended, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
	 uint32 AddStorageFaultDomain([In, Required: DisableOverride ToSubClass] MSFT_StorageFaultDomain ref StorageFaultDomains[], [Out] MSFT_StorageJob ref CreatedStorageJob, [Out, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
	 uint32 RemoveStorageFaultDomain([In, Required: DisableOverride ToSubClass] MSFT_StorageFaultDomain ref StorageFaultDomains[], [Out] MSFT_StorageJob ref CreatedStorageJob, [Out, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
};
[Abstract, Description("A subsystem storage volume."): ToSubClass Amended, ClassVersion("1.0"): Amended]
class MSFT_VirtualDisk : MSFT_StorageObject
{
	[read: ToSubClass, Required: DisableOverride ToSubClass, Description("A user-settable, display-oriented string representing the name of the virtual disk."): ToSubClass Amended] string FriendlyName;
	[read: ToSubClass, Required: DisableOverride ToSubClass, Description("Name is a semi-unique (scoped to the owning storage subsystem), human-readable string used to identify the virtual disk."): ToSubClass Amended] string Name;
	[read: ToSubClass, Required: DisableOverride ToSubClass, ValueMap{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11"}: ToSubClass, Values{"Unknown", "Other", "VPD83NAA6", "VPD83NAA5", "VPD83Type2", "VPD83Type1", "VPD83Type0", "SNVM", "NodeWWN", "NAA", "EUI64", "T10VID"}: ToSubClass Amended] uint16 NameFormat;
	[read: ToSubClass, Required: DisableOverride ToSubClass, 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."): ToSubClass Amended, ValueMap{"0", "1", "2", "3", "8"}: ToSubClass, Values{"Vendor Specific", "Vendor Id", "EUI64", "FCPH Name", "SCSI Name String"}: ToSubClass Amended, ModelCorrespondence{"MSFT_StorageObject.UniqueId"}: ToSubClass] uint16 UniqueIdFormat;
	[read: ToSubClass, 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."): ToSubClass Amended, ModelCorrespondence{"MSFT_StorageObject.UniqueId", "MSFT_VirtualDisk.UniqueIdFormat"}: ToSubClass] string UniqueIdFormatDescription;
	[read: ToSubClass, Required: DisableOverride ToSubClass, Description("This field indicates the intended usage for this virtual disk."): ToSubClass Amended, ValueMap{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17"}: 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"}: ToSubClass Amended] uint16 Usage;
	[read: ToSubClass, 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."): ToSubClass Amended] string OtherUsageDescription;
	[read: ToSubClass, Required: DisableOverride ToSubClass, 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."): ToSubClass Amended, ValueMap{"0", "1", "2", "5"}: ToSubClass, Values{"Healthy", "Warning", "Unhealthy", "Unknown"}: ToSubClass Amended] uint16 HealthStatus;
	[read: ToSubClass, Required: DisableOverride ToSubClass, 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."): ToSubClass Amended, ValueMap{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "..", "0xD002", "0xD003"}: 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"}: ToSubClass Amended] uint16 OperationalStatus[];
	[read: ToSubClass, 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'."): ToSubClass Amended] string OtherOperationalStatusDescription;
	[read: ToSubClass, Required: DisableOverride ToSubClass, Description("The logical size of the virtual disk measured in bytes"): ToSubClass Amended, Units("Bytes"): ToSubClass Amended] uint64 Size;
	[read: ToSubClass, Required: DisableOverride ToSubClass, 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)."): ToSubClass Amended, Units("Bytes"): ToSubClass Amended] uint64 AllocatedSize;
	[read: ToSubClass, Units("Bytes"): ToSubClass Amended] uint64 LogicalSectorSize;
	[read: ToSubClass, Units("Bytes"): ToSubClass Amended] uint64 PhysicalSectorSize;
	[read: ToSubClass, 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."): ToSubClass Amended, Units("Bytes"): ToSubClass Amended] uint64 FootprintOnPool;
	[read: ToSubClass, Description("Indicates whether or not there are tiers associated with this virtual disk."): ToSubClass Amended] boolean IsTiered;
	[read: ToSubClass, Required: DisableOverride ToSubClass, 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. "): ToSubClass Amended, ValueMap{"0", "1", "2"}: ToSubClass, Values{"Unknown", "Thin", "Fixed"}: ToSubClass Amended] uint16 ProvisioningType;
	[read: ToSubClass, Description("Specifies the allocation unit size in bytes for this virtual disk."): ToSubClass Amended, Units("Bytes"): ToSubClass Amended] uint64 AllocationUnitSize;
	[read: ToSubClass] uint16 MediaType;
	[read: ToSubClass, 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."): ToSubClass Amended] boolean IsEnclosureAware;
	[read: ToSubClass, Description("Determines the current allocation behavior for this virtual disk. Fault domain aware virtual disks will intelligently pick the physical disks to use for their redundancy to balance the fault tolerance between two (or more) fault domain units of the specified type."): ToSubClass Amended, ValueMap{"1", "2", "3", "4", "5"}: ToSubClass, Values{"PhysicalDisk", "StorageEnclosure", "StorageScaleUnit", "StorageChassis", "StorageRack"}: ToSubClass Amended] uint16 FaultDomainAwareness;
	[read: ToSubClass] uint16 ColumnIsolation;
	[read: ToSubClass, Required: DisableOverride ToSubClass, Description("The name of the resiliency setting used to create this virtual disk."): ToSubClass Amended, ModelCorrespondence{"MSFT_ResiliencySetting.Name"}: ToSubClass] string ResiliencySettingName;
	[read: ToSubClass, 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."): ToSubClass Amended] uint16 PhysicalDiskRedundancy;
	[read: ToSubClass, 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."): ToSubClass Amended] uint16 NumberOfDataCopies;
	[read: ToSubClass] uint16 NumberOfGroups;
	[read: ToSubClass, Description("This field indicates the number of underlying physical disks across which data for this virtual disk is striped."): ToSubClass Amended] uint16 NumberOfColumns;
	[read: ToSubClass, 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."): ToSubClass Amended] uint64 Interleave;
	[read: ToSubClass, 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."): ToSubClass Amended, ValueMap{"1", "2"}: ToSubClass, Values{"Non-rotated Parity", "Rotated Parity"}: ToSubClass Amended] uint16 ParityLayout;
	[read: ToSubClass] boolean RequestNoSinglePointOfFailure;
	[read: ToSubClass, Required: DisableOverride ToSubClass, Description("Indicates whether the virtual disk is available for read and/or write access"): ToSubClass Amended, ValueMap{"0", "1", "2", "3", "4"}: ToSubClass, Values{"Unknown", "Readable", "Writeable", "Read/Write", "Write Once"}: ToSubClass Amended] uint16 Access;
	[read: ToSubClass, Description("Indicates whether this virtual disk is a snapshot of another virtual disk"): ToSubClass Amended] boolean IsSnapshot;
	[read: ToSubClass, 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."): ToSubClass Amended] boolean IsManualAttach;
	[read: ToSubClass] boolean IsDeduplicationEnabled;
	[read: ToSubClass] uint16 NumberOfAvailableCopies;
	[read: ToSubClass, 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."): ToSubClass Amended, ValueMap{"0", "1", "2", "3", "4", "5"}: ToSubClass, Values{"Unknown", "None", "By Policy", "Majority Disks Unhealthy", "Incomplete", "Timeout"}: ToSubClass Amended] uint16 DetachedReason;
	[Description("Size of the write cache for the virtual disk"): ToSubClass Amended, Units("Bytes"): ToSubClass Amended] uint64 WriteCacheSize;
	[Description("Size of the read cache for the virtual disk"): ToSubClass Amended, Units("Bytes"): ToSubClass Amended] uint64 ReadCacheSize;
	 uint32 GetPhysicalExtent([Out, EmbeddedInstance("MSFT_PhysicalExtent"): ToSubClass] MSFT_PhysicalExtent PhysicalExtents[], [Out, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
	[Description("This method deletes the virtual disk. After this method is called, the space used by the virtual disk will be reclaimed and the user will be unable to reverse the delete operation."): ToSubClass Amended, ValueMap{"0", "1", "2", "3", "4", "5", "4096", "40001", "40002", "40003", "46000", "46001", "48006", "48007", "50002"}: 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."}: ToSubClass Amended] uint32 DeleteObject([Out, Description("This parameter returns a reference to the storage job used to track the long running operation."): ToSubClass Amended] MSFT_StorageJob ref CreatedStorageJob, [Out, Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information."): ToSubClass Amended, EmbeddedInstance("MSFT_StorageExtendedStatus"): 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."): ToSubClass Amended, ValueMap{"0", "1", "2", "3", "4", "5", "4096", "40001", "40002", "40003", "46000", "46001", "52001", "53000", "54000"}: 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."}: ToSubClass Amended] uint32 Show([In, Required: DisableOverride ToSubClass, Description("An array of target port addresses from which the virtual disk should be shown"): ToSubClass Amended] string TargetPortAddresses[], [In, Required: DisableOverride ToSubClass, Description("The address of the initiator to which the virtual disk should be shown"): ToSubClass Amended] string InitiatorAddress, [In, Description("This field indicates the operating system type running on the host of the initiator port."): ToSubClass Amended, ValueMap{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22..32767", "32768..65535"}: 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"}: ToSubClass Amended] uint16 HostType, [Out, Description("This parameter returns a reference to the storage job used to track the long running operation."): ToSubClass Amended] MSFT_StorageJob ref CreatedStorageJob, [Out, Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information."): ToSubClass Amended, EmbeddedInstance("MSFT_StorageExtendedStatus"): 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."): ToSubClass Amended, ValueMap{"0", "1", "2", "3", "4", "5", "4096", "40001", "40002", "40003", "46000", "46001", "52001", "53000", "54000"}: 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."}: ToSubClass Amended] uint32 Hide([In, Required: DisableOverride ToSubClass, 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."): ToSubClass Amended] string TargetPortAddresses[], [In, Required: DisableOverride ToSubClass, Description("The address of the initiator to which the virtual disk should be hidden"): ToSubClass Amended] string InitiatorAddress, [Out, Description("This parameter returns a reference to the storage job used to track the long running operation."): ToSubClass Amended] MSFT_StorageJob ref CreatedStorageJob, [Out, Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information."): ToSubClass Amended, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
	[Description("This method creates a point in time snapshot of the virtual disk."): ToSubClass Amended, ValueMap{"0", "1", "2", "3", "4", "5", "4096", "40000", "40001", "40002", "40003", "46000", "46001", "48000", "48001", "48005", "48006"}: 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."}: ToSubClass Amended] uint32 CreateSnapshot([In, Required: DisableOverride ToSubClass, Description("The desired name of the snapshot virtual disk"): ToSubClass Amended] 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."): ToSubClass Amended] string TargetStoragePoolName, [Out, Description("This parameter returns a reference to the storage job used to track the long running operation."): ToSubClass Amended] MSFT_StorageJob ref CreatedStorageJob, [Out, EmbeddedInstance("MSFT_VirtualDisk"): ToSubClass] MSFT_VirtualDisk CreatedVirtualDisk, [Out, Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information."): ToSubClass Amended, EmbeddedInstance("MSFT_StorageExtendedStatus"): 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."): ToSubClass Amended, ValueMap{"0", "1", "2", "3", "4", "5", "4096", "40000", "40001", "40002", "40003", "46000", "46001", "48000", "48001", "48005", "48006"}: 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."}: ToSubClass Amended] uint32 CreateClone([In, Required: DisableOverride ToSubClass, Description("The desired name of the virtual disk clone"): ToSubClass Amended] 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."): ToSubClass Amended] string TargetStoragePoolName, [Out, Description("This parameter returns a reference to the storage job used to track the long running operation."): ToSubClass Amended] MSFT_StorageJob ref CreatedStorageJob, [Out, EmbeddedInstance("MSFT_VirtualDisk"): ToSubClass] MSFT_VirtualDisk CreatedVirtualDisk, [Out, Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information."): ToSubClass Amended, EmbeddedInstance("MSFT_StorageExtendedStatus"): 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."): ToSubClass Amended, ValueMap{"0", "1", "2", "3", "4", "5", "6", "4096", "4097", "40000", "40001", "40002", "46000", "46001", "48006", "48007", "50002", "50003"}: 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."}: ToSubClass Amended] uint32 Resize([in,out, Required: DisableOverride ToSubClass, 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."): ToSubClass Amended] uint64 Size, [Out, Description("This parameter returns a reference to the storage job used to track the long running operation."): ToSubClass Amended] MSFT_StorageJob ref CreatedStorageJob, [Out, Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information."): ToSubClass Amended, EmbeddedInstance("MSFT_StorageExtendedStatus"): 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."): ToSubClass Amended, ValueMap{"0", "1", "2", "3", "4", "5", "6", "4096", "40000", "40001", "40002", "46000", "46001", "50001", "50002"}: 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."}: ToSubClass Amended] uint32 Repair([Out, Description("This parameter returns a reference to the storage job used to track the long running operation."): ToSubClass Amended] MSFT_StorageJob ref CreatedStorageJob, [Out, Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information."): ToSubClass Amended, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
	[Description("This method returns the security descriptor that controls access to this specific object instance."): ToSubClass Amended, ValueMap{"0", "1", "2", "3", "4", "5", "40001", "40002", "46000", "46001"}: 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."}: ToSubClass Amended] uint32 GetSecurityDescriptor([Out, Required: DisableOverride ToSubClass, Description("A Security Descriptor Definition Language (SDDL) formed string describing the access control list of the object."): ToSubClass Amended] string SecurityDescriptor, [Out, Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information."): ToSubClass Amended, EmbeddedInstance("MSFT_StorageExtendedStatus"): 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."): ToSubClass Amended, ValueMap{"0", "1", "2", "3", "4", "5", "40001", "40002", "46000", "46001"}: 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."}: ToSubClass Amended] uint32 SetSecurityDescriptor([In, Required: DisableOverride ToSubClass, Description("A Security Descriptor Definition Language (SDDL) formed string describing the desired access control list for this object."): ToSubClass Amended] string SecurityDescriptor, [Out, Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information."): ToSubClass Amended, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
	[Description("This method allows the virtual disk to be renamed."): ToSubClass Amended, ValueMap{"0", "1", "2", "3", "4", "5", "40001", "40002", "46000", "46001", "48006", "48007", "50002", "50003"}: 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."}: ToSubClass Amended] uint32 SetFriendlyName([In, Required: DisableOverride ToSubClass] string FriendlyName, [Out, Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information."): ToSubClass Amended, EmbeddedInstance("MSFT_StorageExtendedStatus"): 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."): ToSubClass Amended, ValueMap{"0", "1", "2", "3", "4", "5", "40001", "40002", "46000", "46001", "48006", "48007", "50002", "50003"}: 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."}: ToSubClass Amended] uint32 SetUsage([In, Required: DisableOverride ToSubClass, ValueMap{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17"}: 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"}: ToSubClass Amended] 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'."): ToSubClass Amended] string OtherUsageDescription, [Out, Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information."): ToSubClass Amended, EmbeddedInstance("MSFT_StorageExtendedStatus"): 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."): ToSubClass Amended, ValueMap{"0", "1", "2", "3", "4", "5", "40001", "40002", "46000", "46001", "48006", "48007", "50002", "50003"}: 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."}: ToSubClass Amended] uint32 SetAttributes([In] boolean IsManualAttach, [In] string StorageNodeName, [In, ValueMap{"1", "2", "3", "4"}: ToSubClass, Values{"Readable", "Writeable", "Read/Write", "Write Once"}: ToSubClass Amended] uint16 Access, [Out, Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information."): ToSubClass Amended, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
	 uint32 SetProperties([In] uint16 ProvisioningType, [In] uint64 AllocationUnitSize, [In] uint16 MediaType, [In] uint16 FaultDomainAwareness, [In] uint16 ColumnIsolation, [In] string ResiliencySettingName, [In] uint16 PhysicalDiskRedundancy, [In] uint16 NumberOfDataCopies, [In] uint16 NumberOfGroups, [In] uint16 NumberOfColumns, [In] uint64 Interleave, [Out, EmbeddedInstance("MSFT_StorageExtendedStatus"): 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."): ToSubClass Amended, ValueMap{"0", "1", "2", "3", "4", "5", "40001", "40002", "46000", "46001", "48006", "48007", "50002", "50003"}: 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."}: ToSubClass Amended] uint32 Attach([In] string StorageNodeName, [Out, Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information."): ToSubClass Amended, EmbeddedInstance("MSFT_StorageExtendedStatus"): 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)."): ToSubClass Amended, ValueMap{"0", "1", "2", "3", "4", "5", "40001", "40002", "46000", "46001", "48006", "48007", "50002", "50003", "50004"}: 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."}: ToSubClass Amended] uint32 Detach([In] string StorageNodeName, [Out, Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information."): ToSubClass Amended, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
	[Description("This method will add one or more physical disks for manual allocation."): ToSubClass Amended, ValueMap{"0", "1", "2", "3", "4", "5", "4096", "40001", "40002", "40003", "46000", "46001", "48006", "48007", "51000", "51002", "51003"}: 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."}: ToSubClass Amended] uint32 AddPhysicalDisk([In, Required: DisableOverride ToSubClass, EmbeddedInstance("MSFT_PhysicalDisk"): ToSubClass] MSFT_PhysicalDisk PhysicalDisks[], [In, ValueMap{"1", "2", "3", "5"}: ToSubClass, Values{"Auto-Select", "Manual-Select", "Hot Spare", "Journal"}: ToSubClass Amended] uint16 Usage, [Out, Description("This parameter returns a reference to the storage job used to track the long running operation."): ToSubClass Amended] MSFT_StorageJob ref CreatedStorageJob, [Out, Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information."): ToSubClass Amended, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
	 uint32 AddPhysicalDisk2([In, Required: DisableOverride ToSubClass] MSFT_PhysicalDisk ref PhysicalDisks[], [In] uint16 Usage, [Out] MSFT_StorageJob ref CreatedStorageJob, [Out, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
	[Description("This method will remove one or more physical disks from manual allocation."): ToSubClass Amended, ValueMap{"0", "1", "2", "3", "4", "5", "4096", "40001", "40002", "40003", "46000", "46001", "48006", "48007", "51000", "51004"}: 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."}: ToSubClass Amended] uint32 RemovePhysicalDisk([In, Required: DisableOverride ToSubClass, EmbeddedInstance("MSFT_PhysicalDisk"): ToSubClass] MSFT_PhysicalDisk PhysicalDisks[], [Out, Description("This parameter returns a reference to the storage job used to track the long running operation."): ToSubClass Amended] MSFT_StorageJob ref CreatedStorageJob, [Out, Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information."): ToSubClass Amended, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
	 uint32 RemovePhysicalDisk2([In, Required: DisableOverride ToSubClass] MSFT_PhysicalDisk ref PhysicalDisks[], [Out] MSFT_StorageJob ref CreatedStorageJob, [Out, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
	 uint32 AddStorageFaultDomain([In, Required: DisableOverride ToSubClass] MSFT_StorageFaultDomain ref StorageFaultDomains[], [Out] MSFT_StorageJob ref CreatedStorageJob, [Out, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
	 uint32 RemoveStorageFaultDomain([In, Required: DisableOverride ToSubClass] MSFT_StorageFaultDomain ref StorageFaultDomains[], [Out] MSFT_StorageJob ref CreatedStorageJob, [Out, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
	 uint32 CreateReplica([In] string FriendlyName, [In, Required: DisableOverride ToSubClass, EmbeddedInstance("MSFT_ReplicaPeer"): ToSubClass] MSFT_ReplicaPeer TargetStorageSubsystem, [In] string TargetVirtualDiskObjectId, [In] string TargetStoragePoolObjectId, [In] uint16 RecoveryPointObjective, [In, Required: DisableOverride ToSubClass, EmbeddedInstance("MSFT_ReplicationSettings"): ToSubClass] MSFT_ReplicationSettings ReplicationSettings, [In, Required: DisableOverride ToSubClass] uint16 SyncType, [Out, EmbeddedInstance("MSFT_ReplicaPeer"): ToSubClass] MSFT_ReplicaPeer CreatedReplicaPeer, [Out] MSFT_StorageJob ref CreatedStorageJob, [Out, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
	 uint32 SetReplicationRelationship([In, Required: DisableOverride ToSubClass] uint16 Operation, [In, EmbeddedInstance("MSFT_ReplicaPeer"): ToSubClass] MSFT_ReplicaPeer VirtualDiskReplicaPeer, [Out] MSFT_StorageJob ref CreatedStorageJob, [Out, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
};
[Association: DisableOverride ToSubClass, Description("Association between replicated virtual disks"): ToSubClass Amended, ClassVersion("1.0"): Amended, Abstract]
class MSFT_VirtualDiskToReplicaPeer : MSFT_Synchronized
{
	[key] MSFT_VirtualDisk ref VirtualDisk;
	[key] MSFT_ReplicaPeer ref ReplicaPeer;
};
[Description("Represents a volume on the system."): ToSubClass Amended, ClassVersion("1.0"): Amended]
class MSFT_Volume : MSFT_StorageObject
{
	[read: ToSubClass, Description("Drive letter assigned to the volume."): ToSubClass Amended] char16 DriveLetter;
	[read: ToSubClass, Required: DisableOverride ToSubClass, Description("Guid path of the volume."): ToSubClass Amended] string Path;
	[read: ToSubClass, Required: DisableOverride ToSubClass, Description("The health status of the Volume.\n0 - 'Healthy': The volume is functioning normally.\n1 - 'Warning': The volume is still functioning, but has detected errors or issues that require administrator intervention.\n2 - 'Unhealthy': The volume is not functioning, due to errors or failures. The volume needs immediate attention from an administrator."): ToSubClass Amended, ValueMap{"0", "1", "2"}: ToSubClass, Values{"Healthy", "Warning", "Unhealthy"}: ToSubClass Amended] uint16 HealthStatus;
	[read: ToSubClass, Required: DisableOverride ToSubClass, Description("An array of values that denote the current operational status of the volume.\n0 - 'Unknown': The operational status is unknown.\n1 - 'Other': A vendor-specific OperationalStatus has been specified by setting the OtherOperationalStatusDescription property.\n2 - 'OK': The volume is responding to commands and is in a normal operating state.\n3 - 'Degraded': The volume is responding to commands, but is not running in an optimal operating state.\n4 - 'Stressed': The volume is functioning, but needs attention. For example, the volume might be overloaded or overheated.\n5 - 'Predictive Failure': The volume is functioning, but a failure is likely to occur in the near future.\n6 - 'Error': An error has occurred.\n7 - 'Non-Recoverable Error': A non-recoverable error has occurred.\n8 - 'Starting': The volume is in the process of starting.\n9 - 'Stopping': The volume is in the process of stopping.\n10 - 'Stopped': The volume was stopped or shut down in a clean and orderly fashion.\n11 - 'In Service': The volume is being configured, maintained, cleaned, or otherwise administered.\n12 - 'No Contact': The storage provider has knowledge of the volume, but has never been able to establish communication with it.\n13 - 'Lost Communication': The storage provider has knowledge of the volume and has contacted it successfully in the past, but the volume is currently unreachable.\n14 - 'Aborted': Similar to Stopped, except that the volume stopped abruptly and may require configuration or maintenance.\n15 - 'Dormant': The volume is reachable, but it is inactive.\n16 - 'Supporting Entity in Error': This status value does not necessarily indicate trouble with the volume, but it does indicate that another device or connection that the volume depends on may need attention.\n17 - 'Completed': The volume has completed an operation. This status value should be combined with OK, Error, or Degraded, depending on the outcome of the operation.\n0xD00D - 'Scan Needed': In Windows-based storage subsystems, this indicates a scan is needed but not repair.\n0xD00E - 'Spot Fix Needed': In Windows-based storage subsystems, this indicates limited repair is needed.\n0xD00F - 'Full Repair Needed': In Windows-based storage subsystems, this indicates full repair is needed."): ToSubClass Amended, ValueMap{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "..", "0xD00D", "0xD00E", "0xD00F"}: ToSubClass, Values{"Unknown", "Other", "OK", "Degraded", "Stressed", "Predictive Failure", "Error", "Non-Recoverable Error", "Starting", "Stopping", "Stopped", "In Service", "No Contact", "Lost Communication", "Aborted", "Dormant", "Supporting Entity in Error", "Completed", "Vendor Specific", "Scan Needed", "Spot Fix Needed", "Full Repair Needed"}: ToSubClass Amended] uint16 OperationalStatus[];
	[read: ToSubClass, Description("File system on the volume."): ToSubClass Amended] string FileSystem;
	[Description("File system label of the volume."): ToSubClass Amended] string FileSystemLabel;
	[read: ToSubClass, Description("The underlying file system type of the volume."): ToSubClass Amended, ValueMap{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "0x8000", "0x8001"}: ToSubClass, Values{"Unknown", "Threshold", "UFS", "HFS", "FAT", "FAT16", "FAT32", "NTFS4", "NTFS5", "XFS", "AFS", "EXT2", "EXT3", "ReiserFS", "NTFS", "ReFS", "CSVFS_NTFS", "CSVFS_ReFS"}: ToSubClass Amended] uint16 FileSystemType;
	[read: ToSubClass, Description("Total size of the volume"): ToSubClass Amended, Units("Bytes"): ToSubClass Amended] uint64 Size;
	[read: ToSubClass, Description("Available space on the volume"): ToSubClass Amended, Units("Bytes"): ToSubClass Amended] uint64 SizeRemaining;
	[read: ToSubClass, Description("Denotes the type of the volume."): ToSubClass Amended, ValueMap{"0", "1", "2", "3", "4", "5", "6"}: ToSubClass, Values{"Unknown", "Invalid Root Path", "Removable", "Fixed", "Remote", "CD-ROM", "RAM Disk"}: ToSubClass Amended] uint32 DriveType;
	[Description("Indicates the deduplication mode of the volume."): ToSubClass Amended, ValueMap{"0", "1", "2", "3", "4"}: ToSubClass, Values{"Disabled", "GeneralPurpose", "HyperV", "Backup", "NotAvailable"}: ToSubClass Amended] uint32 DedupMode;
	[read: ToSubClass, Description("The allocation unit size of the volume."): ToSubClass Amended, Units("Bytes"): ToSubClass Amended] uint32 AllocationUnitSize;
	 uint32 DeleteObject([Out] MSFT_StorageJob ref CreatedStorageJob, [Out, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
	 uint32 Format([In] string FileSystem, [In] string FileSystemLabel, [In, Units("Bytes"): ToSubClass Amended] uint32 AllocationUnitSize, [In] boolean Full, [In] boolean Force, [In] boolean Compress, [In] boolean ShortFileNameSupport, [In] boolean SetIntegrityStreams, [In] boolean UseLargeFRS, [In] boolean DisableHeatGathering, [In] boolean IsDAX, [Out, EmbeddedInstance("MSFT_Volume"): ToSubClass] MSFT_Volume FormattedVolume, [Out] MSFT_StorageJob ref CreatedStorageJob, [Out, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
	 uint32 Repair([In] boolean OfflineScanAndFix, [In] boolean Scan, [In] boolean SpotFix, [Out] uint32 Output, [Out] MSFT_StorageJob ref CreatedStorageJob, [Out, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
	 uint32 Optimize([In] boolean ReTrim, [In] boolean Analyze, [In] boolean Defrag, [In] boolean SlabConsolidate, [In] boolean TierOptimize, [In] boolean NormalPriority, [Out] MSFT_StorageJob ref CreatedStorageJob, [Out, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
	 uint32 SetFileSystemLabel([In] string FileSystemLabel, [Out, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
	 uint32 GetSupportedFileSystems([Out] string SupportedFileSystems[], [Out, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
	 uint32 GetSupportedClusterSizes([In] string FileSystem, [Out] uint32 SupportedClusterSizes[], [Out, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
	 uint32 GetCorruptionCount([Out] uint32 CorruptionCount, [Out, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
	 uint32 GetAttributes([Out] boolean VolumeScrubEnabled);
	 uint32 SetAttributes([In] boolean EnableVolumeScrub, [Out, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
	 uint32 Flush();
	 uint32 Resize([In] uint64 Size, [Out] MSFT_StorageJob ref CreatedStorageJob, [Out, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
	 uint32 Diagnose([Out, EmbeddedInstance("MSFT_StorageDiagnoseResult"): ToSubClass] MSFT_StorageDiagnoseResult DiagnoseResults[], [Out, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
	 uint32 SetDedupMode([In] uint32 DedupMode, [Out, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
	 uint32 GetDedupProperties([Out, EmbeddedInstance("MSFT_DedupProperties"): ToSubClass] MSFT_DedupProperties DedupProperties, [Out, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
	 uint32 GetActions([Out, EmbeddedInstance("MSFT_HealthAction"): ToSubClass] MSFT_HealthAction ActionResults[], [Out, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
};
[Association: DisableOverride ToSubClass, dynamic: ToInstance, provider("wsp_sr"): ToInstance, Description("Association between replicated partitions"): ToSubClass Amended]
class WSP_PartitionToReplicaPeer : MSFT_PartitionToReplicaPeer
{
};
[dynamic: ToInstance, provider("wsp_sr"): ToInstance, Description("An enumerable object that represents an object in a target subsystem for which there is a replication relationship."): ToSubClass Amended]
class WSP_ReplicaPeer : MSFT_ReplicaPeer
{
};
[dynamic: ToInstance, provider("wsp_sr"): ToInstance, Description("Represents the replication capabilities of a storage subsystem."): ToSubClass Amended]
class WSP_ReplicationCapabilities : MSFT_ReplicationCapabilities
{
	[implemented] uint32 GetSupportedOperations([In, ModelCorrespondence{"MSFT_ReplicationCapabilities.SupportedReplicationTypes"}: ToSubClass] uint16 ReplicationType, [Out] uint16 SupportedOperations[], [Out, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
	[implemented] uint32 GetSupportedGroupOperations([In, ModelCorrespondence{"MSFT_ReplicationCapabilities.SupportedReplicationTypes"}: ToSubClass] uint16 ReplicationType, [Out] uint16 SupportedGroupOperations[], [Out, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
	[implemented] uint32 GetSupportedFeatures([In, ModelCorrespondence{"MSFT_ReplicationCapabilities.SupportedReplicationTypes"}: ToSubClass] uint16 ReplicationType, [Out] uint16 Features[], [Out, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
	[implemented] uint32 GetSupportedGroupFeatures([In, ModelCorrespondence{"CIM_ReplicationServiceCapabilities.SupportedReplicationTypes"}: ToSubClass] uint16 ReplicationType, [Out] uint16 GroupFeatures[], [Out, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
	[implemented] uint32 GetSupportedCopyStates([In, ModelCorrespondence{"MSFT_ReplicationCapabilities.SupportedReplicationTypes"}: ToSubClass] uint16 ReplicationType, [Out] uint16 SupportedCopyStates[], [Out, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
	[implemented] uint32 GetSupportedGroupCopyStates([In, ModelCorrespondence{"MSFT_ReplicationCapabilities.SupportedReplicationTypes"}: ToSubClass] uint16 ReplicationType, [Out] uint16 SupportedCopyStates[], [Out, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
	[implemented] uint32 GetRecoveryPointData([In, ModelCorrespondence{"MSFT_ReplicationCapabilities.SupportedReplicationTypes"}: ToSubClass] uint16 ReplicationType, [Out] uint32 DefaultRecoveryPoint, [Out] uint32 RecoveryPointValues[], [Out] uint16 RecoveryPointIndicator, [Out, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
};
[dynamic: ToInstance, provider("wsp_sr"): ToInstance, Description("A replication group represents a consistency grouping of storage replicas."): ToSubClass Amended]
class WSP_ReplicationGroup : MSFT_ReplicationGroup
{
	[implemented] uint32 CreateReplica([In] string FriendlyName, [In, Required: DisableOverride ToSubClass, EmbeddedInstance("MSFT_ReplicaPeer"): ToSubClass] MSFT_ReplicaPeer TargetStorageSubsystem, [In, Required: DisableOverride ToSubClass] string TargetGroupObjectId, [In] string TargetStoragePoolObjectId, [In] uint32 RecoveryPointObjective, [In, Required: DisableOverride ToSubClass, EmbeddedInstance("MSFT_ReplicationSettings"): ToSubClass] MSFT_ReplicationSettings ReplicationSettings, [In, Required: DisableOverride ToSubClass] uint16 SyncType, [Out, EmbeddedInstance("MSFT_ReplicaPeer"): ToSubClass] MSFT_ReplicaPeer CreatedReplicaPeer, [Out] MSFT_StorageJob ref CreatedStorageJob, [Out, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
	[implemented] uint32 SetReplicationRelationship([In, Required: DisableOverride ToSubClass] uint16 Operation, [In, Required: DisableOverride ToSubClass, EmbeddedInstance("MSFT_ReplicaPeer"): ToSubClass] MSFT_ReplicaPeer TargetGroup, [In, Required: DisableOverride ToSubClass, EmbeddedInstance("MSFT_StorageObject"): ToSubClass] MSFT_StorageObject SourceStorageObjects[], [In, Required: DisableOverride ToSubClass, EmbeddedInstance("MSFT_StorageObject"): ToSubClass] MSFT_StorageObject TargetStorageObjects[], [In, Required: DisableOverride ToSubClass, EmbeddedInstance("MSFT_Synchronized"): ToSubClass] MSFT_Synchronized SyncPairs[], [Out] MSFT_StorageJob ref CreatedStorageJob, [Out, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
	[implemented] uint32 SetReplicationSettings([In, Required: DisableOverride ToSubClass, EmbeddedInstance("MSFT_ReplicationSettings"): ToSubClass] MSFT_ReplicationSettings ReplicationSettings, [Out, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
	[implemented] uint32 GetReplicationSettings([Out, Required: DisableOverride ToSubClass, EmbeddedInstance("MSFT_ReplicationSettings"): ToSubClass] MSFT_ReplicationSettings ReplicationSettings, [Out, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
	[implemented] uint32 AddMember([In, Required: DisableOverride ToSubClass, EmbeddedInstance("MSFT_StorageObject"): ToSubClass] MSFT_StorageObject StorageObjects[], [Out, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
	[implemented] uint32 RemoveMember([In, Required: DisableOverride ToSubClass, EmbeddedInstance("MSFT_StorageObject"): ToSubClass] MSFT_StorageObject StorageObjects[], [Out, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
	[implemented] uint32 SetFriendlyName([In, Required: DisableOverride ToSubClass] string FriendlyName, [Out, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
	[implemented] uint32 DeleteObject([Out, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
	[implemented, static: DisableOverride ToSubClass] uint32 CreateReplicationGroup([In, Required: DisableOverride ToSubClass] string FriendlyName, [In] string Description, [In, Required: DisableOverride ToSubClass] string StorageElements[], [In, Required: DisableOverride ToSubClass] string LogDevice, [In] uint64 LogSizeInBytes, [In] uint16 ReplicationQuorum, [In] uint16 SyncMode, [Out] string CreatedReplicationGroup, [Out, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
	[implemented, static: DisableOverride ToSubClass] uint32 CreateReplicationRelationship([In, EmbeddedInstance("MSFT_ReplicaPeer"): ToSubClass] MSFT_ReplicaPeer TargetStorageSubsystem, [In, Required: DisableOverride ToSubClass] string SourceReplicationGroupFriendlyName, [In] string SourceReplicationGroupDescription, [In] MSFT_StorageObject ref SourceStorageElements[], [In, Required: DisableOverride ToSubClass, EmbeddedInstance("MSFT_ReplicationSettings"): ToSubClass] MSFT_ReplicationSettings SourceGroupSettings, [In, Required: DisableOverride ToSubClass] string TargetReplicationGroupFriendlyName, [In] string TargetReplicationGroupDescription, [In] MSFT_StorageObject ref TargetStorageElements[], [In, EmbeddedInstance("MSFT_StoragePool"): ToSubClass] MSFT_StoragePool TargetStoragePool, [In, Required: DisableOverride ToSubClass, EmbeddedInstance("MSFT_ReplicationSettings"): ToSubClass] MSFT_ReplicationSettings TargetGroupSettings, [In] uint16 RecoveryPointObjective, [Out, EmbeddedInstance("MSFT_ReplicationGroup"): ToSubClass] MSFT_ReplicationGroup SourceGroup, [Out, EmbeddedInstance("MSFT_ReplicationGroup"): ToSubClass] MSFT_ReplicationGroup TargetGroup, [Out, EmbeddedInstance("MSFT_ReplicaPeer"): ToSubClass] MSFT_ReplicaPeer CreatedReplicaPeer, [Out] MSFT_StorageJob ref CreatedStorageJob, [Out, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
	[implemented, static: DisableOverride ToSubClass] uint32 DeleteReplicationRelationship([In, Required: DisableOverride ToSubClass, EmbeddedInstance("MSFT_ReplicationGroup"): ToSubClass] MSFT_ReplicationGroup SourceReplicationGroup, [In, Required: DisableOverride ToSubClass, EmbeddedInstance("MSFT_ReplicaPeer"): ToSubClass] MSFT_ReplicaPeer TargetGroupReplicaPeer, [Out] MSFT_StorageJob ref CreatedStorageJob, [Out, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus);
};
[Indication: DisableOverride ToSubClass, dynamic: ToInstance, provider("wsp_sr"): ToInstance, Description("Storage arrival events are used whenever a storage object is added or created."): ToSubClass Amended]
class WSP_ReplicationGroupStorageArrivalEvent : MSFT_StorageArrivalEvent
{
};
[Indication: DisableOverride ToSubClass, dynamic: ToInstance, provider("wsp_sr"): ToInstance, Description("Storage departure events are used whenever a storage object is removed or deleted."): ToSubClass Amended]
class WSP_ReplicationGroupStorageDepartureEvent : MSFT_StorageDepartureEvent
{
};
[Indication: DisableOverride ToSubClass, dynamic: ToInstance, provider("wsp_sr"): ToInstance, 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."): ToSubClass Amended]
class WSP_ReplicationGroupStorageModificationEvent : MSFT_StorageModificationEvent
{
};
[Association: DisableOverride ToSubClass, dynamic: ToInstance, provider("wsp_sr"): ToInstance, Description("Association between ReplicationGroup and Partition"): ToSubClass Amended]
class WSP_ReplicationGroupToPartition : MSFT_ReplicationGroupToPartition
{
};
[Association: DisableOverride ToSubClass, dynamic: ToInstance, provider("wsp_sr"): ToInstance, Description("Association between replicated groups"): ToSubClass Amended]
class WSP_ReplicationGroupToReplicaPeer : MSFT_ReplicationGroupToReplicaPeer
{
};
[Association: DisableOverride ToSubClass, dynamic: ToInstance, provider("wsp_sr"): ToInstance, Description("Association between a replication group and its virtual disks"): ToSubClass Amended]
class WSP_ReplicationGroupToVirtualDisk : MSFT_ReplicationGroupToVirtualDisk
{
};
[Description("Represents the settings to be configured on a group or sync pair."): ToSubClass Amended]
class WSP_ReplicationSettings : MSFT_ReplicationSettings
{
};
[Association: DisableOverride ToSubClass, dynamic: ToInstance, provider("wsp_sr"): ToInstance, Description("Association between a subsystem and replica peer"): ToSubClass Amended]
class WSP_StorageSubsystemToReplicaPeer : MSFT_StorageSubSystemToReplicaPeer
{
};
[Association: DisableOverride ToSubClass, dynamic: ToInstance, provider("wsp_sr"): ToInstance, Description("Association between a subsystem and replication capabilities"): ToSubClass Amended]
class WSP_StorageSubsystemToReplicationCapabilities : MSFT_StorageSubSystemToReplicationCapabilities
{
};
[Association: DisableOverride ToSubClass, dynamic: ToInstance, provider("wsp_sr"): ToInstance, Description("Association between a subsystem and replication group"): ToSubClass Amended]
class WSP_StorageSubsystemToReplicationGroup : MSFT_StorageSubSystemToReplicationGroup
{
};
[Description("Synchronized status of a storage object and its Snapshots / Clones / Mirrors."): ToSubClass Amended]
class WSP_Synchronized : MSFT_Synchronized
{
};
[Association: DisableOverride ToSubClass, dynamic: ToInstance, provider("wsp_sr"): ToInstance, Description("Association between replicated virtual disks"): ToSubClass Amended]
class WSP_VirtualDiskToReplicaPeer : MSFT_VirtualDiskToReplicaPeer
{
};
