#pragma autorecover
#pragma namespace("\\\\.\\root\\Microsoft\\Windows\\Storage")
instance of __namespace{ name="MS_809";};
#pragma namespace("\\\\.\\root\\Microsoft\\Windows\\Storage\\MS_809")

[Version("2.22.1") : Amended,Description("CIM_Error is a specialized class that contains information about the severity, cause, recommended actions and other data related to the failure of a CIM Operation. Instances of this type MAY be included as part of the response to a CIM Operation.") : Amended ToSubclass,AMENDMENT, LOCALE("MS_809")] 
class CIM_Error
{
  [Description("Primary classification of the error. The following values are defined: \n2 - Communications Error. Errors of this type are principally associated with the procedures and/or processes required to convey information from one point to another. \n3 - Quality of Service Error. Errors of this type are principally associated with failures that result in reduced functionality or performance. \n4 - Software Error. Error of this type are principally associated with a software or processing fault. \n5 - Hardware Error. Errors of this type are principally associated with an equipment or hardware failure. \n6 - Environmental Error. Errors of this type are principally associated with a failure condition relating the to facility, or other environmental considerations. \n7 - Security Error. Errors of this type are associated with security violations, detection of viruses, and similar issues. \n8 - Oversubscription Error. Errors of this type are principally associated with the failure to allocate sufficient resources to complete the operation. \n9 - Unavailable Resource Error. Errors of this type are principally associated with the failure to access a required resource. \n10 -Unsupported Operation Error. Errors of this type are principally associated with requests that are not supported.") : Amended ToSubclass,Values{"Unknown", "Other", "Communications Error", "Quality of Service Error", "Software Error", "Hardware Error", "Environmental Error", "Security Error", "Oversubscription Error", "Unavailable Resource Error", "Unsupported Operation Error", "DMTF Reserved"} : Amended ToSubclass] uint16 ErrorType;
  [Description("A free-form string describing the ErrorType when 1, \"Other\", is specified as the ErrorType.") : Amended ToSubclass] string OtherErrorType;
  [Description("A string that uniquely identifies the entity that owns the definition of the format of the Message described in this instance. OwningEntity MUST include a copyrighted, trademarked or otherwise unique name that is owned by the business entity or standards body defining the format.") : Amended ToSubclass] string OwningEntity;
  [Description("An opaque string that uniquely identifies, within the scope of the OwningEntity, the format of the Message.") : Amended ToSubclass] string MessageID;
  [Description("The formatted message. This message is constructed by combining some or all of the dynamic elements specified in the MessageArguments property with the static elements uniquely identified by the MessageID in a message registry or other catalog associated with the OwningEntity.") : Amended ToSubclass] string Message;
  [Description("An array containing the dynamic content of the message.") : Amended ToSubclass] string MessageArguments[];
  [Description("An enumerated value that describes the severity of the Indication from the notifier\\'s point of view: \n0 - the Perceived Severity of the indication is unknown or indeterminate. \n1 - Other, by CIM convention, is used to indicate that the Severity\\'s value can be found in the OtherSeverity property. \n2 - Information should be used when providing an informative response. \n3 - Degraded/Warning should be used when its appropriate to let the user decide if action is needed. \n4 - Minor should be used to indicate action is needed, but the situation is not serious at this time. \n5 - Major should be used to indicate action is needed NOW. \n6 - Critical should be used to indicate action is needed NOW and the scope is broad (perhaps an imminent outage to a critical resource will result). \n7 - Fatal/NonRecoverable should be used to indicate an error occurred, but it\\'s too late to take remedial action. \n2 and 0 - Information and Unknown (respectively) follow common usage. Literally, the Error is purely informational or its severity is simply unknown.") : Amended ToSubclass,Values{"Unknown", "Other", "Information", "Degraded/Warning", "Minor", "Major", "Critical", "Fatal/NonRecoverable", "DMTF Reserved"} : Amended ToSubclass] uint16 PerceivedSeverity;
  [Description("An enumerated value that describes the probable cause of the error.") : Amended ToSubclass,Values{"Unknown", "Other", "Adapter/Card Error", "Application Subsystem Failure", "Bandwidth Reduced", "Connection Establishment Error", "Communications Protocol Error", "Communications Subsystem Failure", "Configuration/Customization Error", "Congestion", "Corrupt Data", "CPU Cycles Limit Exceeded", "Dataset/Modem Error", "Degraded Signal", "DTE-DCE Interface Error", "Enclosure Door Open", "Equipment Malfunction", "Excessive Vibration", "File Format Error", "Fire Detected", "Flood Detected", "Framing Error", "HVAC Problem", "Humidity Unacceptable", "I/O Device Error", "Input Device Error", "LAN Error", "Non-Toxic Leak Detected", "Local Node Transmission Error", "Loss of Frame", "Loss of Signal", "Material Supply Exhausted", "Multiplexer Problem", "Out of Memory", "Output Device Error", "Performance Degraded", "Power Problem", "Pressure Unacceptable", "Processor Problem (Internal Machine Error)", "Pump Failure", "Queue Size Exceeded", "Receive Failure", "Receiver Failure", "Remote Node Transmission Error", "Resource at or Nearing Capacity", "Response Time Excessive", "Retransmission Rate Excessive", "Software Error", "Software Program Abnormally Terminated", "Software Program Error (Incorrect Results)", "Storage Capacity Problem", "Temperature Unacceptable", "Threshold Crossed", "Timing Problem", "Toxic Leak Detected", "Transmit Failure", "Transmitter Failure", "Underlying Resource Unavailable", "Version Mismatch", "Previous Alert Cleared", "Login Attempts Failed", "Software Virus Detected", "Hardware Security Breached", "Denial of Service Detected", "Security Credential Mismatch", "Unauthorized Access", "Alarm Received", "Loss of Pointer", "Payload Mismatch", "Transmission Error", "Excessive Error Rate", "Trace Problem", "Element Unavailable", "Element Missing", "Loss of Multi Frame", "Broadcast Channel Failure", "Invalid Message Received", "Routing Failure", "Backplane Failure", "Identifier Duplication", "Protection Path Failure", "Sync Loss or Mismatch", "Terminal Problem", "Real Time Clock Failure", "Antenna Failure", "Battery Charging Failure", "Disk Failure", "Frequency Hopping Failure", "Loss of Redundancy", "Power Supply Failure", "Signal Quality Problem", "Battery Discharging", "Battery Failure", "Commercial Power Problem", "Fan Failure", "Engine Failure", "Sensor Failure", "Fuse Failure", "Generator Failure", "Low Battery", "Low Fuel", "Low Water", "Explosive Gas", "High Winds", "Ice Buildup", "Smoke", "Memory Mismatch", "Out of CPU Cycles", "Software Environment Problem", "Software Download Failure", "Element Reinitialized", "Timeout", "Logging Problems", "Leak Detected", "Protection Mechanism Failure", "Protecting Resource Failure", "Database Inconsistency", "Authentication Failure", "Breach of Confidentiality", "Cable Tamper", "Delayed Information", "Duplicate Information", "Information Missing", "Information Modification", "Information Out of Sequence", "Key Expired", "Non-Repudiation Failure", "Out of Hours Activity", "Out of Service", "Procedural Error", "Unexpected Information", "DMTF Reserved"} : Amended ToSubclass] uint16 ProbableCause;
  [Description("A free-form string describing the probable cause of the error.") : Amended ToSubclass] string ProbableCauseDescription;
  [Description("A free-form string describing recommended actions to take to resolve the error.") : Amended ToSubclass] string RecommendedActions[];
  [Description("The identifying information of the entity (i.e., the instance) generating the error. If this entity is modeled in the CIM Schema, this property contains the path of the instance encoded as a string parameter. If not modeled, the property contains some identifying string that names the entity that generated the error. The path or identifying string is formatted per the ErrorSourceFormat property.") : Amended ToSubclass] string ErrorSource;
  [Description("The format of the ErrorSource property is interpretable based on the value of this property. Values are defined as: \n0 - Unknown. The format is unknown or not meaningfully interpretable by a CIM client application. \n1 - Other. The format is defined by the value of the OtherErrorSourceFormat property.2 - CIMObjectPath. A CIM Object Path as defined in the CIM Infrastructure specification. Note: CIM 2.5 and earlier used the term object names.") : Amended ToSubclass,Values{"Unknown", "Other", "CIMObjectPath", "DMTF Reserved"} : Amended ToSubclass] uint16 ErrorSourceFormat;
  [Description("A string defining \"Other\" values for ErrorSourceFormat. This value MUST be set to a non NULL value when ErrorSourceFormat is set to a value of 1 (\"Other\"). For all other values of ErrorSourceFormat, the value of this string must be set to NULL.") : Amended ToSubclass] string OtherErrorSourceFormat;
  [Description("The CIM status code that characterizes this instance. \nThis property defines the status codes that MAY be return by a conforming CIM Server or Listener. Note that not all status codes are valid for each operation. The specification for each operation SHOULD define the status codes that may be returned by that operation. \nThe following values for CIM status code are defined: \n1 - CIM_ERR_FAILED. A general error occurred that is not covered by a more specific error code. \n2 - CIM_ERR_ACCESS_DENIED. Access to a CIM resource was not available to the client. \n3 - CIM_ERR_INVALID_NAMESPACE. The target namespace does not exist. \n4 - CIM_ERR_INVALID_PARAMETER. One or more parameter values passed to the method were invalid. \n5 - CIM_ERR_INVALID_CLASS. The specified Class does not exist. \n6 - CIM_ERR_NOT_FOUND. The requested object could not be found. \n7 - CIM_ERR_NOT_SUPPORTED. The requested operation is not supported. \n8 - CIM_ERR_CLASS_HAS_CHILDREN. Operation cannot be carried out on this class since it has instances. \n9 - CIM_ERR_CLASS_HAS_INSTANCES. Operation cannot be carried out on this class since it has instances. \n10 - CIM_ERR_INVALID_SUPERCLASS. Operation cannot be carried out since the specified superclass does not exist. \n11 - CIM_ERR_ALREADY_EXISTS. Operation cannot be carried out because an object already exists. \n12 - CIM_ERR_NO_SUCH_PROPERTY. The specified Property does not exist. \n13 - CIM_ERR_TYPE_MISMATCH. The value supplied is incompatible with the type. \n14 - CIM_ERR_QUERY_LANGUAGE_NOT_SUPPORTED. The query language is not recognized or supported. \n15 - CIM_ERR_INVALID_QUERY. The query is not valid for the specified query language. \n16 - CIM_ERR_METHOD_NOT_AVAILABLE. The extrinsic Method could not be executed. \n17 - CIM_ERR_METHOD_NOT_FOUND. The specified extrinsic Method does not exist. \n18 - CIM_ERR_UNEXPECTED_RESPONSE. The returned response to the asynchronous operation was not expected. \n19 - CIM_ERR_INVALID_RESPONSE_DESTINATION. The specified destination for the asynchronous response is not valid. \n20 - CIM_ERR_NAMESPACE_NOT_EMPTY. The specified Namespace is not empty.\n21 - CIM_ERR_INVALID_ENUMERATION_CONTEXT. The enumeration context supplied is not valid.\n22 - CIM_ERR_INVALID_OPERATION_TIMEOUT. The specified Namespace is not empty.\n23 - CIM_ERR_PULL_HAS_BEEN_ABANDONED. The specified Namespace is not empty.\n24 - CIM_ERR_PULL_CANNOT_BE_ABANDONED. The attempt to abandon a pull operation has failed.\n25 - CIM_ERR_FILTERED_ENUMERATION_NOT_SUPPORTED. Filtered Enumeratrions are not supported.\n26 - CIM_ERR_CONTINUATION_ON_ERROR_NOT_SUPPORTED. Continue on error is not supported.\n27 - CIM_ERR_SERVER_LIMITS_EXCEEDED. The WBEM Server limits have been exceeded (e.g. memory, connections, ...).\n28 - CIM_ERR_SERVER_IS_SHUTTING_DOWN. The WBEM Server is shutting down.\n29 - CIM_ERR_QUERY_FEATURE_NOT_SUPPORTED. The specified Query Feature is not supported.") : Amended ToSubclass,Values{"CIM_ERR_FAILED", "CIM_ERR_ACCESS_DENIED", "CIM_ERR_INVALID_NAMESPACE", "CIM_ERR_INVALID_PARAMETER", "CIM_ERR_INVALID_CLASS", "CIM_ERR_NOT_FOUND", "CIM_ERR_NOT_SUPPORTED", "CIM_ERR_CLASS_HAS_CHILDREN", "CIM_ERR_CLASS_HAS_INSTANCES", "CIM_ERR_INVALID_SUPERCLASS", "CIM_ERR_ALREADY_EXISTS", "CIM_ERR_NO_SUCH_PROPERTY", "CIM_ERR_TYPE_MISMATCH", "CIM_ERR_QUERY_LANGUAGE_NOT_SUPPORTED", "CIM_ERR_INVALID_QUERY", "CIM_ERR_METHOD_NOT_AVAILABLE", "CIM_ERR_METHOD_NOT_FOUND", "CIM_ERR_UNEXPECTED_RESPONSE", "CIM_ERR_INVALID_RESPONSE_DESTINATION", "CIM_ERR_NAMESPACE_NOT_EMPTY", "CIM_ERR_INVALID_ENUMERATION_CONTEXT", "CIM_ERR_INVALID_OPERATION_TIMEOUT", "CIM_ERR_PULL_HAS_BEEN_ABANDONED", "CIM_ERR_PULL_CANNOT_BE_ABANDONED", "CIM_ERR_FILTERED_ENUMERATION_NOT_SUPPORTED", "CIM_ERR_CONTINUATION_ON_ERROR_NOT_SUPPORTED", "CIM_ERR_SERVER_LIMITS_EXCEEDED", "CIM_ERR_SERVER_IS_SHUTTING_DOWN", "CIM_ERR_QUERY_FEATURE_NOT_SUPPORTED", "DMTF Reserved"} : Amended ToSubclass] uint32 CIMStatusCode;
  [Description("A free-form string containing a human-readable description of CIMStatusCode. This description MAY extend, but MUST be consistent with, the definition of CIMStatusCode.") : Amended ToSubclass] string CIMStatusCodeDescription;
};

