#pragma autorecover #pragma classflags ("forceupdate") #pragma namespace ( "\\\\.\\root\\microsoft\\windows\\storage\\providers_v2") Instance of __Win32Provider as $prov { Name = "mispace"; ClsId = "{AF88EAF6-3E95-4838-BFF5-2EAD0AD6221A}"; 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 SPACES_StorageAlertEvent" , "select * from SPACES_StorageArrivalEvent" , "select * from SPACES_StorageDepartureEvent" , "select * from SPACES_StorageModificationEvent"}; }; 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("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("This object represents the storage subsystem's view of an initiator port. This is used in conjunction with target port to establish which initiator port is allowed to access to the subsystem's virtual disks."): ToSubClass Amended, ClassVersion("1.0"): Amended] class MSFT_InitiatorId : MSFT_StorageObject { [read: ToSubClass, Required: DisableOverride ToSubClass, Description("This field contains the address or unique identifier for the corresponding initiator port."): ToSubClass Amended] string InitiatorAddress; [read: ToSubClass, Required: DisableOverride ToSubClass, Description("This field specifies the type of the identifier used for initiator address."): ToSubClass Amended, ValueMap{"1", "2", "3", "4", "5", "6", "7"}: ToSubClass, Values{"Other", "PortWWN", "NodeWWN", "Hostname", "iSCSI Name", "SwitchWWN", "SASAddress"}: ToSubClass Amended] uint16 Type; [read: ToSubClass, Required: DisableOverride ToSubClass, Description("This field specifies the operating system, version, driver, and other host environment factors that influence the behavior exposed by storage systems."): 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[]; [read: ToSubClass, Description("When the corresponding array entry in HostType[] is \"Other\", this entry provides a string describing the manufacturer and OS/Environment. When the corresponding HostType[] entry is not \"Other\", this entry allows variations or qualifications of ClientTypes - for example, different versions of Solaris."): ToSubClass Amended, ArrayType("Indexed"): DisableOverride ToSubClass, ModelCorrespondence{"CIM_StorageClientSettingData.ClientTypes"}: ToSubClass] string OtherHostTypeDescription[]; [Description("Allows the user to delete an instance of an initiator id"): 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("ExtendedStatus allows the storage provider to return extended (implementation specific) error information."): ToSubClass Amended, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus); }; [Association: DisableOverride ToSubClass, ClassVersion("1.0"): Amended, Abstract, Description("Association between InitiatorId and VirtualDisk"): ToSubClass Amended] class MSFT_InitiatorIdToVirtualDisk { [key] MSFT_InitiatorId ref InitiatorId; [key] MSFT_VirtualDisk ref VirtualDisk; }; [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); }; [Association: DisableOverride ToSubClass, ClassVersion("1.0"): Amended, Abstract, Description("Association between MaskingSet and InitiatorId"): ToSubClass Amended] class MSFT_MaskingSetToInitiatorId { [key] MSFT_MaskingSet ref MaskingSet; [key] MSFT_InitiatorId ref InitiatorId; }; [Association: DisableOverride ToSubClass, ClassVersion("1.0"): Amended, Abstract, Description("Association between MaskingSet and VirtualDisk"): ToSubClass Amended] class MSFT_MaskingSetToVirtualDisk { [key] MSFT_MaskingSet ref MaskingSet; [key] MSFT_VirtualDisk ref VirtualDisk; }; [Abstract, Description("A subsystem drive or spindle."): ToSubClass Amended, ClassVersion("1.0"): Amended] class MSFT_PhysicalDisk : MSFT_StorageObject { [read: ToSubClass, Description("DeviceId is an address or other identifier that uniquely names the physical disk."): ToSubClass Amended] string DeviceId; [read: ToSubClass, Description("FriendlyName is a user-friendly name of the physical disk. The initial value should be set by the storage provider or subsystem, and can be modified by the user at any point in the object's lifetime."): ToSubClass Amended] string FriendlyName; [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, Description("A user settable description of the physical disk"): ToSubClass Amended] string Description; [read: ToSubClass, Required: DisableOverride ToSubClass, Description("This field represents the name of the company responsible for the hardware backing the physical disk. This manufacturer information must match what is reported by the disk's SCSI inquiry data."): ToSubClass Amended] string Manufacturer; [read: ToSubClass, Required: DisableOverride ToSubClass, Description("This field represents the model number of the physical disk hardware. This information must match what is reported by the disk's SCSI inquiry data."): ToSubClass Amended] string Model; [read: ToSubClass, Required: DisableOverride ToSubClass, Description("This field is a string representation of the physical disk's serial number. This information must match what is reported by the disk's SCSI inquiry data."): ToSubClass Amended] string SerialNumber; [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("Denotes the operational status of the PhysicalDisk."): ToSubClass Amended, 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", "0xD0080xD009.."}: ToSubClass, Values{"Unknown", "Other", "OK", "Degraded", "Stressed", "Predictive Failure", "Error", "Non-Recoverable Error", "Starting", "Stopping", "Stopped", "In Service", "No Contact", "Lost Communication", "Aborted", "Dormant", "Supporting Entity in Error", "Completed", "Power Mode", "Relocating", "Microsoft Reserved", "Failed Media", "Split", "Stale Metadata", "IO Error", "Unrecognized Metadata", "Microsoft Reserved"}: ToSubClass Amended] uint16 OperationalStatus[]; [read: ToSubClass, Required: DisableOverride ToSubClass, ValueMap{"0", "1", "2", "5"}: ToSubClass, Values{"Healthy", "Warning", "Unhealthy", "Unknown"}: ToSubClass Amended] uint16 HealthStatus; [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, 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("This field is a free-form string indicating where the disk physically resides."): ToSubClass Amended] string PhysicalLocation; [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, 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", "..", "0x8000.."}: ToSubClass, Values{"Unknown", "Other", "In a Pool", "Not Healthy", "Removable Media", "In Use by Cluster", "Offline", "Insufficient Capacity", "Spare Disk", "Reserved by subsystem", "Microsoft Reserved", "Vendor Reserved"}: 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; [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); [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); }; [Association: DisableOverride ToSubClass, ClassVersion("1.0"): Amended, Abstract] class MSFT_PhysicalDiskToStorageReliabilityCounter { [key] MSFT_PhysicalDisk ref PhysicalDisk; [key] MSFT_StorageReliabilityCounter ref StorageReliabilityCounter; }; [Abstract, Description("ResiliencySetting is a detailed description of the resiliency capabilities offered by a storage pool. A storage pool can have one or more of these settings. It specifies a series of properties with a minimum, maximum, and default value. The minimum and maximum values may not reflect the current capabilities of the storage pool, but rather the ideal range of capabilities offered by the subsystem. The default values will be used when creating new virtual disks unless overridden."): ToSubClass Amended, ClassVersion("1.0"): Amended] class MSFT_ResiliencySetting : MSFT_StorageObject { [read: ToSubClass, Required: DisableOverride ToSubClass, Description("A system set, user-friendly, display-oriented string which describes the resiliency setting."): ToSubClass Amended] string Name; [read: ToSubClass, Description("A system set description of the capabilities of the resiliency setting, including (but not limited to) when a setting should be used, its strengths and drawbacks, performance information, and any other information that the vendor feels is helpful to the user. "): ToSubClass Amended] string Description; [read: ToSubClass, Description("This field reports the minimum number of complete copies of data that will be maintained by the storage pool."): ToSubClass Amended, MinValue("1"): ToSubClass, ModelCorrespondence{"MSFT_ResiliencySetting.NumberOfDataCopiesMax", "MSFT_ResiliencySetting.NumberOfDataCopiesDefault"}: ToSubClass] uint16 NumberOfDataCopiesMin; [read: ToSubClass, Description("This field reports the maximum number of complete copies of data that can be maintained by the storage pool."): ToSubClass Amended, MinValue("1"): ToSubClass, ModelCorrespondence{"MSFT_ResiliencySetting.NumberOfDataCopiesMin", "MSFT_ResiliencySetting.NumberOfDataCopiesDefault"}: ToSubClass] uint16 NumberOfDataCopiesMax; [read: ToSubClass, Description("This field is a user-settable preference for the number of complete data copies to maintain. Its value must be within the range defined by NumberofDataCopiesMin and NumberOfDataCopiesMax (inclusive). For new concrete pools, the default should be inherited from the corresponding primordial pool's capability. In the case of the primordial pool, the initial value for this field is left to the Storage Management Provider software."): ToSubClass Amended, MinValue("1"): ToSubClass, ModelCorrespondence{"MSFT_ResiliencySetting.NumberOfDataCopiesMin", "MSFT_ResiliencySetting.NumberOfDataCopiesMax"}: ToSubClass] uint16 NumberOfDataCopiesDefault; [read: ToSubClass, Description("This field reports the minimum number of tolerable physical disk failures that can occur before data loss would occur."): ToSubClass Amended, ModelCorrespondence{"MSFT_ResiliencySetting.PhysicalDiskRedundancyMax", "MSFT_ResiliencySetting.PhysicalDiskRedundancyDefault"}: ToSubClass] uint16 PhysicalDiskRedundancyMin; [read: ToSubClass, Description("This field reports the maximum number of tolerable physical disk failures that could occur before data loss would occur."): ToSubClass Amended, ModelCorrespondence{"MSFT_ResiliencySetting.PhysicalDiskRedundancyMin", "MSFT_ResiliencySetting.PhysicalDiskRedundancyDefault"}: ToSubClass] uint16 PhysicalDiskRedundancyMax; [read: ToSubClass, Description("This field is a user-settable preference for how many physical disk failures a virtual disk should be able to withstand before data loss occurs."): ToSubClass Amended, ModelCorrespondence{"MSFT_ResiliencySetting.PhysicalDiskRedundancyMin", "MSFT_ResiliencySetting.PhysicalDiskRedundancyMax"}: ToSubClass] uint16 PhysicalDiskRedundancyDefault; [read: ToSubClass, Description("This field describes the minimum number of underlying physical disks across which data can be striped in the common striping-based resiliency settings."): ToSubClass Amended, MinValue("1"): ToSubClass, ModelCorrespondence{"MSFT_ResiliencySetting.NumberOfColumnsMax", "MSFT_ResiliencySetting.NumberOfColumnsDefault"}: ToSubClass] uint16 NumberOfColumnsMin; [read: ToSubClass, Description("This field describes the maximum number of underlying physical disks across which data can be striped in the common striping-based resiliency settings."): ToSubClass Amended, MinValue("1"): ToSubClass, ModelCorrespondence{"MSFT_ResiliencySetting.NumberOfColumnsMin", "MSFT_ResiliencySetting.NumberOfColumnsDefault"}: ToSubClass] uint16 NumberOfColumnsMax; [read: ToSubClass, Description("This field is a user-settable preference for the number of underlying physical disks across which data should be striped."): ToSubClass Amended, MinValue("1"): ToSubClass, ModelCorrespondence{"MSFT_ResiliencySetting.NumberOfColumnsMin", "MSFT_ResiliencySetting.NumberOfColumnsMax"}: ToSubClass] uint16 NumberOfColumnsDefault; [read: ToSubClass, Description("This field describes the minimum number of bytes that can form a strip in common striping-based resiliency settings. The strip is defined as the size of the portion of a stripe that lies on one physical disk."): ToSubClass Amended, Units("Bytes"): ToSubClass Amended, MinValue("1"): ToSubClass, ModelCorrespondence{"MSFT_ResiliencySetting.InterleaveMax", "MSFT_ResiliencySetting.InterleaveDefault"}: ToSubClass] uint64 InterleaveMin; [read: ToSubClass, Description("This field describes the maximum number of bytes that can form a strip in common striping-based resiliency settings. The strip is defined as the size of the portion of a stripe that lies on one physical disk."): ToSubClass Amended, Units("Bytes"): ToSubClass Amended, MinValue("1"): ToSubClass, ModelCorrespondence{"MSFT_ResiliencySetting.InterleaveMin", "MSFT_ResiliencySetting.InterleaveDefault"}: ToSubClass] uint64 InterleaveMax; [read: ToSubClass, Description("This field describes the desired number of bytes that will form a strip in common striping-based resiliency settings. The strip is defined as the size of the portion of a stripe that lies on one physical disk. Thus, Interleave * NumberOfColumns will yield the total size of one stripe."): ToSubClass Amended, Units("Bytes"): ToSubClass Amended, MinValue("1"): ToSubClass, ModelCorrespondence{"MSFT_ResiliencySetting.InterleaveMin", "MSFT_ResiliencySetting.InterleaveMax"}: ToSubClass] uint64 InterleaveDefault; [read: ToSubClass, 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; [read: ToSubClass] boolean RequestNoSinglePointOfFailure; [Description("This method allows a user to modify the default values for this resiliency setting.The updated values will take effect only for subsequent virtual disk creations and are not retroactively applied."): ToSubClass Amended, ValueMap{"0", "1", "2", "3", "4", "5", "40001", "40002", "46000", "46001", "48000", "48006", "48007", "49002", "49003", "49005", "49006"}: ToSubClass, Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Access denied", "There are not enough resources to complete the operation.", "Cannot connect to the storage provider.", "The storage provider cannot connect to the storage subsystem.", "This operation is not supported on primordial storage pools.", "The storage pool could not complete the operation because its health or operational status does not permit it.", "The storage pool could not complete the operation because its configuration is read-only.", "The value for PhysicalDiskRedundancy is outside of the supported range of values.", "The value for NumberOfDataCopies is outside of the supported range of values.", "The value for Interleave is outside of the supported range of values.", "The value for NumberOfColumns is outside of the supported range of values."}: ToSubClass Amended] uint32 SetDefaults([In, Description("The desired number of full data copies to maintain. This value must be between NumberofDataCopiesMin and NumberofDataCopiesMax."): ToSubClass Amended] uint16 NumberOfDataCopiesDefault, [In, Description("The desired level of physical disk failure tolerance. This value must be between PhyscialDiskRedundancyMin and PhysicalDiskRedundancyMax."): ToSubClass Amended] uint16 PhysicalDiskRedundancyDefault, [In, Description("Specifies the desired number of physical disks to stripe data across. This value must be between NumberOfColumnsMin and NumberofColumnsMax."): ToSubClass Amended] uint16 NumberOfColumnsDefault, [In, Description("If TRUE, this field instructs the storage provider (or subsystem) to automatically pick what it determines to be the best number of columns for this resiliency setting. If this field is TRUE, then the NumberOfColumnsDefault parameter must be NULL."): ToSubClass Amended] boolean AutoNumberOfColumns, [In, Description("Specifies the desired size of a data strip on a single physical disk in a striping based resiliency setting. This value must be between InterleaveMin and InterleaveMax. "): ToSubClass Amended] uint64 InterleaveDefault, [Out, Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information."): ToSubClass Amended, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus); }; [Indication: DisableOverride ToSubClass, Exception: DisableOverride ToSubClass, UMLPackagePath("CIM::Interop"): ToSubClass, Description("Soft error can be returned by intrinsic methods (EnumerateInstances, GetInstance, etc.) to help distinguish between a query with no results (no error) and a query that failed for a specific reason."): ToSubClass Amended, ClassVersion("1.0"): Amended] class MSFT_SoftError : CIM_Error { [Description("This error is of the type 'Software Error'."): ToSubClass Amended, ValueMap{"4"}: ToSubClass, Values{"Software Error"}: ToSubClass Amended, ModelCorrespondence{"CIM_Error.OtherErrorType"}: ToSubClass] uint16 ErrorType = 4; [Description("Corresponds to the SMP's StorageProvider.Name field."): 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("This field is the message displayed to the user. %1 should be replaced with the corresponding storage provider's Name field. %2 should be replaced with the error message."): ToSubClass Amended, ModelCorrespondence{"CIM_Error.MessageID", "CIM_Error.MessageArguments"}: ToSubClass] string Message = "%1: %2"; [Description("This error is informative only."): ToSubClass Amended, ValueMap{"2"}: ToSubClass, Values{"Information"}: ToSubClass Amended] uint16 PerceivedSeverity = 2; [Description("This field should contain the CIM Object Path to the SMP storage provider object."): ToSubClass Amended, ModelCorrespondence{"CIM_Error.ErrorSourceFormat"}: ToSubClass] string ErrorSource; [Description("ErrorSourceFormat should be the CIM Object Path."): ToSubClass Amended, ValueMap{"2"}: ToSubClass, Values{"CIMObjectPath"}: ToSubClass Amended, ModelCorrespondence{"CIM_Error.ErrorSource", "CIM_Error.OtherErrorSourceFormat"}: ToSubClass] uint16 ErrorSourceFormat = 2; }; [Indication: DisableOverride ToSubClass, Abstract, ClassVersion("1.0"): Amended, Description("Base storage event indication"): ToSubClass Amended] class MSFT_StorageEvent { [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; [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; }; [Indication: DisableOverride ToSubClass, Description("Storage alert event"): ToSubClass Amended, ClassVersion("1.0"): Amended, Abstract] class MSFT_StorageAlertEvent : MSFT_StorageEvent { [read: ToSubClass, Required: DisableOverride ToSubClass, Description("This field describes the type of alert being received."): ToSubClass Amended, ValueMap{"1", "..", "0x8000.."}: ToSubClass, Values{"Thin provisioning threshold reached", "Microsoft Reserved", "Vendor Specific"}: ToSubClass Amended] uint16 AlertType; }; [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 { }; [Abstract, Description("Represents a manageable physical disk enclosure."): ToSubClass Amended, ClassVersion("1.0"): Amended] class MSFT_StorageEnclosure : MSFT_StorageObject { [Description("DeviceId is an address or other identifier that uniquely names the enclosure. For example, DeviceId is the enclosure GUID in Storage Spaces provider."): ToSubClass Amended] string DeviceId; [Description("A user-friendly string representing the name of the enclosure."): ToSubClass Amended] string FriendlyName; [Description("This field represents the manufacturer of the enclosure."): ToSubClass Amended] string Manufacturer; [Description("This field represents the model number of the enclosure."): ToSubClass Amended] string Model; [Description("This field is a string representation of the enclosure's serial number."): ToSubClass Amended] string SerialNumber; [Description("This field is a string representation of the enclosure's firmware version."): ToSubClass Amended] string FirmwareVersion; [Description("Denotes the current health status of the enclosure."): ToSubClass Amended, ValueMap{"0", "1", "2", "5"}: ToSubClass, Values{"Healthy", "Warning", "Unhealthy", "Unknown"}: ToSubClass Amended] uint16 HealthStatus; [Description("Number of slots hosted within the enclosure"): ToSubClass Amended] uint32 NumberOfSlots; [Description("An array containing the operational status of each power supply of the enclosure. \n0 - 'Unknown' \n2 - 'OK': The element is present and working with no issues detected. \n3 - 'Degraded': The element detected one or more non-critical issues. \n6 - 'Error': The element detected one or more critical issues. \n7 - 'Non-Recoverable Error': The element detected one or more non-recoverable issues. \n0xD009 - 'Not Installed': The element is not present. \n0xD00A - 'Not Available': The element is present but has problems. \n0xD00B - 'No Access Allowed': No access is allowed to the element. \n0xD00C - 'Not Reported' "): ToSubClass Amended, ValueMap{"0", "2", "3", "6", "7", "0xD009", "0xD00A", "0xD00B", "0xD00C"}: ToSubClass, Values{"Unknown", "OK", "Degraded", "Error", "Non-Recoverable Error", "Not Installed", "Not Available", "No Access Allowed", "Not Reported"}: ToSubClass Amended] uint16 PowerSupplyOperationalStatus[]; [Description("An array containing the operational status of each fan of the enclosure. \n0 - 'Unknown' \n2 - 'OK': The element is present and working with no issues detected. \n3 - 'Degraded': The element detected one or more non-critical issues. \n6 - 'Error': The element detected one or more critical issues. \n7 - 'Non-Recoverable Error': The element detected one or more non-recoverable issues. \n0xD009 - 'Not Installed': The element is not present. \n0xD00A - 'Not Available': The element is present but has problems. \n0xD00B - 'No Access Allowed': No access is allowed to the element. \n0xD00C - 'Not Reported' "): ToSubClass Amended, ValueMap{"0", "2", "3", "6", "7", "0xD009", "0xD00A", "0xD00B", "0xD00C"}: ToSubClass, Values{"Unknown", "OK", "Degraded", "Error", "Non-Recoverable Error", "Not Installed", "Not Available", "No Access Allowed", "Not Reported"}: ToSubClass Amended] uint16 FanOperationalStatus[]; [Description("An array containing the operational status of each temperature sensor of the enclosure. \n0 - 'Unknown' \n2 - 'OK': The element is present and working with no issues detected. \n3 - 'Degraded': The element detected one or more non-critical issues. \n6 - 'Error': The element detected one or more critical issues. \n7 - 'Non-Recoverable Error': The element detected one or more non-recoverable issues. \n0xD009 - 'Not Installed': The element is not present. \n0xD00A - 'Not Available': The element is present but has problems. \n0xD00B - 'No Access Allowed': No access is allowed to the element. \n0xD00C - 'Not Reported' "): ToSubClass Amended, ValueMap{"0", "2", "3", "6", "7", "0xD009", "0xD00A", "0xD00B", "0xD00C"}: ToSubClass, Values{"Unknown", "OK", "Degraded", "Error", "Non-Recoverable Error", "Not Installed", "Not Available", "No Access Allowed", "Not Reported"}: ToSubClass Amended] uint16 TemperatureSensorOperationalStatus[]; [Description("An array containing the operational status of each voltage sensor of the enclosure. \n0 - 'Unknown' \n2 - 'OK': The element is present and working with no issues detected. \n3 - 'Degraded': The element detected one or more non-critical issues. \n6 - 'Error': The element detected one or more critical issues. \n7 - 'Non-Recoverable Error': The element detected one or more non-recoverable issues. \n0xD009 - 'Not Installed': The element is not present. \n0xD00A - 'Not Available': The element is present but has problems. \n0xD00B - 'No Access Allowed': No access is allowed to the element. \n0xD00C - 'Not Reported' "): ToSubClass Amended, ValueMap{"0", "2", "3", "6", "7", "0xD009", "0xD00A", "0xD00B", "0xD00C"}: ToSubClass, Values{"Unknown", "OK", "Degraded", "Error", "Non-Recoverable Error", "Not Installed", "Not Available", "No Access Allowed", "Not Reported"}: ToSubClass Amended] uint16 VoltageSensorOperationalStatus[]; [Description("An array containing the operational status of each current sensor of the enclosure. \n0 - 'Unknown' \n2 - 'OK': The element is present and working with no issues detected. \n3 - 'Degraded': The element detected one or more non-critical issues. \n6 - 'Error': The element detected one or more critical issues. \n7 - 'Non-Recoverable Error': The element detected one or more non-recoverable issues. \n0xD009 - 'Not Installed': The element is not present. \n0xD00A - 'Not Available': The element is present but has problems. \n0xD00B - 'No Access Allowed': No access is allowed to the element. \n0xD00C - 'Not Reported' "): ToSubClass Amended, ValueMap{"0", "2", "3", "6", "7", "0xD009", "0xD00A", "0xD00B", "0xD00C"}: ToSubClass, Values{"Unknown", "OK", "Degraded", "Error", "Non-Recoverable Error", "Not Installed", "Not Available", "No Access Allowed", "Not Reported"}: ToSubClass Amended] uint16 CurrentSensorOperationalStatus[]; [Description("An array containing the operational status of each controller of the enclosure. \n0 - 'Unknown' \n2 - 'OK': The element is present and working with no issues detected. \n3 - 'Degraded': The element detected one or more non-critical issues. \n6 - 'Error': The element detected one or more critical issues. \n7 - 'Non-Recoverable Error': The element detected one or more non-recoverable issues. \n0xD009 - 'Not Installed': The element is not present. \n0xD00A - 'Not Available': The element is present but has problems. \n0xD00B - 'No Access Allowed': No access is allowed to the element. \n0xD00C - 'Not Reported' "): ToSubClass Amended, ValueMap{"0", "2", "3", "6", "7", "0xD009", "0xD00A", "0xD00B", "0xD00C"}: ToSubClass, Values{"Unknown", "OK", "Degraded", "Error", "Non-Recoverable Error", "Not Installed", "Not Available", "No Access Allowed", "Not Reported"}: ToSubClass Amended] uint16 IOControllerOperationalStatus[]; [Description("This method allows a user to perform certain identification tasks on the enclosure and its elements."): ToSubClass Amended, ValueMap{"0", "1", "2", "3", "4", "5", "40001", "40002", "46000", "46001", "55000", "55001"}: ToSubClass, Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Access denied", "There are not enough resources to complete the operation.", "Cannot connect to the storage provider.", "The storage provider cannot connect to the storage subsystem.", "One or more slot numbers provided are not valid.", "The enclosure does not support identification of the enclosure element."}: ToSubClass Amended] uint32 IdentifyElement([In, Description("If set to TRUE, this instructs the enclosure to enable its identification LED on the specified element. The identification LED should remain enabled until a second call to IdentifyElement on the same element is made with this parameter specified as FALSE."): ToSubClass Amended] boolean Enable, [In, Description("The numbers of the slots on which to enable or disable identification."): ToSubClass Amended] uint32 SlotNumbers[], [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 vendor specific data from an enclosure."): ToSubClass Amended, ValueMap{"0", "1", "2", "3", "4", "5", "40001", "40002", "46000", "46001", "55002"}: ToSubClass, Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Access denied", "There are not enough resources to complete the operation.", "Cannot connect to the storage provider.", "The storage provider cannot connect to the storage subsystem.", "The given page number has not been implemented."}: ToSubClass Amended] uint32 GetVendorData([In, Required: DisableOverride ToSubClass, Description("Denotes the page number for which vendor data is requested."): ToSubClass Amended] uint16 PageNumber, [Out, Description("The vendor specific data (page 04h for example) from an enclosure."): ToSubClass Amended] string VendorData, [Out, Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information."): ToSubClass Amended, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus); }; [Association: DisableOverride ToSubClass, ClassVersion("1.0"): Amended, Abstract, Description("Association between StorageEnclosure and PhysicalDisk"): ToSubClass Amended] class MSFT_StorageEnclosureToPhysicalDisk { [key] MSFT_StorageEnclosure ref StorageEnclosure; [key] MSFT_PhysicalDisk ref PhysicalDisk; }; [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("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); [Description("This method retrieves the extended status information for an unsuccessful job."): ToSubClass Amended] uint32 GetExtendedStatus([Out, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus); }; [Association: DisableOverride ToSubClass, ClassVersion("1.0"): Amended, Abstract, Description("Association between a StorageJob and objects affected by the job's operation. Instances of this association should only exist once the storage job has been completed, and should remain for a period of time (recommended 24-hours) after."): ToSubClass Amended] class MSFT_StorageJobToAffectedStorageObject { [key] MSFT_StorageJob ref StorageJob; [key] MSFT_StorageObject ref AffectedStorageObject; }; [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 storage node in a cluster."): ToSubClass Amended, ClassVersion("1.0"): Amended] class MSFT_StorageNode : MSFT_StorageObject { [read: ToSubClass, Required: DisableOverride ToSubClass, Description("Name is a human-readable string used to identify a storage node."): 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 node. 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("Indicates the current status of the node."): ToSubClass Amended, ValueMap{"0", "2", "6", "8", "10"}: ToSubClass, Values{"Unknown", "Up", "Down", "Joining", "Paused"}: ToSubClass Amended] uint16 OperationalStatus; }; [Association: DisableOverride ToSubClass, ClassVersion("1.0"): Amended, Description("Association between StorageNode and PhysicalDisk."): ToSubClass Amended] class MSFT_StorageNodeToPhysicalDisk { [key] MSFT_StorageNode ref StorageNode; [key] MSFT_PhysicalDisk ref PhysicalDisk; }; [Association: DisableOverride ToSubClass, ClassVersion("1.0"): Amended, Abstract, Description("Association between StorageNode and StorageEnclosure"): ToSubClass Amended] class MSFT_StorageNodeToStorageEnclosure { [key] MSFT_StorageNode ref StorageNode; [key] MSFT_StorageEnclosure ref StorageEnclosure; }; [Association: DisableOverride ToSubClass, ClassVersion("1.0"): Amended, Description("Association between StorageNode and StoragePool."): ToSubClass Amended] class MSFT_StorageNodeToStoragePool { [key] MSFT_StorageNode ref StorageNode; [key] MSFT_StoragePool ref StoragePool; }; [Association: DisableOverride ToSubClass, ClassVersion("1.0"): Amended, Description("Association between StorageNode and VirtualDisk."): ToSubClass Amended] class MSFT_StorageNodeToVirtualDisk { [key] MSFT_StorageNode ref StorageNode; [key] MSFT_VirtualDisk ref VirtualDisk; }; [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, 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("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 minimum OS version that supports this storage pool"): ToSubClass Amended, ValueMap{"1", "2", "3"}: ToSubClass, Values{"Windows Server 2012", "Windows Server 2012 R2 Preview", "Windows Server 2012 R2"}: 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); [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", "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", "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, [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); [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); [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); [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); [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"}: 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."}: 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); [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); [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); [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); }; [Association: DisableOverride ToSubClass, ClassVersion("1.0"): Amended, Abstract, Description("Association between StoragePool and PhysicalDisk. Primordial storage pools should retain their association to all physical disks that originated from that pool. This means that if a physical disk has been added to a concrete pool, the disk should have an association with both its concrete and primordial pools."): ToSubClass Amended] class MSFT_StoragePoolToPhysicalDisk { [key] MSFT_StoragePool ref StoragePool; [key] MSFT_PhysicalDisk ref PhysicalDisk; }; [Association: DisableOverride ToSubClass, ClassVersion("1.0"): Amended, Abstract, Description("Association between StoragePool and ResiliencySetting"): ToSubClass Amended] class MSFT_StoragePoolToResiliencySetting { [key] MSFT_StoragePool ref StoragePool; [key] MSFT_ResiliencySetting ref ResiliencySetting; }; [Association: DisableOverride ToSubClass, ClassVersion("1.0"): Amended, Abstract] class MSFT_StoragePoolToStorageTier { [key] MSFT_StoragePool ref StoragePool; [key] MSFT_StorageTier ref StorageTier; }; [Association: DisableOverride ToSubClass, ClassVersion("1.0"): Amended, Abstract, Description("Association between StoragePool and VirtualDisk. This association should only exist for concrete pools."): ToSubClass Amended] class MSFT_StoragePoolToVirtualDisk { [key] MSFT_StoragePool ref StoragePool; [key] MSFT_VirtualDisk ref VirtualDisk; }; [Description("This class is a representation of a particular Storage Management Provider (SMP) software package which is used to manage a storage subsystem."): ToSubClass Amended, ClassVersion("1.0"): Amended] class MSFT_StorageProvider : MSFT_StorageObject { [read: ToSubClass, Required: DisableOverride ToSubClass, Description("Denotes whether the provider is a stand-alone SMP provider or an SMIS provider that uses the SMIS proxy SMP."): ToSubClass Amended, ValueMap{"1"}: ToSubClass, Values{"SMP"}: ToSubClass Amended] uint16 Type = 1; [read: ToSubClass, Required: DisableOverride ToSubClass, Description("A user-friendly name of the storage provider."): ToSubClass Amended] string Name; [read: ToSubClass, Required: DisableOverride ToSubClass, Description("A string indicating the manufacturer of the SMP software."): ToSubClass Amended] string Manufacturer; [read: ToSubClass, Required: DisableOverride ToSubClass, Description("A version string used by the SMP manufacturer to differentiate between software versions."): ToSubClass Amended] string Version; [read: ToSubClass, ValueMap{"0", "2", "3"}: ToSubClass, Values{"Unknown", "Disabled", "Manual-Discovery"}: ToSubClass Amended] uint16 RemoteSubsystemCacheMode; [read: ToSubClass, Description("Denotes whether this provider supports remote registration and management."): ToSubClass Amended] boolean SupportsSubsystemRegistration; [read: ToSubClass, Description("Denotes the caching modes this provider supports. The modes are 'Disabled' and 'Manual-Discovery'."): ToSubClass Amended, ValueMap{"0", "2", "3"}: ToSubClass, Values{"Unknown", "Disabled", "Manual-Discovery"}: ToSubClass Amended] uint16 SupportedRemoteSubsystemCacheModes[]; [Required: DisableOverride ToSubClass, Description("This method is used when a user wants to explicitly discover or re-enumerate objects owned by the storage provider. A call to this method could result in a full or partial cache invalidation and over-the-wire calls to the storage subsystem(s) in order to discover new or updated objects. As this is a time consuming task, it should be used sparingly by the user.\nThe scope of the discovery operation is controlled by the DiscoveryLevel and RootObject parameters. DiscoveryLevel controls the depth of the object discovery. RootObject defines the starting point from which discovery will happen."): ToSubClass Amended, ValueMap{"0", "1", "2", "3", "4", "5", "4096", "40001", "40002", "46000", "46001", "46002", "46003"}: ToSubClass, Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Method Parameters Checked - Job Started", "Access denied", "There are not enough resources to complete the operation.", "Cannot connect to the storage provider.", "The storage provider cannot connect to the storage subsystem.", "The storage provider does not support a required profile.", "The storage provider does not support a required association."}: ToSubClass Amended] uint32 Discover([In, Required: DisableOverride ToSubClass, Description("This field denotes the level (or depth) of discovery that should be performed. This parameter can only be specified if the root object is a storage provider, storage subsystem, or NULL. When specified, the storage provider will discover objects starting from Level 0 and continuing until the specified level is reached. Associations between objects (within the discovered levels) will also be discovered. The discovery levels are defined as follows: \n0 - 'Level 0': The storage provider and storage subsystem objects will be discovered. \n1 - 'Level 1': Storage pools, resiliency settings, target ports, target portals, and initiator ids will be discovered.\n2 - 'Level 2': Virtual disks and masking sets will be discovered.\n3 - 'Level 3': Physical disks will be discovered."): ToSubClass Amended, ValueMap{"0", "1", "2", "3"}: ToSubClass, Values{"Level 0", "Level 1", "Level 2", "Level 3"}: ToSubClass Amended] uint16 DiscoveryLevel, [In, Description("If this parameter is set, discovery will begin from this object. When DiscoveryLevel is NULL, well-defined actions will be taken depending on the type of object specified by RootObject: \nStorage subsystem: All associated objects will be discovered. \nStorage pool: The pool, along with any associated resiliency settings, virtual disks, and physical disks will be discovered. \nMasking set: The masking set, along with any associated target ports, initiator ids, and virtual disks will be discovered. \nFor all other objects: Only that object will be discovered / refreshed."): ToSubClass Amended] MSFT_StorageObject ref RootObject, [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 registers a subsystem to be managed by this provider. Note that the subsystem must be compatible with the provider software."): ToSubClass Amended, ValueMap{"0", "1", "2", "3", "4", "5", "6", "40001", "40002", "46000", "46001", "46004", "46006"}: ToSubClass, Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "In Use", "Access denied", "There are not enough resources to complete the operation.", "Cannot connect to the storage provider.", "The storage provider cannot connect to the storage subsystem.", "Cannot register/unregister the storage subsystem on local host.", "This subsystem is already registered."}: ToSubClass Amended] uint32 RegisterSubsystem([In, Required: DisableOverride ToSubClass] string ComputerName, [In] string Credential, [Out, EmbeddedInstance("MSFT_StorageSubSystem"): ToSubClass] MSFT_StorageSubSystem RegisteredSubsystem, [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 unregisters a subsystem. The provider will no longer manage this subsystem."): ToSubClass Amended, ValueMap{"0", "1", "2", "3", "4", "5", "40001", "40002", "46000", "46001", "46004", "46005", "46007"}: ToSubClass, Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Access denied", "There are not enough resources to complete the operation.", "Cannot connect to the storage provider.", "The storage provider cannot connect to the storage subsystem.", "Cannot register/unregister the storage subsystem on local host.", "The storage subsystem is not registered.", "This subsystem is already registered with another user's credentials. Use the -Force flag to remove the existing registration and add a new one anyway."}: ToSubClass Amended] uint32 UnregisterSubsystem([In, EmbeddedInstance("MSFT_StorageSubSystem"): ToSubClass] MSFT_StorageSubSystem Subsystem, [In] string StorageSubSystemUniqueId, [In] boolean Force, [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 sets the attributes of the provider."): 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, Description("If set to 3, caching for all the registered remote subsystem is enabled. If set to 2, caching for all the registered remote subsystem is disabled. This API only effects the remote subsystem registered and local Subsystem requests are not cached and reported live always."): ToSubClass Amended, ValueMap{"2", "3"}: ToSubClass, Values{"Disabled", "Manual-Discovery"}: ToSubClass Amended] uint16 RemoteSubsystemCacheMode, [Out, Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information."): ToSubClass Amended, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus); }; [Association: DisableOverride ToSubClass, ClassVersion("1.0"): Amended, Abstract, Description("Association between StorageProvider and StorageSubSystem"): ToSubClass Amended] class MSFT_StorageProviderToStorageSubSystem { [key] MSFT_StorageProvider ref StorageProvider; [key] MSFT_StorageSubSystem ref StorageSubSystem; }; [Abstract, Description("StorageReliabilityCounter provides reliability statistics or counters reported by a storage device. This information is dynamic and should be obtained from the storage device whenever needed."): ToSubClass Amended, ClassVersion("1.0"): Amended] class MSFT_StorageReliabilityCounter : MSFT_StorageObject { [read: ToSubClass, Description("DeviceId identifies the associated storage device. When associated with an MSFT_PhysicalDisk, it will be the same as its DeviceId field. When associated with an MSFT_Disk, it will be the same as its Number field."): ToSubClass Amended] string DeviceId; [read: ToSubClass, Description("The current temperature of the storage device in Celsius."): ToSubClass Amended] uint8 Temperature; [read: ToSubClass, Description("The maximum temperature in Celsius at which the storage device is capable of normal operation."): ToSubClass Amended] uint8 TemperatureMax; [read: ToSubClass, Description("Total read errors encountered by the storage device."): ToSubClass Amended] uint64 ReadErrorsTotal; [read: ToSubClass, Description("Read errors corrected by the storage device."): ToSubClass Amended] uint64 ReadErrorsCorrected; [read: ToSubClass, Description("Read errors not corrected by the storage device."): ToSubClass Amended] uint64 ReadErrorsUncorrected; [read: ToSubClass, Description("Total write errors encountered by the storage device."): ToSubClass Amended] uint64 WriteErrorsTotal; [read: ToSubClass, Description("Write errors corrected by the storage device."): ToSubClass Amended] uint64 WriteErrorsCorrected; [read: ToSubClass, Description("Write errors not corrected by the storage device."): ToSubClass Amended] uint64 WriteErrorsUncorrected; [read: ToSubClass, Description("Year and week of storage device manufacture."): ToSubClass Amended] string ManufactureDate; [read: ToSubClass, Description("Number of start-stop cycles performed by the storage device."): ToSubClass Amended] uint32 StartStopCycleCount; [read: ToSubClass, Description("Maximum number of start-stop cycles within which the storage device is capable of normal operation."): ToSubClass Amended] uint32 StartStopCycleCountMax; [read: ToSubClass, Description("Number of load-unload cycles performed by the storage device."): ToSubClass Amended] uint32 LoadUnloadCycleCount; [read: ToSubClass, Description("Maximum number of load-unload cycles within which the storage device is capable of normal operation."): ToSubClass Amended] uint32 LoadUnloadCycleCountMax; [read: ToSubClass, Description("Storage device wear indicator, in percentage. At 100 percent, the estimated wear limit will have been reached."): ToSubClass Amended] uint8 Wear; [read: ToSubClass, Description("Length of time, in hours, the storage device has been powered on since manufacture."): ToSubClass Amended] uint32 PowerOnHours; [read: ToSubClass] uint64 ReadLatencyMax; [read: ToSubClass] uint64 WriteLatencyMax; [read: ToSubClass] uint64 FlushLatencyMax; }; [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, 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, 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, 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[]; [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); [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); [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 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); }; [Association: DisableOverride ToSubClass, ClassVersion("1.0"): Amended, Abstract, Description("Association between StorageSubSystem and InitiatorId"): ToSubClass Amended] class MSFT_StorageSubSystemToInitiatorId { [key] MSFT_StorageSubSystem ref StorageSubSystem; [key] MSFT_InitiatorId ref InitiatorId; }; [Association: DisableOverride ToSubClass, ClassVersion("1.0"): Amended, Abstract, Description("Association between StorageSubSystem and MaskingSet"): ToSubClass Amended] class MSFT_StorageSubSystemToMaskingSet { [key] MSFT_StorageSubSystem ref StorageSubSystem; [key] MSFT_MaskingSet ref MaskingSet; }; [Association: DisableOverride ToSubClass, ClassVersion("1.0"): Amended, Abstract, Description("Association between StorageSubSystem and PhysicalDisk. This association should include all physical disks that the subsystem is aware of."): ToSubClass Amended] class MSFT_StorageSubSystemToPhysicalDisk { [key] MSFT_StorageSubSystem ref StorageSubSystem; [key] MSFT_PhysicalDisk ref PhysicalDisk; }; [Association: DisableOverride ToSubClass, ClassVersion("1.0"): Amended, Abstract, Description("Association between StorageSubSystem and StorageEnclosure"): ToSubClass Amended] class MSFT_StorageSubSystemToStorageEnclosure { [key] MSFT_StorageSubSystem ref StorageSubSystem; [key] MSFT_StorageEnclosure ref StorageEnclosure; }; [Association: DisableOverride ToSubClass, ClassVersion("1.0"): Amended, Description("Association between StorageSubSystem and StorageNode"): ToSubClass Amended] class MSFT_StorageSubSystemToStorageNode { [key] MSFT_StorageSubSystem ref StorageSubSystem; [key] MSFT_StorageNode ref StorageNode; }; [Association: DisableOverride ToSubClass, ClassVersion("1.0"): Amended, Abstract, Description("Association between StorageSubSystem and StoragePool"): ToSubClass Amended] class MSFT_StorageSubSystemToStoragePool { [key] MSFT_StorageSubSystem ref StorageSubSystem; [key] MSFT_StoragePool ref StoragePool; }; [Association: DisableOverride ToSubClass, ClassVersion("1.0"): Amended, Abstract, Description("Association between StorageSubSystem and VirtualDisk"): ToSubClass Amended] class MSFT_StorageSubSystemToVirtualDisk { [key] MSFT_StorageSubSystem ref StorageSubSystem; [key] MSFT_VirtualDisk ref VirtualDisk; }; [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; [Description("Media type of this storage tier"): ToSubClass Amended, ValueMap{"0", "3", "4"}: ToSubClass, Values{"Unspecified", "HDD", "SSD"}: ToSubClass Amended] uint16 MediaType; [Description("Size of the tier on the virtual disk. This property is available only when the storage tier is part of a virtual disk. The property is unspecified for pool-level storage tiers."): ToSubClass Amended] uint64 Size; [Description("A user settable description of the storage tier"): ToSubClass Amended] string Description; [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] 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); [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); }; [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 name of the resiliency setting used to create this virtual disk."): ToSubClass Amended, ModelCorrespondence{"MSFT_ResiliencySetting.Name"}: ToSubClass] string ResiliencySettingName; [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, 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("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, 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 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, 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] 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, 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] 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"}: ToSubClass, Values{"Unknown", "None", "By Policy", "Majority Disks Unhealthy", "Incomplete"}: ToSubClass Amended] uint16 DetachedReason; [Description("Size of the write cache for the virtual disk"): ToSubClass Amended] uint64 WriteCacheSize; [Description("This method deletes the virtual disk. After this method is called, the space used by the virtual disk will be reclaimed and the user will be unable to reverse the delete operation."): 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); [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); [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); }; [Association: DisableOverride ToSubClass, ClassVersion("1.0"): Amended, Abstract, Description("Association between VirtualDisk and PhysicalDisk. A virtual disk and a physical disk are associated when the virtual disk has data residing on the physical disk."): ToSubClass Amended] class MSFT_VirtualDiskToPhysicalDisk { [key] MSFT_VirtualDisk ref VirtualDisk; [key] MSFT_PhysicalDisk ref PhysicalDisk; }; [Association: DisableOverride ToSubClass, ClassVersion("1.0"): Amended, Abstract] class MSFT_VirtualDiskToStorageTier { [key] MSFT_VirtualDisk ref VirtualDisk; [key] MSFT_StorageTier ref StorageTier; }; [ClassVersion("1.0"): Amended, Description("Represents a volume on the system."): ToSubClass Amended] class MSFT_Volume { [key, read: ToSubClass, Description("ObjectId is a mandatory property that is used to opaquely and uniquely identify an instance of a class within the scope of the host computer system."): ToSubClass Amended] string ObjectId; [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, Description("Denotes the health of the volume."): ToSubClass Amended, ValueMap{"0", "1", "2", "3"}: ToSubClass, Values{"Healthy", "Scan Needed", "Spot Fix Needed", "Full Repair Needed"}: ToSubClass Amended] uint16 HealthStatus; [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("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; }; [dynamic: ToInstance, provider("mispace"): ToInstance, Description("This object represents the storage subsystem's view of an initiator port. This is used in conjunction with target port to establish which initiator port is allowed to access to the subsystem's virtual disks."): ToSubClass Amended] class SPACES_InitiatorId : MSFT_InitiatorId { }; [Association: DisableOverride ToSubClass, dynamic: ToInstance, provider("mispace"): ToInstance, Description("Association between InitiatorId and VirtualDisk"): ToSubClass Amended] class SPACES_InitiatorIdToVirtualDisk : MSFT_InitiatorIdToVirtualDisk { }; [dynamic: ToInstance, provider("mispace"): ToInstance, 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] class SPACES_MaskingSet : MSFT_MaskingSet { }; [Association: DisableOverride ToSubClass, dynamic: ToInstance, provider("mispace"): ToInstance, Description("Association between MaskingSet and InitiatorId"): ToSubClass Amended] class SPACES_MaskingSetToInitiatorId : MSFT_MaskingSetToInitiatorId { }; [Association: DisableOverride ToSubClass, dynamic: ToInstance, provider("mispace"): ToInstance, Description("Association between MaskingSet and VirtualDisk"): ToSubClass Amended] class SPACES_MaskingSetToVirtualDisk : MSFT_MaskingSetToVirtualDisk { }; [dynamic: ToInstance, provider("mispace"): ToInstance, Description("A subsystem drive or spindle."): ToSubClass Amended] class SPACES_PhysicalDisk : MSFT_PhysicalDisk { [implemented, 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); [implemented, 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); [implemented, 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); [implemented, 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); [implemented, 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); [implemented, 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); }; [Association: DisableOverride ToSubClass, dynamic: ToInstance, provider("mispace"): ToInstance] class SPACES_PhysicalDiskToStorageReliabilityCounter : MSFT_PhysicalDiskToStorageReliabilityCounter { }; [dynamic: ToInstance, provider("mispace"): ToInstance, Description("ResiliencySetting is a detailed description of the resiliency capabilities offered by a storage pool. A storage pool can have one or more of these settings. It specifies a series of properties with a minimum, maximum, and default value. The minimum and maximum values may not reflect the current capabilities of the storage pool, but rather the ideal range of capabilities offered by the subsystem. The default values will be used when creating new virtual disks unless overridden."): ToSubClass Amended] class SPACES_ResiliencySetting : MSFT_ResiliencySetting { [implemented, Description("This method allows a user to modify the default values for this resiliency setting.The updated values will take effect only for subsequent virtual disk creations and are not retroactively applied."): ToSubClass Amended, ValueMap{"0", "1", "2", "3", "4", "5", "40001", "40002", "46000", "46001", "48000", "48006", "48007", "49002", "49003", "49005", "49006"}: ToSubClass, Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Access denied", "There are not enough resources to complete the operation.", "Cannot connect to the storage provider.", "The storage provider cannot connect to the storage subsystem.", "This operation is not supported on primordial storage pools.", "The storage pool could not complete the operation because its health or operational status does not permit it.", "The storage pool could not complete the operation because its configuration is read-only.", "The value for PhysicalDiskRedundancy is outside of the supported range of values.", "The value for NumberOfDataCopies is outside of the supported range of values.", "The value for Interleave is outside of the supported range of values.", "The value for NumberOfColumns is outside of the supported range of values."}: ToSubClass Amended] uint32 SetDefaults([In, Description("The desired number of full data copies to maintain. This value must be between NumberofDataCopiesMin and NumberofDataCopiesMax."): ToSubClass Amended] uint16 NumberOfDataCopiesDefault, [In, Description("The desired level of physical disk failure tolerance. This value must be between PhyscialDiskRedundancyMin and PhysicalDiskRedundancyMax."): ToSubClass Amended] uint16 PhysicalDiskRedundancyDefault, [In, Description("Specifies the desired number of physical disks to stripe data across. This value must be between NumberOfColumnsMin and NumberofColumnsMax."): ToSubClass Amended] uint16 NumberOfColumnsDefault, [In, Description("If TRUE, this field instructs the storage provider (or subsystem) to automatically pick what it determines to be the best number of columns for this resiliency setting. If this field is TRUE, then the NumberOfColumnsDefault parameter must be NULL."): ToSubClass Amended] boolean AutoNumberOfColumns, [In, Description("Specifies the desired size of a data strip on a single physical disk in a striping based resiliency setting. This value must be between InterleaveMin and InterleaveMax. "): ToSubClass Amended] uint64 InterleaveDefault, [Out, Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information."): ToSubClass Amended, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus); }; [Indication: DisableOverride ToSubClass, dynamic: ToInstance, provider("mispace"): ToInstance, Description("Storage alert event"): ToSubClass Amended] class SPACES_StorageAlertEvent : MSFT_StorageAlertEvent { }; [Indication: DisableOverride ToSubClass, dynamic: ToInstance, provider("mispace"): ToInstance, Description("Storage arrival events are used whenever a storage object is added or created."): ToSubClass Amended] class SPACES_StorageArrivalEvent : MSFT_StorageArrivalEvent { }; [Indication: DisableOverride ToSubClass, dynamic: ToInstance, provider("mispace"): ToInstance, Description("Storage departure events are used whenever a storage object is removed or deleted."): ToSubClass Amended] class SPACES_StorageDepartureEvent : MSFT_StorageDepartureEvent { }; [dynamic: ToInstance, provider("mispace"): ToInstance, Description("Represents a manageable physical disk enclosure."): ToSubClass Amended] class SPACES_StorageEnclosure : MSFT_StorageEnclosure { [implemented, Description("This method allows a user to perform certain identification tasks on the enclosure and its elements."): ToSubClass Amended, ValueMap{"0", "1", "2", "3", "4", "5", "40001", "40002", "46000", "46001", "55000", "55001"}: ToSubClass, Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Access denied", "There are not enough resources to complete the operation.", "Cannot connect to the storage provider.", "The storage provider cannot connect to the storage subsystem.", "One or more slot numbers provided are not valid.", "The enclosure does not support identification of the enclosure element."}: ToSubClass Amended] uint32 IdentifyElement([In, Description("If set to TRUE, this instructs the enclosure to enable its identification LED on the specified element. The identification LED should remain enabled until a second call to IdentifyElement on the same element is made with this parameter specified as FALSE."): ToSubClass Amended] boolean Enable, [In, Description("The numbers of the slots on which to enable or disable identification."): ToSubClass Amended] uint32 SlotNumbers[], [Out, Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information."): ToSubClass Amended, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus); [implemented, Description("This method returns the vendor specific data from an enclosure."): ToSubClass Amended, ValueMap{"0", "1", "2", "3", "4", "5", "40001", "40002", "46000", "46001", "55002"}: ToSubClass, Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Access denied", "There are not enough resources to complete the operation.", "Cannot connect to the storage provider.", "The storage provider cannot connect to the storage subsystem.", "The given page number has not been implemented."}: ToSubClass Amended] uint32 GetVendorData([In, Required: DisableOverride ToSubClass, Description("Denotes the page number for which vendor data is requested."): ToSubClass Amended] uint16 PageNumber, [Out, Description("The vendor specific data (page 04h for example) from an enclosure."): ToSubClass Amended] string VendorData, [Out, Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information."): ToSubClass Amended, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus); }; [Association: DisableOverride ToSubClass, dynamic: ToInstance, provider("mispace"): ToInstance, Description("Association between StorageEnclosure and PhysicalDisk"): ToSubClass Amended] class SPACES_StorageEnclosureToPhysicalDisk : MSFT_StorageEnclosureToPhysicalDisk { }; [dynamic: ToInstance, provider("mispace"): ToInstance, 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] class SPACES_StorageJob : MSFT_StorageJob { [read: ToSubClass, Description("ObjectId for internal use only."): ToSubClass Amended] string AffectedObjectId; }; [Association: DisableOverride ToSubClass, dynamic: ToInstance, provider("mispace"): ToInstance, Description("Association between a StorageJob and objects affected by the job's operation. Instances of this association should only exist once the storage job has been completed, and should remain for a period of time (recommended 24-hours) after."): ToSubClass Amended] class SPACES_StorageJobToAffectedStorageObject : MSFT_StorageJobToAffectedStorageObject { }; [Indication: DisableOverride ToSubClass, dynamic: ToInstance, provider("mispace"): 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 SPACES_StorageModificationEvent : MSFT_StorageModificationEvent { }; [dynamic: ToInstance, provider("mispace"): ToInstance, Description("Represents a storage node in a cluster."): ToSubClass Amended] class SPACES_StorageNode : MSFT_StorageNode { }; [Association: DisableOverride ToSubClass, dynamic: ToInstance, provider("mispace"): ToInstance, Description("Association between StorageNode and PhysicalDisk."): ToSubClass Amended] class SPACES_StorageNodeToPhysicalDisk : MSFT_StorageNodeToPhysicalDisk { [read: ToSubClass, Description("Denotes the operational status of the PhysicalDisk."): ToSubClass Amended, 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", "0xD0080xD009.."}: ToSubClass, Values{"Unknown", "Other", "OK", "Degraded", "Stressed", "Predictive Failure", "Error", "Non-Recoverable Error", "Starting", "Stopping", "Stopped", "In Service", "No Contact", "Lost Communication", "Aborted", "Dormant", "Supporting Entity in Error", "Completed", "Power Mode", "Relocating", "Microsoft Reserved", "Failed Media", "Split", "Stale Metadata", "IO Error", "Unrecognized Metadata", "Microsoft Reserved"}: ToSubClass Amended] uint16 OperationalStatus[]; [read: ToSubClass, Required: DisableOverride ToSubClass, Description("Denotes the health status of the PhysicalDisk on this StorageNode."): ToSubClass Amended, ValueMap{"0", "1", "2", "5"}: ToSubClass, Values{"Healthy", "Warning", "Unhealthy", "Unknown"}: ToSubClass Amended] uint16 HealthStatus; [read: ToSubClass, Description("Indicates whether the physical disk uses MPIO."): ToSubClass Amended] boolean IsMpioEnabled; [read: ToSubClass, Description("The MPIO load balance policy being used by the disk."): ToSubClass Amended, ValueMap{"0", "1", "2", "3", "4", "5", "6", "7"}: ToSubClass, Values{"Unknown", "Fail Over", "Round Robin", "Round Robin with Subset", "Least Queue Depth", "Weighted Paths", "Least Blocks", "Vendor Specific"}: ToSubClass Amended] uint16 LoadBalancePolicy; [Description("Collection of MPIO path IDs, reported by the MPIO DSM, when applicable."): ToSubClass Amended] string PathId[]; [read: ToSubClass, Description("The current state of MPIO paths between the node and physical disk."): ToSubClass Amended, ValueMap{"0", "1", "2", "3"}: ToSubClass, Values{"Unavailable", "Active/Unoptimized", "Standby", "Active/Optimized"}: ToSubClass Amended] uint16 PathState[]; [read: ToSubClass, Description("The operating system's number for the disk on this StorageNode. Disk 0 is typically the boot device. Disk numbers may not necessarily remain the same across reboot, and are not necessarily the same on different nodes."): ToSubClass Amended] uint32 DiskNumber; }; [Association: DisableOverride ToSubClass, dynamic: ToInstance, provider("mispace"): ToInstance, Description("Association between StorageNode and StorageEnclosure"): ToSubClass Amended] class SPACES_StorageNodeToStorageEnclosure : MSFT_StorageNodeToStorageEnclosure { }; [Association: DisableOverride ToSubClass, dynamic: ToInstance, provider("mispace"): ToInstance, Description("Association between StorageNode and StoragePool."): ToSubClass Amended] class SPACES_StorageNodeToStoragePool : MSFT_StorageNodeToStoragePool { }; [Association: DisableOverride ToSubClass, dynamic: ToInstance, provider("mispace"): ToInstance, Description("Association between StorageNode and VirtualDisk."): ToSubClass Amended] class SPACES_StorageNodeToVirtualDisk : MSFT_StorageNodeToVirtualDisk { }; [dynamic: ToInstance, provider("mispace"): ToInstance, 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] class SPACES_StoragePool : MSFT_StoragePool { [implemented, 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); [implemented, 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", "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", "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, [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); [implemented, Description("Creates a storage tier template on the storage pool. This method is available onlywhen the SupportsStorageTierCreation property on the storage subsystem is set toTRUE. 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); [implemented, 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); [implemented, 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); [implemented, 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); [implemented, 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"}: 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."}: 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); [implemented, 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); [implemented, 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); [implemented, 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); [implemented, 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); [implemented, 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); [implemented, 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); [implemented, 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); }; [Association: DisableOverride ToSubClass, dynamic: ToInstance, provider("mispace"): ToInstance, Description("Association between StoragePool and PhysicalDisk. Primordial storage pools should retain their association to all physical disks that originated from that pool. This means that if a physical disk has been added to a concrete pool, the disk should have an association with both its concrete and primordial pools."): ToSubClass Amended] class SPACES_StoragePoolToPhysicalDisk : MSFT_StoragePoolToPhysicalDisk { }; [Association: DisableOverride ToSubClass, dynamic: ToInstance, provider("mispace"): ToInstance, Description("Association between StoragePool and ResiliencySetting"): ToSubClass Amended] class SPACES_StoragePoolToResiliencySetting : MSFT_StoragePoolToResiliencySetting { }; [Association: DisableOverride ToSubClass, dynamic: ToInstance, provider("mispace"): ToInstance] class SPACES_StoragePoolToStorageTier : MSFT_StoragePoolToStorageTier { }; [Association: DisableOverride ToSubClass, dynamic: ToInstance, provider("mispace"): ToInstance, Description("Association between StoragePool and VirtualDisk. This association should only exist for concrete pools."): ToSubClass Amended] class SPACES_StoragePoolToVirtualDisk : MSFT_StoragePoolToVirtualDisk { }; [dynamic: ToInstance, provider("mispace"): ToInstance, Description("This class is a representation of a particular Storage Management Provider (SMP) software package which is used to manage a storage subsystem."): ToSubClass Amended] class SPACES_StorageProvider : MSFT_StorageProvider { [implemented, Required: DisableOverride ToSubClass, Description("This method is used when a user wants to explicitly discover or re-enumerate objects owned by the storage provider. A call to this method could result in a full or partial cache invalidation and over-the-wire calls to the storage subsystem(s) in order to discover new or updated objects. As this is a time consuming task, it should be used sparingly by the user.\nThe scope of the discovery operation is controlled by the DiscoveryLevel and RootObject parameters. DiscoveryLevel controls the depth of the object discovery. RootObject defines the starting point from which discovery will happen."): ToSubClass Amended, ValueMap{"0", "1", "2", "3", "4", "5", "4096", "40001", "40002", "46000", "46001", "46002", "46003"}: ToSubClass, Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Method Parameters Checked - Job Started", "Access denied", "There are not enough resources to complete the operation.", "Cannot connect to the storage provider.", "The storage provider cannot connect to the storage subsystem.", "The storage provider does not support a required profile.", "The storage provider does not support a required association."}: ToSubClass Amended] uint32 Discover([In, Required: DisableOverride ToSubClass, Description("This field denotes the level (or depth) of discovery that should be performed. This parameter can only be specified if the root object is a storage provider, storage subsystem, or NULL. When specified, the storage provider will discover objects starting from Level 0 and continuing until the specified level is reached. Associations between objects (within the discovered levels) will also be discovered. The discovery levels are defined as follows: \n0 - 'Level 0': The storage provider and storage subsystem objects will be discovered. \n1 - 'Level 1': Storage pools, resiliency settings, target ports, target portals, and initiator ids will be discovered.\n2 - 'Level 2': Virtual disks and masking sets will be discovered.\n3 - 'Level 3': Physical disks will be discovered."): ToSubClass Amended, ValueMap{"0", "1", "2", "3"}: ToSubClass, Values{"Level 0", "Level 1", "Level 2", "Level 3"}: ToSubClass Amended] uint16 DiscoveryLevel, [In, Description("If this parameter is set, discovery will begin from this object. When DiscoveryLevel is NULL, well-defined actions will be taken depending on the type of object specified by RootObject: \nStorage subsystem: All associated objects will be discovered. \nStorage pool: The pool, along with any associated resiliency settings, virtual disks, and physical disks will be discovered. \nMasking set: The masking set, along with any associated target ports, initiator ids, and virtual disks will be discovered. \nFor all other objects: Only that object will be discovered / refreshed."): ToSubClass Amended] MSFT_StorageObject ref RootObject, [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); [implemented, 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); [implemented, 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); [implemented, Description("This method registers a subsystem to be managed by this provider. Note that the subsystem must be compatible with the provider software."): ToSubClass Amended, ValueMap{"0", "1", "2", "3", "4", "5", "6", "40001", "40002", "46000", "46001", "46004", "46006"}: ToSubClass, Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "In Use", "Access denied", "There are not enough resources to complete the operation.", "Cannot connect to the storage provider.", "The storage provider cannot connect to the storage subsystem.", "Cannot register/unregister the storage subsystem on local host.", "This subsystem is already registered."}: ToSubClass Amended] uint32 RegisterSubsystem([In, Required: DisableOverride ToSubClass] string ComputerName, [In] string Credential, [Out, EmbeddedInstance("MSFT_StorageSubSystem"): ToSubClass] MSFT_StorageSubSystem RegisteredSubsystem, [Out, Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information."): ToSubClass Amended, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus); [implemented, Description("This method unregisters a subsystem. The provider will no longer manage this subsystem."): ToSubClass Amended, ValueMap{"0", "1", "2", "3", "4", "5", "40001", "40002", "46000", "46001", "46004", "46005", "46007"}: ToSubClass, Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Access denied", "There are not enough resources to complete the operation.", "Cannot connect to the storage provider.", "The storage provider cannot connect to the storage subsystem.", "Cannot register/unregister the storage subsystem on local host.", "The storage subsystem is not registered.", "This subsystem is already registered with another user's credentials. Use the -Force flag to remove the existing registration and add a new one anyway."}: ToSubClass Amended] uint32 UnregisterSubsystem([In, EmbeddedInstance("MSFT_StorageSubSystem"): ToSubClass] MSFT_StorageSubSystem Subsystem, [In] string StorageSubSystemUniqueId, [In] boolean Force, [Out, Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information."): ToSubClass Amended, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus); [implemented, Description("This method sets the attributes of the provider."): 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, Description("If set to 3, caching for all the registered remote subsystem is enabled. If set to 2, caching for all the registered remote subsystem is disabled. This API only effects the remote subsystem registered and local Subsystem requests are not cached and reported live always."): ToSubClass Amended, ValueMap{"2", "3"}: ToSubClass, Values{"Disabled", "Manual-Discovery"}: ToSubClass Amended] uint16 RemoteSubsystemCacheMode, [Out, Description("ExtendedStatus allows the storage provider to return extended (implementation specific) error information."): ToSubClass Amended, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus); }; [Association: DisableOverride ToSubClass, dynamic: ToInstance, provider("mispace"): ToInstance, Description("Association between StorageProvider and StorageSubSystem"): ToSubClass Amended] class SPACES_StorageProviderToStorageSubsystem : MSFT_StorageProviderToStorageSubSystem { }; [dynamic: ToInstance, provider("mispace"): ToInstance, Description("StorageReliabilityCounter provides reliability statistics or counters reported by a storage device. This information is dynamic and should be obtained from the storage device whenever needed."): ToSubClass Amended] class SPACES_StorageReliabilityCounter : MSFT_StorageReliabilityCounter { [implemented, ValueMap{"0", "1", "2", "3", "4", "5"}: ToSubClass, Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter"}: ToSubClass Amended] uint32 Reset(); }; [dynamic: ToInstance, provider("mispace"): ToInstance, Description("Represents a storage array subsystem that exposes virtual disks."): ToSubClass Amended] class SPACES_StorageSubsystem : MSFT_StorageSubSystem { [implemented, 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); [implemented, 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); [implemented, 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); [implemented, 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); [implemented, 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); [implemented, 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); [implemented, 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); [implemented] 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); [implemented] uint32 ClearDiagnosticInfo([Out, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus); [implemented] uint32 StartDiagnosticLog([In] uint16 Level, [In, Units("MegaBytes"): ToSubClass Amended] uint64 MaxLogSize, [Out, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus); [implemented] uint32 StopDiagnosticLog([Out, EmbeddedInstance("MSFT_StorageExtendedStatus"): ToSubClass] MSFT_StorageExtendedStatus ExtendedStatus); }; [Association: DisableOverride ToSubClass, dynamic: ToInstance, provider("mispace"): ToInstance, Description("Association between StorageSubSystem and InitiatorId"): ToSubClass Amended] class SPACES_StorageSubsystemToInitiatorId : MSFT_StorageSubSystemToInitiatorId { }; [Association: DisableOverride ToSubClass, dynamic: ToInstance, provider("mispace"): ToInstance, Description("Association between StorageSubSystem and MaskingSet"): ToSubClass Amended] class SPACES_StorageSubsystemToMaskingSet : MSFT_StorageSubSystemToMaskingSet { }; [Association: DisableOverride ToSubClass, dynamic: ToInstance, provider("mispace"): ToInstance, Description("Association between StorageSubSystem and PhysicalDisk. This association should include all physical disks that the subsystem is aware of."): ToSubClass Amended] class SPACES_StorageSubsystemToPhysicalDisk : MSFT_StorageSubSystemToPhysicalDisk { }; [Association: DisableOverride ToSubClass, dynamic: ToInstance, provider("mispace"): ToInstance, Description("Association between StorageSubSystem and StorageEnclosure"): ToSubClass Amended] class SPACES_StorageSubsystemToStorageEnclosure : MSFT_StorageSubSystemToStorageEnclosure { }; [Association: DisableOverride ToSubClass, dynamic: ToInstance, provider("mispace"): ToInstance, Description("Association between StorageSubSystem and StorageNode"): ToSubClass Amended] class SPACES_StorageSubsystemToStorageNode : MSFT_StorageSubSystemToStorageNode { }; [Association: DisableOverride ToSubClass, dynamic: ToInstance, provider("mispace"): ToInstance, Description("Association between StorageSubSystem and StoragePool"): ToSubClass Amended] class SPACES_StorageSubsystemToStoragePool : MSFT_StorageSubSystemToStoragePool { }; [Association: DisableOverride ToSubClass, dynamic: ToInstance, provider("mispace"): ToInstance, Description("Association between StorageSubSystem and VirtualDisk"): ToSubClass Amended] class SPACES_StorageSubsystemToVirtualDisk : MSFT_StorageSubSystemToVirtualDisk { }; [dynamic: ToInstance, provider("mispace"): ToInstance, Description("A storage tier."): ToSubClass Amended] class SPACES_StorageTier : MSFT_StorageTier { [implemented, 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); [implemented, 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] 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); [implemented, 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); [implemented, 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); [implemented, 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); [implemented, 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); }; [dynamic: ToInstance, provider("mispace"): ToInstance, Description("A subsystem storage volume."): ToSubClass Amended] class SPACES_VirtualDisk : MSFT_VirtualDisk { [implemented, 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); [implemented, 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); [implemented, 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); [implemented, 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); [implemented, 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); [implemented, 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); [implemented, 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); [implemented, 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); [implemented, 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); [implemented, 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); [implemented, 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); [implemented, 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); [implemented, 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); [implemented, 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); [implemented, 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); [implemented, 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); }; [Association: DisableOverride ToSubClass, dynamic: ToInstance, provider("mispace"): ToInstance, Description("Association between VirtualDisk and PhysicalDisk. A virtual disk and a physical disk are associated when the virtual disk has data residing on the physical disk."): ToSubClass Amended] class SPACES_VirtualDiskToPhysicalDisk : MSFT_VirtualDiskToPhysicalDisk { }; [Association: DisableOverride ToSubClass, dynamic: ToInstance, provider("mispace"): ToInstance] class SPACES_VirtualDiskToStorageTier : MSFT_VirtualDiskToStorageTier { };