[ClassVersion("1.0") : Amended,Description("A disk object models the operating system's concept of a disk device. The disk may be directly attached to the computer system, or a virtual disk exposed to the system through the use of a Storage Management Provider.") : Amended ToSubclass,AMENDMENT, LOCALE("MS_809")] 
class MSFT_Disk
{
  [key,Description("ObjectId is a mandatory property that is used to opaquely and uniquely identify an instance of a class within the scope of the host computer system.") : Amended ToSubclass] string ObjectId;
  [Description("Path can be used to open an operating system handle to the disk device.") : Amended ToSubclass] string Path;
  [Description("Location contains the PnP location path of the disk. The format of this string depends on the bus type. If the bus type is SCSI, SAS, or PCI RAID, the format is <AdapterPnpLocationPath>#<BusType>(P<PathId>T<TargetId>L<LunId>). If the bus type is IDE, ATA, PATA, or SATA, the format is <AdapterPnpLocationPath>#<BusType>(C<PathId>T<TargetId>L<LunId>). For example, a SCSI location may look like: PCIROOT(0)#PCI(1C00)#PCI(0000)#SCSI(P00T01L01). Note: For Hyper-V and VHD images, this member is NULL because the virtual controller does not retun the location path.") : Amended ToSubclass] string Location;
  [Description("FriendlyName is a user-friendly, display oriented string to identify the disk.") : Amended ToSubclass] string FriendlyName;
  [Description("UniqueId of a disk contains the VPD Page 0x83 information that uniquely identifies this disk. The following types are accepted (in order of precedence): 8 - SCSI Name String; 3 - FCPH Name; 2 - EUI64, 1 - Vendor Id, 0 - Vendor Specific. If the disk is an exposed VirtualDisk, UniqueId is used map the association between the two objects.") : Amended ToSubclass] string UniqueId;
  [Description("UniqueIdFormat informs the user what VPD Page 0x83 descriptor type was used to populate the UniqueId field.") : Amended ToSubclass,Values{"Vendor Specific", "Vendor Id", "EUI64", "FCPH Name", "SCSI Name String"} : Amended ToSubclass] uint16 UniqueIdFormat;
  [Description("The operating system's number for the disk. Disk 0 is typically the boot device. Disk numbers may not necessarily remain the same across reboots.") : Amended ToSubclass] uint32 Number;
  [Description("A string representation of the disk's serial number.") : Amended ToSubclass] string SerialNumber;
  [Description("A string representation of the disk's firmware version.") : Amended ToSubclass] string FirmwareVersion;
  [Description("A string representation of the disk's hardware manufacturer.") : Amended ToSubclass] string Manufacturer;
  [Description("A string representation of the disk's model.") : Amended ToSubclass] string Model;
  [Description("The total size of the disk, measured in bytes.") : Amended ToSubclass,Units("Bytes") : Amended ToSubclass] uint64 Size;
  [Description("The amount of space currently used on the disk.") : Amended ToSubclass,Units("Bytes") : Amended ToSubclass] uint64 AllocatedSize;
  [Description("This field indicates the logical sector size of the disk in bytes. For example: a 4K native disk will report 4096, while a 512 emulated disk will report 512.") : Amended ToSubclass,Units("Bytes") : Amended ToSubclass] uint32 LogicalSectorSize;
  [Description("This field indicates the physical sector size of the disk in bytes. For example: both 4K native disks and 512 emulated disks will report 4096.") : Amended ToSubclass,Units("Bytes") : Amended ToSubclass] uint32 PhysicalSectorSize;
  [Description("This field indicates the largest contiguous block of free space on the disk. This is also the largest size of a partition which can be created on the disk.") : Amended ToSubclass,Units("Bytes") : Amended ToSubclass] uint64 LargestFreeExtent;
  [Description("Denotes the provisioning type of the disk device. \n1 - 'Thin' means that the storage for the disk is allocated on-demand. \n2 - 'Fixed' means that the storage is allocated up front.") : Amended ToSubclass,Values{"Unknown", "Thin", "Fixed"} : Amended ToSubclass] uint16 ProvisioningType;
  [Values{"Unknown", "Online", "Not Ready", "No Media", "Offline", "Failed", "Missing"} : Amended ToSubclass] uint16 OperationalStatus;
  [Values{"Unknown", "Healthy", "Failing", "Failed"} : Amended ToSubclass] uint16 HealthStatus;
  [Description("Denotes the I/O bus type used by this disk.") : Amended ToSubclass,Values{"Unknown", "SCSI", "ATAPI", "ATA", "1394", "SSA", "Fibre Channel", "USB", "RAID", "iSCSI", "SAS", "SATA", "SD", "MMC", "Virtual", "File Backed Virtual", "Storage Spaces"} : Amended ToSubclass] uint16 BusType;
  [Values{"Unknown", "MBR", "GPT"} : Amended ToSubclass] uint16 PartitionStyle;
  [Description("The MBR signature of the disk. This property is only valid on MBR disks and will be NULL for all other disk types.") : Amended ToSubclass] uint32 Signature;
  [Description("The GPT guid of the disk. This property is only valid on GPT disks and will be NULL for all other disk types.") : Amended ToSubclass] string Guid;
  [Description("If IsSystem is TRUE, this disk contains the system partition.") : Amended ToSubclass] boolean IsSystem;
  [Description("If IsClustered is TRUE, this disk is used in a clustered environment.") : Amended ToSubclass] boolean IsClustered;
  [Description("This property indicates that the computer has booted off of this disk.") : Amended ToSubclass] boolean IsBoot;
  [Description("This property indicates that the computer is configured to start off of this disk. On computers with BIOS firmware, this is the first disk that the firmware detects during startup. On computers that use EFI firmware, this is the disk which contains the EFI System Partition (ESP). If there are no disks or multiple disks with an ESP partition, this flag is not set for any disk.") : Amended ToSubclass] boolean BootFromDisk;
  [Description("This method will attempt to create a new partition on the disk. By default, it creates a data partition using the largest available free extent. On MBR disks, CreatePartition will automatically create an extended partition when needed.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Disk is in use", "Size Not Supported", "Not enough free space", "Access denied", "There are not enough resources to complete the operation.", "Cache out of date", "You must specify a size by using either the Size or the UseMaximumSize parameter. You can specify only one of these parameters at a time.", "The disk has not been initialized.", "The disk is read only.", "The disk is offline.", "The disk's partition limit has been reached.", "The specified partition alignment is not valid. It must be a multiple of the disk's sector size.", "A parameter is not valid for this type of partition.", "The specified partition type is not valid.", "Only the first 2 TB are usable on MBR disks.", "The specified offset is not valid.", "The requested access path is already in use.", "Cannot assign access paths to hidden partitions.", "The access path is not valid."} : Amended ToSubclass] uint32 CreatePartition([In,Units("Bytes") : Amended ToSubclass,Description("This parameter specifies the desired size (measured in bytes) for the partition. This must be equal to or less than the size specified by the disk's LargestFreeExtent property. This parameter cannot be used with UseMaximumSize.") : Amended ToSubclass] uint64 Size,[In,Description("If set to TRUE, the partition will fill the largest free extent on the disk. This parameter cannot be used with the Size parameter.") : Amended ToSubclass] boolean UseMaximumSize,[In,Units("Bytes") : Amended ToSubclass,Description("This parameter specifies the partition offset (measured in bytes). If the offset is not aligned and the Alignment parameter is not specified, the offset is rouded up or down to the closest alignment boundary depending on the size of the disk on which the partition is created.") : Amended ToSubclass] uint64 Offset,[In,Units("Bytes") : Amended ToSubclass] uint32 Alignment,[In,Description("This parameter allows the user to specify a drive letter for the partition at the time of creation. This parameter cannot be used in conjunction with AssignDriveLetter. If both parameters are specified, an Invalid Parameter error will be returned. If the drive letter is not available, the partition will be created, but error '42002' will be returned.") : Amended ToSubclass] char16 DriveLetter,[In,Description("If AssignDriveLetter is set to TRUE, the next available drive letter will be assigned to the created partition. If no more drive letters are available, the partition will be created with no drive letter. This parameter cannot be used in conjunction with DriveLetter. If both parameters are specified, an Invalid Parameter error will be returned.") : Amended ToSubclass] boolean AssignDriveLetter,[In,Description("Specifies the MBR partition type. MbrType can only be set if the disk's PartitionStyle property is set to 1 - 'MBR', otherwise an error will be returned. If this parameter is not specified, CreatePartition will default to type 6 - 'Huge'.") : Amended ToSubclass,Values{"FAT12", "FAT16", "Extended", "Huge", "IFS", "FAT32"} : Amended ToSubclass] uint16 MbrType,[In,Description("Specifies the GPT partition type. GptType is only valid if the disk's PartitionStyle property is set to 2 - 'GPT', otherwise an error will be returned. If this parameter is not specified, CreatePartition will default to {ebd0a0a2-b9e5-4433-87c0-68b6b72699c7} - 'Basic Data'.") : Amended ToSubclass,Values{"System Partition", "Microsoft Reserved", "Basic data", "LDM Metadata", "LDM Data", "Microsoft Recovery"} : Amended ToSubclass] string GptType,[In,Description("If TRUE, the partition will not be able to receive a drive letter assignment, nor will mount manager assign a volume GUID name. The partition will not be enumerated by the FindFirstVolume and FindNextVolume functions. The partition can be opened by its associated volume device name (i.e. \\?GLOBALROOT\\Device\\HarddiskVolumeX).") : Amended ToSubclass] boolean IsHidden,[In,Description("If TRUE, the partition's MBR active bit will be set, and the partition will become bootable. This parameter is only valid for MBR disks.") : Amended ToSubclass] boolean IsActive,[Out] MSFT_Partition CreatedPartition,[Out] MSFT_ExtendedStatus ExtendedStatus);
  [Description("This method initializes a RAW disk with a particular partition style. If no partition style is specified, GPT will be selected by default. If the disk is already initialized, this method will fail with a well defined error code.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Disk is in use", "Access denied", "There are not enough resources to complete the operation.", "Cache out of date", "The disk has already been initialized."} : Amended ToSubclass] uint32 Initialize([In,Description("Specifies the desired partition style for the disk. If no value is given, Initialize will default to 2 - 'GPT'.") : Amended ToSubclass,Values{"MBR", "GPT"} : Amended ToSubclass] uint16 PartitionStyle,[Out] MSFT_ExtendedStatus ExtendedStatus);
  [Description("This method removes partition information and uninitializes a disk, sending it back into a RAW state. The caller must specify RemoveData, RemoveOEM or both with this method unless they first delete all data partitions, known OEM partitions, and ESP partitions on the disk. This requirement excludes metadata partitions such as the MSR, the LDM metadata partition, and unknown OEM partitions.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Disk is in use", "Access Denied", "There are not enough resources to complete the operation.", "Cache out of date", "The disk has not been initialized.", "The disk is offline.", "Cannot clear with OEM partitions present. To clear OEM partitions, use the RemoveOEM flag.", "Cannot clear with data partitions present. To clear data partitions, use the RemoveData flag.", "Operation not supported on a critical disk."} : Amended ToSubclass] uint32 Clear([In,Description("This parameter indicates that it is OK to remove data partitions from the disk. If this parameter is FALSE or NULL, Clear will fail in the presence of a data partition.") : Amended ToSubclass] boolean RemoveData,[In,Description("This parameter indicates that it is OK to remove OEM and other special partitions. If this parameter is FALSE or not specified, Clear will fail in the presence of these types of partitions.") : Amended ToSubclass] boolean RemoveOEM,[In,Description("If TRUE, this parameter instructs Clear to zero out the entire disk in addition to removing all partition information. If the parameter is FALSE or NULL, only the first and last megabyte of the disk is zeroed.") : Amended ToSubclass] boolean ZeroOutEntireDisk,[Out] MSFT_ExtendedStatus ExtendedStatus);
  [Description("This method converts the partition style of an already initialized disk.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Disk is in use", "Access Denied", "There are not enough resources to complete the operation.", "Cache out of date", "The disk has not been initialized.", "The disk is read only.", "The disk is offline.", "Operation not supported on a critical disk.", "Cannot convert the style of a disk with data or other known partitions on it.", "The disk is not large enough to support a GPT partition style."} : Amended ToSubclass] uint32 ConvertStyle([In,Values{"MBR", "GPT"} : Amended ToSubclass] uint16 PartitionStyle,[Out] MSFT_ExtendedStatus ExtendedStatus);
  [Description("Takes the disk offline.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Disk is in use", "Access Denied", "There are not enough resources to complete the operation.", "Cache out of date", "Operation not supported on a critical disk."} : Amended ToSubclass] uint32 Offline([Out] MSFT_ExtendedStatus ExtendedStatus);
  [Description("Brings the disk online.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Disk is in use", "Access Denied", "There are not enough resources to complete the operation.", "Cache out of date"} : Amended ToSubclass] uint32 Online([Out] MSFT_ExtendedStatus ExtendedStatus);
  [Description("Sets various attributes and properties of the disk. The disk must be online for most attributes to be set.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Disk is in use", "Access Denied", "There are not enough resources to complete the operation.", "Cache out of date", "The disk has not been initialized.", "The disk is offline.", "A parameter is not valid for this type of partition.", "Operation not supported on a critical disk."} : Amended ToSubclass] uint32 SetAttributes([In,Description("If TRUE, the disk will be made read-only. If FALSE, the disk will become writable.") : Amended ToSubclass] boolean IsReadOnly,[In,Description("Sets the MBR signature of the disk. This parameter is only valid when the disk's PartitionStyle property is set to 1 - 'MBR'. An error will be returned if the disk is any other partition style.") : Amended ToSubclass] uint32 Signature,[In,Description("Sets the GPT guid of the disk. This parameter is only valid when the disk's PartitionStyle property is set to 2 - 'GPT'. An error will be returned if the disk is any other partition style.") : Amended ToSubclass] string Guid,[Out] MSFT_ExtendedStatus ExtendedStatus);
  [Description("This method refreshes the cached disk layout information. This is useful when the backing disk has changed size (if the backing data store is a VHD or a virtual disk).") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Disk is in use", "Access Denied", "There are not enough resources to complete the operation.", "Cache out of date", "The disk has not been initialized.", "The disk is offline."} : Amended ToSubclass] uint32 Refresh([Out] MSFT_ExtendedStatus ExtendedStatus);
};

[Description("Provides extra status information about an extrinsic method's invocation") : Amended ToSubclass,ClassVersion("1.0") : Amended,AMENDMENT, LOCALE("MS_809")] 
class MSFT_ExtendedStatus : CIM_Error
{
};

[ClassVersion("1.0") : Amended,Description("This class represents an initiator on the host system.") : Amended ToSubclass,AMENDMENT, LOCALE("MS_809")] 
class MSFT_InitiatorPort
{
  [Values{"Unknown", "Other", "Not present", "Fabric", "Public Loop", "FL Port", "Fabric Port", "Fabric expansion port", "Generic Fabric Port", "Private Loop", "Point to Point"} : Amended ToSubclass] uint16 PortType;
  [Values{"Other", "Fibre Channel", "iSCSI", "SAS"} : Amended ToSubclass] uint16 ConnectionType;
  [Values{"Unknown", "Operational", "User Offline", "Bypassed", "In diagnostics mode", "Link Down", "Port Error", "Loopback"} : Amended ToSubclass] uint16 OperationalStatus[];
  [Description("SetNodeAddress") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter"} : Amended ToSubclass] uint32 SetNodeAddress([In] string NodeAddress,[Out] MSFT_ExtendedStatus ExtendedStatus);
};

[Version("1.0") : Amended,Description("Association between InitiatorPort and iSCSIConnection") : Amended ToSubclass,AMENDMENT, LOCALE("MS_809")] 
class MSFT_InitiatorPortToiSCSIConnection
{
};

[Version("1.0") : Amended,Description("Association between InitiatorPort and iSCSISession") : Amended ToSubclass,AMENDMENT, LOCALE("MS_809")] 
class MSFT_InitiatorPortToiSCSISession
{
};

[Version("1.0") : Amended,Description("Association between InitiatorPort and iSCSITarget") : Amended ToSubclass,AMENDMENT, LOCALE("MS_809")] 
class MSFT_InitiatorPortToiSCSITarget
{
};

[ClassVersion("1.0") : Amended,Description("Represents a partition on a disk.") : Amended ToSubclass,AMENDMENT, LOCALE("MS_809")] 
class MSFT_Partition
{
  [key,Description("This is one of two keys required to uniquely identify the partition. This property is identical to the ObjectId field of the disk object which contains this partition.") : Amended ToSubclass] string DiskId;
  [Description("The operating system's number for the disk that contains this partition. Disk numbers may not necessarily remain the same across reboots.") : Amended ToSubclass] uint32 DiskNumber;
  [Description("The operating system's number for the partition. Ordering is based on the partition's offset, relative to other partitions. This means that the value for this property may change based off of the partition confuguration in the offset range preceding this partition.") : Amended ToSubclass] uint32 PartitionNumber;
  [Description("The currently assigned drive letter to the partition. This property is NULL if no drive letter has been assigned.") : Amended ToSubclass] char16 DriveLetter;
  [Description("This property is an array of all the various mount points for the partition. This list includes drive letters, as well as mounted folders.") : Amended ToSubclass] string AccessPaths[];
  [Values{"Unknown", "Online", "No Media", "Failed", "Offline"} : Amended ToSubclass] uint16 OperationalStatus;
  [key,Description("This is the second of two keys required to uniquely identify the partition. This property indicates the partition's offset from the beginning of the disk, measured in bytes.") : Amended ToSubclass,Units("Bytes") : Amended ToSubclass] uint64 Offset;
  [Description("Total size of the partition, measured in bytes.") : Amended ToSubclass,Units("Bytes") : Amended ToSubclass] uint64 Size;
  [Description("This property indicates the partition's MBR type. This property is only valid when the disk's PartitionStyle property is set to 1 - 'MBR' and will be NULL for all other partition styles.") : Amended ToSubclass,Values{"FAT12", "FAT16", "Extended", "Huge", "IFS", "FAT32"} : Amended ToSubclass] uint16 MbrType;
  [Description("This property indicates the partition's GPT type. This property is only valid when the disk's PartitionStyle property is set to 2 - 'GPT' and will be NULL for all other partition styles.") : Amended ToSubclass,Values{"System Partition", "Microsoft Reserved", "Basic data", "LDM Metadata", "LDM Data", "Microsoft Recovery"} : Amended ToSubclass] string GptType;
  [Description("This property is a string representation of the partition's GPT GUID. This property is only valid if the disk's PartitionStyle property is set to 2 - 'GPT' and will be NULL for all other partition stlyes.") : Amended ToSubclass] string Guid;
  [Description("Signifies whether or not the partition is active and can be booted. This property is only relevant for MBR disks.") : Amended ToSubclass] boolean IsActive;
  [Description("If this property is set to TRUE, the partition is not detected by the mount manager. As a result, the partition does not receive a drive letter, does not receive a volume GUID path, does not host volume mount points, and is not enumerated by calls to FindFirstVolume and FindNextVolume. This ensures that applications such as disk defragmenter do not access the partition. The Volume Shadow Copy Service (VSS) uses this attribute on its shadow copies.") : Amended ToSubclass] boolean IsHidden;
  [Description("If this property is set to TRUE, the partition is a shadow copy of another partition. This attribute is used by the Volume Shadow Copy service (VSS). This attribute is an indication for file system filter driver-based software (such as antivirus programs) to avoid attaching to the volume. An application can use this attribute to differentiate a shadow copy partition from a production partition. For example, an application that performs a fast recovery will break a shadow copy virtual disk by clearing the read-only and hidden attributes and this attribute. This attribute is set when the shadow copy is created and cleared when the shadow copy is broken.") : Amended ToSubclass] boolean IsShadowCopy;
  [Description("If this property is set to TRUE, the operating system does not assign a drive letter automatically when the partition is discovered. This is only honored for GPT disks and is assumed to be FALSE for MBR disks. This attribute is useful in storage area network (SAN) environments.") : Amended ToSubclass] boolean NoDefaultDriveLetter;
  [Description("Deletes the partition and corresponding volume.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "In use", "Access denied", "There are not enough resources to complete the operation.", "The partition was deleted, although its access paths were not.", "The extended partition still contains other partitions."} : Amended ToSubclass] uint32 DeleteObject([Out] MSFT_ExtendedStatus ExtendedStatus);
  [Description("This method returns all mount points and drive letters that can be used to access the partition.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter"} : Amended ToSubclass] uint32 GetAccessPaths([Out] string AccessPaths[],[Out] MSFT_ExtendedStatus ExtendedStatus);
  [Description("This method adds a mount path or drive letter assignment to the partition. The AccessPath and AssignDriveLetter parameters are mutually exclusive, and will result in an invalid parameters error if both are specified at once. This method adds the access path by creating a mounted foulder (also called a volume mount point). Note that mounted folders are supported only on NTFS formatted partitions. This method returns an error if the path specified in AccessPath is a folder that is already in use (even if the directory is empty) or if it contains a path to a non-empty directory.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Access denied", "There are not enough resources to complete the operation.", "The requested access path is already in use.", "Cannot assign access paths to hidden partitions.", "The access path is not valid."} : Amended ToSubclass] uint32 AddAccessPath([In,Description("This parameter is a string indicating the access path, which is a user-mode path that can be used to open the partition. An access path can be a drive letter (in the form C: or C:\\) or a path to an empty directory on an NTFS volume. The access path string does not require a trailing backslash.") : Amended ToSubclass] string AccessPath,[In,Description("If this parameter is specified as TRUE, the next available drive letter will be assigned to the partition.") : Amended ToSubclass] boolean AssignDriveLetter,[Out] MSFT_ExtendedStatus ExtendedStatus);
  [Description("This method removes the access path from the partition regardless of whether or not it is in use.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Access denied", "There are not enough resources to complete the operation.", "Cannot remove a volume GUID path.", "Cannot remove the drive letter of a boot or paging file partition.", "The access path is not valid."} : Amended ToSubclass] uint32 RemoveAccessPath([In] string AccessPath,[Out] MSFT_ExtendedStatus ExtendedStatus);
  [Description("This method resizes the partition and any associated filesystem to the size specified by the Size parameter. If the size is outside of the bounds returned by the GetSupportedSize method, then this method will fail with a well defined error code. The resize operation is only supported on NTFS formatted partitions and RAW partitions.\nIf the specified size is smaller than the original size, this method will move files so that they are as close as possible to the beginning of the partition, in order to consolidate free space at the end of the partition. It then truncates the file system volume, reducing its size, and then truncates the partition.\nIn almost all cases, there will be some files that are immovable. For example, file system and storage driver metadata files are likely to be immovable. For this reason, the amount by which a partition can be shrunk is usually less than the total amount of free space on the partition.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "In Use", "Size Not Supported", "Access denied", "There are not enough resources to complete the operation.", "Cannot shrink a partition containing a volume with errors.", "Cannot resize a partition containing an unknown file system."} : Amended ToSubclass] uint32 Resize([In] uint64 Size,[Out] MSFT_ExtendedStatus ExtendedStatus);
  [Description("This method returns the minimum and maximum sizes that the partition can be resized to using the Resize method. The minimum size is determined by the disk defragmenter and takes into account the location of immovable files. The maximum size is determined by adding the size of any free extents immediately after the current partition.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "In Use", "Access denied", "There are not enough resources to complete the operation.", "Cannot shrink a partition containing a volume with errors.", "Cannot resize a partition containing an unknown file system."} : Amended ToSubclass] uint32 GetSupportedSize([Out,Description("This output parameter contains the minimum size that this partition can become. Note that if this method is run multiple times, this value can change slightly depending on the placement of various temporary files.") : Amended ToSubclass] uint64 SizeMin,[Out,Description("This output parameter contains the maximum size that this partition can become.") : Amended ToSubclass] uint64 SizeMax,[Out] MSFT_ExtendedStatus ExtendedStatus);
  [Description("Onlines the partition by mounting the associated volume (if one exists).") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "In Use", "Access denied", "There are not enough resources to complete the operation.", "This operation is only supported on data partitions."} : Amended ToSubclass] uint32 Online([Out] MSFT_ExtendedStatus ExtendedStatus);
  [Description("Offlines the partition by dismounting the associated volume (if one exists). The partition remains offline until explicitly onlined, or an access path is added to the partition.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "In Use", "Access denied", "There are not enough resources to complete the operation.", "This operation is only supported on data partitions."} : Amended ToSubclass] uint32 Offline([Out] MSFT_ExtendedStatus ExtendedStatus);
  [Description("Sets various attributes and properties of the partition.") : Amended ToSubclass,Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "In Use", "Access denied", "There are not enough resources to complete the operation.", "Cache out of date", "The disk has not been initialized.", "The disk is offline.", "A parameter is not valid for this type of partition.", "The operation is not allowed on a system or critical partition."} : Amended ToSubclass] uint32 SetAttributes([In] boolean IsReadOnly,[In] boolean NoDefaultDriveLetter,[In] boolean IsActive,[In] boolean IsHidden,[Out] MSFT_ExtendedStatus ExtendedStatus);
};

[Version("1.0") : Amended,Description("iSCSI Connection Class") : Amended ToSubclass,AMENDMENT, LOCALE("MS_809")] 
class MSFT_iSCSIConnection
{
};

[Version("1.0") : Amended,Description("Association between iSCSIConnection and Disk") : Amended ToSubclass,AMENDMENT, LOCALE("MS_809")] 
class MSFT_iSCSIConnectionToDisk
{
};

[Version("1.0") : Amended,Description("Association between iSCSIConnection and iSCSITargetPortal") : Amended ToSubclass,AMENDMENT, LOCALE("MS_809")] 
class MSFT_iSCSIConnectionToiSCSITargetPortal
{
};

[Version("1.0") : Amended,Description("iSCSI Session class") : Amended ToSubclass,AMENDMENT, LOCALE("MS_809")] 
class MSFT_iSCSISession
{
};

[Version("1.0") : Amended,Description("Association between iSCSISession and Disk") : Amended ToSubclass,AMENDMENT, LOCALE("MS_809")] 
class MSFT_iSCSISessionToDisk
{
};

[Version("1.0") : Amended,Description("Association between iSCSISession and iSCSIConnection") : Amended ToSubclass,AMENDMENT, LOCALE("MS_809")] 
class MSFT_iSCSISessionToiSCSIConnection
{
};

[Version("1.0") : Amended,Description("Association between iSCSISession and iSCSITargetPortal") : Amended ToSubclass,AMENDMENT, LOCALE("MS_809")] 
class MSFT_iSCSISessionToiSCSITargetPortal
{
};

[Version("1.0") : Amended,Description("Class for doing operations to iSCSI Target") : Amended ToSubclass,AMENDMENT, LOCALE("MS_809")] 
class MSFT_iSCSITarget
{
};

[Version("1.0") : Amended,Description("This class will be used for iSCSI discovery logins.") : Amended ToSubclass,AMENDMENT, LOCALE("MS_809")] 
class MSFT_iSCSITargetPortal
{
};

[Version("1.0") : Amended,Description("Association between iSCSITarget and iSCSIConnection") : Amended ToSubclass,AMENDMENT, LOCALE("MS_809")] 
class MSFT_iSCSITargetToiSCSIConnection
{
};

[Version("1.0") : Amended,Description("Association between iSCSITarget and iSCSISession") : Amended ToSubclass,AMENDMENT, LOCALE("MS_809")] 
class MSFT_iSCSITargetToiSCSISession
{
};

[Version("1.0") : Amended,Description("Association between iSCSITarget and iSCSITargetPortal") : Amended ToSubclass,AMENDMENT, LOCALE("MS_809")] 
class MSFT_iSCSITargetToiSCSITargetPortal
{
};
