// Copyright (c) 1997-2008 Microsoft Corporation, All Rights Reserved

#pragma autorecover
#pragma classflags(64)
#pragma namespace("\\\\.\\root\\cimv2\\power")
instance of __namespace{ name="ms_804";};
#pragma namespace("\\\\.\\root\\cimv2\\power\\ms_804")

[Description("ManagedElement is an abstract class that provides a common superclass (or top of the inheritance tree) for the non-association classes in the CIM Schema.") : Amended ToSubclass,AMENDMENT, LOCALE(0x0804)] 
class CIM_ManagedElement
{
  [Description("The Caption property is a short textual description (one- line string) of the object.") : Amended ToSubclass] string Caption;
  [Description("The Description property provides a textual description of the object.") : Amended ToSubclass] string Description;
  [Description("A user-friendly name for the object. This property allows each instance to define a user-friendly name in addition to its key properties, identity data, and description information. \nNote that the Name property of ManagedSystemElement is also defined as a user-friendly name. But, it is often subclassed to be a Key. It is not reasonable that the same property can convey both identity and a user-friendly name, without inconsistencies. Where Name exists and is not a Key (such as for instances of LogicalDevice), the same information can be present in both the Name and ElementName properties.") : Amended ToSubclass] string ElementName;
};

[Description("CIM_Component is a generic association used to establish 'part of' relationships between Managed Elements. For example, it could be used to define the components or parts of a System.") : Amended ToSubclass,AMENDMENT, LOCALE(0x0804)] 
class CIM_Component
{
  [Key,Description("The parent element in the association.") : Amended ToSubclass] CIM_ManagedElement Ref GroupComponent;
  [Key,Description("The child element in the association.") : Amended ToSubclass] CIM_ManagedElement Ref PartComponent;
};

[Description("CIM_SettingData is used to represent configuration and and operational parameters for CIM_ManagedElement instances. There are a number of different uses of CIM_SettingData supported in the model today. Additional uses may be defined in the future.\nInstances of CIM_SettingData may represent Aspects of a CIM_ManagedElement instance. This is modeled using the CIM_SettingsDefineState association. CIM_SettingData may be used to define capabilities when associated to an instance of CIM_Capabilities through the CIM_SettingsDefineCapabilities association. \nInstances of CIM_SettingData may represent different types of configurations for a CIM_ManagedElement, including persistent configurations, in progress configuration changes, or requested configurations. The CIM_ElementSettingData association is used to model the relationship between a CIM_SettingData instance and the CIM_ManagedElement for which it is a configuration. \nWhen an instance of CIM_SettingData represents a configuration, the current operational values for the parameters of the element are reflected by properties in the Element itself or by properties in its associations. These properties do not have to be the same values that are present in the SettingData object. For example, a modem might have a SettingData baud rate of 56Kb/sec but be operating at 19.2Kb/sec. \nNote: The CIM_SettingData class is very similar to CIM_Setting, yet both classes are present in the model because many implementations have successfully used CIM_Setting. However, issues have arisen that could not be resolved without defining a new class. Therefore, until a new major release occurs, both classes will exist in the model. Refer to the Core White Paper for additional information. SettingData instances can be aggregated together into higher- level SettingData objects using ConcreteComponent associations.") : Amended ToSubclass,AMENDMENT, LOCALE(0x0804)] 
class CIM_SettingData : CIM_ManagedElement
{
  [Key,Description("Within the scope of the instantiating Namespace, InstanceID opaquely and uniquely identifies an instance of this class. To ensure uniqueness within the NameSpace, the value of InstanceID should be constructed using the following \"preferred\" algorithm: \n<OrgID>:<LocalID> \nWhere <OrgID> and <LocalID> are separated by a colon (:), and where <OrgID> must include a copyrighted, trademarked, or otherwise unique name that is owned by the business entity that is creating or defining the InstanceID or that is a registered ID assigned to the business entity by a recognized global authority. (This requirement is similar to the <Schema Name>_<Class Name> structure of Schema class names.) In addition, to ensure uniqueness, <OrgID> must not contain a colon (:). When using this algorithm, the first colon to appear in InstanceID must appear between <OrgID> and <LocalID>. \n<LocalID> is chosen by the business entity and should not be reused to identify different underlying (real-world) elements. If the above \"preferred\" algorithm is not used, the defining entity must assure that the resulting InstanceID is not reused across any InstanceIDs produced by this or other providers for the NameSpace of this instance. \nFor DMTF-defined instances, the \"preferred\" algorithm must be used with the <OrgID> set to CIM.") : Amended ToSubclass] string InstanceID;
  [Description("The user-friendly name for this instance of SettingData. In addition, the user-friendly name can be used as an index property for a search or query. (Note: The name does not have to be unique within a namespace.)") : Amended ToSubclass] string ElementName;
  [Description("An instance of CIM_SettingData may correspond to a well-known configuration that exists for an associated CIM_ManagedElement. If the ConfigurationName property is non-NULL, the instance of CIM_SettingData shall correspond to a well-known configuration for a Managed Element, the value of the ConfigurationName property shall be the name of the configuration, and the ChangeableType property shall have the value 0 or 2. A value of NULL for the ConfigurationName property shall mean that the instance of CIM_SettingData does not correspond to a well-known configuration for a Managed Element or that this information is unknown.") : Amended ToSubclass] string ConfigurationName;
  [Description("Enumeration indicating the type of setting. 0 \"Not Changeable - Persistent\" indicates the instance of SettingData represents primordial settings and shall not be modifiable. 1 \"Changeable - Transient\" indicates the SettingData represents modifiable settings that are not persisted. Establishing persistent settings from transient settings may be supported. 2 \"Changeable - Persistent\" indicates the SettingData represents a persistent configuration that may be modified. 3 \"Not Changeable - Transient\" indicates the SettingData represents a snapshot of the settings of the associated ManagedElement and is not persistent.") : Amended ToSubclass,ValueMap{"0", "1", "2", "3"} : Amended ToSubclass,Values{"Not Changeable - Persistent", "Changeable - Transient", "Changeable - Persistent", "Not Changeable - Transient"} : Amended ToSubclass] uint16 ChangeableType;
};

[Description("ElementSettingData represents the association between ManagedElements and applicable setting data. This association also describes whether this is a default or current setting. Each non-null, non-key property of the associated SettingData instance defines a setting value for the associated ManagedElement. The properties, IsDefault, IsCurrent, IsNext, IsMinimum, IsMaximum, and IsPending further qualify those setting values. \nNote: the referenced SettingData instance does not reflect the current desired state of the referenced ManagedElement unless IsCurrent = \"Is Current\". \nWhen IsMinimum and/or IsMaximum properties have the value \"Is Minimum\" or \"Is Maximum\" respectively, the referenced SettingData instance reflects desired minimum or maximum values respectively. When IsMinimum and IsMaximum have any other value, the referenced SettingData reflects actual desired values.") : Amended ToSubclass,AMENDMENT, LOCALE(0x0804)] 
class CIM_ElementSettingData
{
  [Key,Description("The managed element.") : Amended ToSubclass] CIM_ManagedElement Ref ManagedElement;
  [Key,Description("The SettingData object that is associated with the element.") : Amended ToSubclass] CIM_SettingData Ref SettingData;
  [Description("An enumerated integer that indicates that the referenced setting is a default setting for the element or that this information is unknown.") : Amended ToSubclass,ValueMap{"0", "1", "2"} : Amended ToSubclass,Values{"Unknown", "Is Default", "Is Not Default"} : Amended ToSubclass] uint16 IsDefault;
  [Description("An enumerated integer that indicates that the referenced SettingData represents the last requested values for attributes of the Managed Element or that this information is unknown. \nAttributes of the SettingData itself indicate whether it represents the last configuration applied to the ManagedElement or is a transient snapshot of the requested settings. Current operational characteristics of a ManagedElement should be represented with properties of the ManagedElement. element or that this information is unknown. \nFor a given ManagedElement and all instances of a SettingData subclass, there shall be at most one instance of ElementSettingData which references the ManagedElement and an instance of the SettingData sub-class where there is a specified non-null, non-key property of the SettingData sub-class, and the IsMaximum property on the referencing ElementSettingData instance has a value of \"Is Maximum\" or the IsMinimum property on the referencing ElementSettingData instance has a value of \"Is Minimum\" and the IsCurrent property on the referencing ElementSettingData instance has a value of \"Is Current\". There shall be at most one instance of ElementSettingData which references a ManagedElement and an instance of a SettingData sub-class where the IsCurrent property has a value of \"Is Current\" and the IsMinimum property does not have a value of \"Is Minimum\" and the IsMaximum property does not have a value of \"Is Maximum\".") : Amended ToSubclass,ValueMap{"0", "1", "2"} : Amended ToSubclass,Values{"Unknown", "Is Current", "Is Not Current"} : Amended ToSubclass] uint16 IsCurrent;
  [Description("An enumerated integer indicating whether or not the referenced setting is the next setting to be applied. For example, the application could take place on a re-initialization, reset, reconfiguration request. This could be a permanent setting, or a setting used only one time, as indicated by the flag. If it is a permanent setting then the setting is applied every time the managed element reinitializes, until this flag is manually reset. However, if it is single use, then the flag is automatically cleared after the settings are applied. Also note that if this flag is specified (i.e. set to value other than \"Unknown\"), then this takes precedence over any SettingData that may have been specified as Default. For example: If the managed element is a computer system, and the value of this flag is \"Is Next\", then the setting will be effective next time the system resets. And, unless this flag is changed, it will persist for subsequent system resets. However, if this flag is set to \"Is Next For Single Use\", then this setting will only be used once and the flag would be reset after that to \"Is Not Next\". So, in the above example, if the system reboots in a quick succession, the setting will not be used at the second reboot.") : Amended ToSubclass,ValueMap{"0", "1", "2", "3"} : Amended ToSubclass,Values{"Unknown", "Is Next", "Is Not Next", "Is Next For Single Use"} : Amended ToSubclass] uint16 IsNext;
  [Description("This property affects the interpretation of all non-null, non-enumerated, non-binary, numeric, non-key properties of the associated SettingData instance. All other properties of the associated SettingData instance are not affected by this property. \nNote: It is assumed that the semantics of each property of this set are designed to be compared mathematically. \nWhen IsMinimum = \"Is Miniumum\", this property indicates that the affected property values specified in the associated SettingData instance shall define desired minimum setting values. The operational minimum values should be modeled as a properties of the CIM_ManagedElement instance.\nWhen IsMinimum = \"Is Not Miniumum\", this property indicates that the affected property values specified in the associated SettingData instance shall not define desired minimum setting values. \nWhen IsMinimum = \"Unknown\", this property indicates that the affected property values specified in the associated SettingData instance may correspond to minimum desired setting values. \nWhen IsMinimum = \"Not Applicable\", this property indicates that the affected property values specified in the associated SettingData instance shall not be interpreted with respect to whether each defines a desired minimum.") : Amended ToSubclass,ValueMap{"0", "1", "2", "3"} : Amended ToSubclass,Values{"Unknown", "Not Applicable", "Is Minimum", "Is Not Minimum"} : Amended ToSubclass] uint16 IsMinimum;
  [Description("This property affects the interpretation of all non-null, non-enumerated, non-binary, numeric, non-key properties of the associated SettingData instance. All other properties of the associated SettingData instance are not affected by this property. \nNote: It is assumed that the semantics of each property of this set are designed to be compared mathematically. \nWhen IsMaximum = \"Is Maxiumum\", this property indicates that the affected property values specified in the associated SettingData instance shall define desired maximum setting values. The operational maximum values should be modeled as a properties of the CIM_ManagedElement instance.\nWhen IsMaximum = \"Is Not Maxiumum\", this property indicates that the affected property values specified in the associated SettingData instance shall not define desired maximum setting values. \nWhen IsMaximum = \"Unknown\", this property indicates that the affected property values specified in the associated SettingData instance may correspond to maximum desired setting values. \nWhen IsMaximum = \"Not Applicable\", this property indicates that the affected property values specified in the associated SettingData instance shall not be interpreted with respect to whether each defines a desired maximum.") : Amended ToSubclass,ValueMap{"0", "1", "2", "3"} : Amended ToSubclass,Values{"Unknown", "Not Applicable", "Is Maximum", "Is Not Maximum"} : Amended ToSubclass] uint16 IsMaximum;
  [Description("An enumerated integer that indicates whether or not the referenced CIM_SettingData instance represents outstanding changes to the configuration of the referenced CIM_ManagedElement that are known to be pending and are in the process of being applied. A value of 0 \"Unknown\" indicates that the referenced instance of CIM_SettingData may represent the last configuration applied to the referenced CIM_ManagedElement. A value of 2 \"Is Pending\" shall indicate that the referenced instance of CIM_SettingData represents outstanding changes to the configuration of the referenced CIM_ManagedElement that are known to be pending. A value of 3 \"Is Not Pending\" shall indicate that the referenced instance of CIM_SettingData does not represent outstanding changes to the configuration of the referenced CIM_ManagedElement.") : Amended ToSubclass,ValueMap{"0", "2", "3", "..", "32768.."} : Amended ToSubclass,Values{"Unknown", "Is Pending", "Is Not Pending", "DMTF Reserved", "Vendor Reserved"} : Amended ToSubclass] uint16 IsPending;
};

[Description("Capabilities is an abstract class whose subclasses describe abilities and/or potential for use. For example, one may describe the maximum number of VLANs that can be supported on a system using a subclass of Capabilities. Capabilities are tied to the elements which they describe using the ElementCapabilities association. Note that the cardinality of the ManagedElement reference is Min(1). This cardinality mandates the instantiation of the ElementCapabilities association for the referenced instance of Capabilities. ElementCapabilities describes the existence requirements for the referenced instance of ManagedElement. Specifically, the ManagedElement MUST exist and provide the context for the Capabilities. Note that Capabilities do not indicate what IS configured or operational, but what CAN or CANNOT exist, be defined or be used. Note that it is possible to describe both supported and excluded abilities and functions (both capabilities and limitations) using this class.") : Amended ToSubclass,AMENDMENT, LOCALE(0x0804)] 
class CIM_Capabilities : CIM_ManagedElement
{
  [Key,Description("Within the scope of the instantiating Namespace, InstanceID opaquely and uniquely identifies an instance of this class. In order to ensure uniqueness within the NameSpace, the value of InstanceID SHOULD be constructed using the following 'preferred' algorithm: \n<OrgID>:<LocalID> \nWhere <OrgID> and <LocalID> are separated by a colon ':', and where <OrgID> MUST include a copyrighted, trademarked or otherwise unique name that is owned by the business entity creating/defining the InstanceID, or is a registered ID that is assigned to the business entity by a recognized global authority (This is similar to the <Schema Name>_<Class Name> structure of Schema class names.) In addition, to ensure uniqueness <OrgID> MUST NOT contain a colon (':'). When using this algorithm, the first colon to appear in InstanceID MUST appear between <OrgID> and <LocalID>. \n<LocalID> is chosen by the business entity and SHOULD not be re-used to identify different underlying (real-world) elements. If the above 'preferred' algorithm is not used, the defining entity MUST assure that the resultant InstanceID is not re-used across any InstanceIDs produced by this or other providers for this instance's NameSpace. \nFor DMTF defined instances, the 'preferred' algorithm MUST be used with the <OrgID> set to 'CIM'.") : Amended ToSubclass] string InstanceID;
  [Description("The user friendly name for this instance of Capabilities. In addition, the user friendly name can be used as a index property for a search of query. (Note: Name does not have to be unique within a namespace.)") : Amended ToSubclass] string ElementName;
  [Description("Method to create a set of supported SettingData elements, from two sets of SettingData elements, provided by the caller. \nCreateGoal should be used when the SettingData instances that represents the goal will not persist beyond the execution of the client and where those instances are not intended to be shared with other, non-cooperating clients. \nBoth TemplateGoalSettings and SupportedGoalSettings are represented as strings containing EmbeddedInstances of a CIM_SettingData subclass. These embedded instances do not exist in the infrastructure supporting this method but are maintained by the caller/client. \nThis method should return CIM_Error(s) representing that a single named property of a setting (or other) parameter (either reference or embedded object) has an invalid value or that an invalid combination of named properties of a setting (or other) parameter (either reference or embedded object) has been requested. \nIf the input TemplateGoalSettings is NULL or the empty string, this method returns a default SettingData element that is supported by this Capabilities element. \nIf the TemplateGoalSettings specifies values that cannot be supported, this method shall return an appropriate CIM_Error and should return a best match for a SupportedGoalSettings. \nThe client proposes a goal using the TemplateGoalSettings parameter and gets back Success if the TemplateGoalSettings is exactly supportable. It gets back \"Alternative Proposed\" if the output SupportedGoalSettings represents a supported alternative. This alternative should be a best match, as defined by the implementation. \nIf the implementation is conformant to a RegisteredProfile, then that profile may specify the algorithms used to determine best match. A client may compare the returned value of each property against the requested value to determine if it is left unchanged, degraded or upgraded. \n\nOtherwise, if the TemplateGoalSettings is not applicable an \"Invalid Parameter\" error is returned. \n\nWhen a mutually acceptable SupportedGoalSettings has been achieved, the client may use the contained SettingData instances as input to methods for creating a new object ormodifying an existing object. Also the embedded SettingData instances returned in the SupportedGoalSettings may be instantiated via CreateInstance, either by a client or as a side-effect of the execution of an extrinsic method for which the returned SupportedGoalSettings is passed as an embedded instance.") : Amended ToSubclass,ValueMap{"0", "1", "2", "3", "4", "5", "6", "..", "32768..65535"} : Amended ToSubclass,Values{"Success", "Not Supported", "Unknown", "Timeout", "Failed", "Invalid Parameter", "Alternative Proposed", "DMTF Reserved", "Vendor Specific"} : Amended ToSubclass] uint16 CreateGoalSettings([IN,Description("If provided, TemplateGoalSettings are elements of class CIM_SettingData, or a derived class, that is used as the template to be matched. . \nAt most, one instance of each SettingData subclass may be supplied. \nAll SettingData instances provided by this property are interpreted as a set, relative to this Capabilities instance. \nSettingData instances that are not relevant to this instance are ignored. \nIf not provided, it shall be set to NULL. In that case, a SettingData instance representing the default settings of the associated ManagedElement is used.") : Amended ToSubclass] string TemplateGoalSettings[],[IN,OUT,Description("SupportedGoalSettings are elements of class CIM_SettingData, or a derived class. \nAt most, one instance of each SettingData subclass may be supplied. \nAll SettingData instances provided by this property are interpreted as a set, relative to this Capabilities instance. \n\nTo enable a client to provide additional information towards achieving the TemplateGoalSettings, an input set of SettingData instances may be provided. If not provided, this property shall be set to NULL on input.. Note that when provided, what property values are changed, and how, is implementation dependent and may be the subject of other standards. \nIf provided, the input SettingData instances must be ones that the implementation is able to support relative to the ManagedElement associated via ElementCapabilities. Typically, the input SettingData instances are created by a previous instantiation of CreateGoalSettings. \nIf the input SupportedGoalSettings is not supported by the implementation, then an \"Invalid Parameter\" (5) error is returned by this call. In this case, a corresponding CIM_ERROR should also be returned. \nOn output, this property is used to return the best supported match to the TemplateGoalSettings. \nIf the output SupportedGoalSettings matches the input SupportedGoalSettings, then the implementation is unable to improve further towards meeting the TemplateGoalSettings.") : Amended ToSubclass] string SupportedGoalSettings[]);
};

[Description("CIM_ConcreteComponent is a generic association used to establish 'part of' relationships between ManagedElements. It is defined as a concrete subclass of the abstract CIM_Component class, to be used in place of many specific subclasses of Component that add no semantics, that is subclasses that do not clarify the type of composition, update cardinalities, or add or remove qualifiers. Note that when you define additional semantics for Component, this class must not be subclassed. Specific semantics continue to be defined as subclasses of the abstract CIM_Component. ConcreteComponent is limited in its use as a concrete form of a general composition. \n\nIt was deemed more prudent to create this concrete subclass than to change Component from an abstract to a concrete class. Industry usage and impact could not be anticipated.") : Amended ToSubclass,AMENDMENT, LOCALE(0x0804)] 
class CIM_ConcreteComponent : CIM_Component
{
  [Description("The parent element in the association.") : Amended ToSubclass] CIM_ManagedElement Ref GroupComponent;
  [Description("The child element in the association.") : Amended ToSubclass] CIM_ManagedElement Ref PartComponent;
};

[Description("This association indicates that the non-null, non-key set of properties of the component SettingData instance specifies some capabilities of the associated Capabilities instance. The interpretation of the set of properties in the associated SettingData is governed by the properties: PropertyPolicy and ValueRole.\nFor a particular Capabilities instance, the complete set of Component SettingData instances, together with properties of the Capabilities instance itself, defines the overall range of supported capabilities.\nPropertyPolicy determines whether the properties of the set are interpreted independently or as a whole (i.e. correlated.)\nValueRole further qualifies the members of the set.\nThis association eliminates the need to define and maintain corresponding property definitions and values in both a Capabilities subclass and a SettingData subclass.\nTypically these setting instances will be published along with the associated Capabilities instance and will not be modifiable by the client.") : Amended ToSubclass,AMENDMENT, LOCALE(0x0804)] 
class CIM_SettingsDefineCapabilities : CIM_Component
{
  [Description("The Capabilities instance.") : Amended ToSubclass] CIM_Capabilities Ref GroupComponent;
  [Description("A Setting used to define the associated Capabilities instance.") : Amended ToSubclass] CIM_SettingData Ref PartComponent;
  [Description("PropertyPolicy defines whether or not the non-null, non-key properties of the associated SettingData instance are treated independently or as a correlated set. For instance, an independent set of maximum properties might be defined, when there is no relationship between each property. On the other hand, several correlated sets of maximum properties might need to be defined when the maximum values of each are dependent on some of the others.") : Amended ToSubclass,ValueMap{"0", "1", "2.."} : Amended ToSubclass,Values{"Independent", "Correlated", "DMTF Reserved"} : Amended ToSubclass] uint16 PropertyPolicy;
  [Description("The ValueRole property indicates further semantics on the interpretation of the non-null, non-key properties of the Component SettingData.\n\"Default\" indicates that property values of the component SettingData instance will be used as default values, when a new SettingData instance is created for elements whose capabilities are defined by the associated Capabilities instance.\nAcross instances of settingdata, for particular properties having the same semantic purpose, at most one such settingdata instance shall be specified as a default.\n\"Optimal\" indicates that the SettingData instance represents optimal setting values for elements associated with the associated capabilities instance. Multiple component SettingData instances may be declared as optimal.\"Mean\" indicates that the non-null, non-key, non-enumerated, non-boolean, numeric properties of the associated SettingData instance represents an average point along some dimension. For different combinations of SettingData properties, multiple component SettingData instances may be declared as \"Mean\". \"Supported\" indicates that the non-null, non-key properties of the Component SettingData instance represents a set of supported property values that are not otherwise qualified.") : Amended ToSubclass,ValueMap{"0", "1", "2", "3", "4.."} : Amended ToSubclass,Values{"Default", "Optimal", "Mean", "Supported", "DMTF Reserved"} : Amended ToSubclass] uint16 ValueRole;
  [Description("The ValueRange property indicates further semantics on the interpretation of all non-null, non-key properties of the Component SettingData.\n\"Point\" indicates that this SettingData instance provides a single set of values.\n\"Minimums\", \"Maximums\", and \"Increments\", are only evaluated against non-null, non-key, non-enumerated, non-boolean, numeric properties of the SettingData instance. Each property of that set shall be mathematically comparable to other instances of that property.\n\"Minimums\" indicates that this SettingData instance provides minimum values for evaluated properties. When used with PropertyPolicy = \"Independent\", only one such setting per particular SettingData instance shall be specified for any Capabilities. Unless restricted by a Maximums on the same set of properties, all values that compare higher than the specified values are also considered to be supported by the associated capabilities instance. \n\"Maximums\" indicates that this SettingData instance provides maximum values for evaluated properties. When used with PropertyPolicy = \"Independent\", only one such setting per particular SettingData instance shall be specified for any Capabilities. Unless restricted by a Minimums on the same set of properties, all values that compare lower than the specified values are also considered to be supported by the associated capabilities instance.\n\"Increments\" indicates that this SettingData instance provides increment values for evaluated properties. For the associated Capabilities, if an evaluated property currently has no corresponding minimums or maximums, then the property has no affect. Otherwise, for each evaluated property: its value x shall be between the minimum and maximum, inclusively, and shall have the property that both the result of maximum minus x and the result of x minus minimum are each an integer multiple of the increment. If either minimum or maximum is not specified and the other is, then the missing value shall be respectively assumed to be the lowest or highest supported value for the property's data-type. Additionally, if both a minimum and a maximum are specified for an evaluated property, then the result of maximum minus minimum shall be an integer multiple of the increment.") : Amended ToSubclass,ValueMap{"0", "1", "2", "3", "4.."} : Amended ToSubclass,Values{"Point", "Minimums", "Maximums", "Increments", "DMTF Reserved"} : Amended ToSubclass] uint16 ValueRange;
};

[Description("ElementCapabilities represents the association between ManagedElements and their Capabilities. Note that the cardinality of the ManagedElement reference is Min(1). This cardinality mandates the instantiation of the ElementCapabilities association for the referenced instance of Capabilities. ElementCapabilities describes the existence requirements and context for the referenced instance of ManagedElement. Specifically, the ManagedElement MUST exist and provides the context for the Capabilities.") : Amended ToSubclass,AMENDMENT, LOCALE(0x0804)] 
class CIM_ElementCapabilities
{
  [Key,Description("The managed element.") : Amended ToSubclass] CIM_ManagedElement Ref ManagedElement;
  [Key,Description("The Capabilities object associated with the element.") : Amended ToSubclass] CIM_Capabilities Ref Capabilities;
  [Description("Characteristics provides descriptive information about the Capabilities. when the value 2 \"Default\" is specified, the associated Capabilities shall represent the default capabilities of the associated Managed Element \nwhen the value 2 \"Default\" is not specified, the Capabilities instance may represent the default capabilities of the Managed Element\nWhen the value 3 \"Current\" is specified, the associated Capabilities shall represent the current capabilities of the associated Managed Element\nWhen the value 3 \"Current\" is not specified, the Capabilities instance may represent the current capabilities of the Managed Element.") : Amended ToSubclass,ValueMap{"2", "3", "..", "32768..65535"} : Amended ToSubclass,Values{"Default", "Current", "DMTF Reserved", "Vendor Specific"} : Amended ToSubclass] uint16 Characteristics[];
};

[Description("The CIM_ElementConformsToProfile association defines the RegisteredProfiles to which the referenced ManagedElement is conformant. Note: This association may apply to any Managed Element. Typical usage will apply it to a higher level instance, such as a System, NameSpace, or Service. When applied to a higher level instance, all constituent parts MUST behave appropriately in support of the ManagedElement's conformance to the named RegisteredProfile.") : Amended ToSubclass,AMENDMENT, LOCALE(0x0804)] 
class CIM_ElementConformsToProfile
{
  [Key,Description("The RegisteredProfile to which the ManagedElement conforms.") : Amended ToSubclass] CIM_RegisteredProfile Ref ConformantStandard;
  [Key,Description("The ManagedElement that conforms to the RegisteredProfile.") : Amended ToSubclass] CIM_ManagedElement Ref ManagedElement;
};

[Description("A RegisteredProfile describes a set of CIM Schema classes with required properties and/or methods, necessary to manage a real-world entity or to support a usage scenario, in an interoperable fashion. RegisteredProfiles can be defined by the DMTF or other standards organizations. Note that this class should not be confused with CIM_Profile, which collects SettingData instances, to be applied as a 'configuration profile' for an element. \nA RegisteredProfile is a named 'standard' for CIM-based management of a particular System, subsystem, Service or other entity, for a specified set of uses. It is a complete, standalone definition, as opposed to the subclass RegisteredSubProfile, which requires a scoping profile for context. \nThe uses for a RegisteredProfile or SubProfile MUST be specified in the document that defines the profile. Examples of Profiles are to manage various aspects of an Operating System, Storage Array, or Database. The name of the profile is defined and scoped by its authoring organization.") : Amended ToSubclass,AMENDMENT, LOCALE(0x0804)] 
class CIM_RegisteredProfile : CIM_ManagedElement
{
  [Key,Description("Within the scope of the instantiating Namespace, InstanceID opaquely and uniquely identifies an instance of this class. In order to ensure uniqueness within the NameSpace, the value of InstanceID SHOULD be constructed using the following 'preferred' algorithm: \n<OrgID>:<LocalID> \nWhere <OrgID> and <LocalID> are separated by a colon ':', and where <OrgID> MUST include a copyrighted, trademarked or otherwise unique name that is owned by the business entity creating/defining the InstanceID, or is a registered ID that is assigned to the business entity by a recognized global authority. (This is similar to the <Schema Name>_<Class Name> structure of Schema class names.) In addition, to ensure uniqueness, <OrgID> MUST NOT contain a colon (':'). When using this algorithm, the first colon to appear in InstanceID MUST appear between <OrgID> and <LocalID>. \n<LocalID> is chosen by the organizational entity and SHOULD not be re-used to identify different underlying (real-world) elements. If the above 'preferred' algorithm is not used, the defining entity MUST assure that the resultant InstanceID is not re-used across any InstanceIDs produced by this or other providers for this instance's NameSpace. \nFor DMTF defined instances, the 'preferred' algorithm MUST be used with the <OrgID> set to 'CIM'.") : Amended ToSubclass] string InstanceID;
  [Description("The organization that defines this profile.") : Amended ToSubclass,ValueMap{"1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", ".."} : Amended ToSubclass,Values{"Other", "DMTF", "CompTIA", "Consortium for Service Innovation", "FAST", "GGF", "INTAP", "itSMF", "NAC", "Northwest Energy Efficiency Alliance", "SNIA", "TM Forum", "The Open Group", "ANSI", "IEEE", "IETF", "INCITS", "ISO", "W3C", "OGF", "DMTF Reserved"} : Amended ToSubclass] uint16 RegisteredOrganization;
  [Description("A free-form string providing a description of the organization when 1, \"Other\", is specified for the RegisteredOrganization.") : Amended ToSubclass] string OtherRegisteredOrganization;
  [Description("The name of this registered profile. Since multiple versions can exist for the same RegisteredName, the combination of RegisteredName, RegisteredOrganization, and RegisteredVersion MUST uniquely identify the registered profile within the scope of the organization.") : Amended ToSubclass] string RegisteredName;
  [Description("The version of this profile. The string representing the version MUST be in the form: \nM + \".\" + N + \".\" + U \nWhere: \nM - The major version (in numeric form) describing the profile's creation or last modification. \nN - The minor version (in numeric form) describing the profile's creation or last modification. \nU - The update (e.g. errata, patch, ..., in numeric form) describing the profile's creation or last modification.") : Amended ToSubclass] string RegisteredVersion;
  [Description("This property signifies the advertisement for the profile information. It is used by the advertising services of the WBEM infrastructure to determine what should be advertised, via what mechanisms. The property is an array so that the profile MAY be advertised using several mechanisms. Note: If this property is null/uninitialized, this is equivalent to specifying the value 2, \"Not Advertised\".") : Amended ToSubclass,ValueMap{"1", "2", "3"} : Amended ToSubclass,Values{"Other", "Not Advertised", "SLP"} : Amended ToSubclass] uint16 AdvertiseTypes[];
  [Description("A free-form string providing additional information related to the AdvertiseType. A description MUST be provided when the AdvertiseType is 1, \"Other\". An entry in this array corresponds to the entry in the AdvertiseTypes array at the same index. It is not expected that additional descriptions are needed if the Type is set to \"Not Advertised\" or \"SLP\". However, as the SLP template expands, or as other advertisement mechanisms are defined, support for additional descriptions may be needed. This array is defined to support this.") : Amended ToSubclass] string AdvertiseTypeDescriptions[];
};

[Description("CIM_ManagedSystemElement is the base class for the System Element hierarchy. Any distinguishable component of a System is a candidate for inclusion in this class. Examples of system components include: \n- software components such as application servers, databases, and applications \n- operating system components such as files, processes, and threads \n- device components such as disk drives, controllers, processors, and printers \n- physical components such as chips and cards.") : Amended ToSubclass,AMENDMENT, LOCALE(0x0804)] 
class CIM_ManagedSystemElement : CIM_ManagedElement
{
  [Description("A datetime value that indicates when the object was installed. Lack of a value does not indicate that the object is not installed.") : Amended ToSubclass] datetime InstallDate;
  [Description("The Name property defines the label by which the object is known. When subclassed, the Name property can be overridden to be a Key property.") : Amended ToSubclass] string Name;
  [Description("Indicates the current statuses of the element. 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. \n\"Stressed\" indicates that the element is functioning, but needs attention. Examples of \"Stressed\" states are overload, overheated, and so on. \n\"Predictive Failure\" indicates that an element is functioning nominally but predicting a failure in the near future. \n\"In Service\" describes an element being configured, maintained, cleaned, or otherwise administered. \n\"No Contact\" indicates that the monitoring system has knowledge of this element, but has never been able to establish communications with it. \n\"Lost Communication\" indicates that the ManagedSystem Element is known to exist and has been contacted successfully in the past, but is currently unreachable. \n\"Stopped\" and \"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 element might need to be updated. \n\"Dormant\" indicates that the element is inactive or quiesced. \n\"Supporting Entity in Error\" indicates that this element might be \"OK\" but that another element, on which it is dependent, is in error. An example is a network service or endpoint that cannot function due to lower-layer networking problems. \n\"Completed\" indicates that the element has completed its operation. This value should be combined with either OK, Error, or Degraded so that a client can tell if the complete operation Completed with OK (passed), Completed with Error (failed), or Completed with Degraded (the operation finished, but it did not complete OK or did not report an error). \n\"Power Mode\" indicates that the element has additional power model information contained in the Associated PowerManagementService association. \nOperationalStatus replaces the Status property on ManagedSystemElement to provide a consistent approach to enumerations, to address implementation needs for an array property, and to provide a migration path from today's environment to the future. This change was not made earlier because it required the deprecated qualifier. Due to the widespread use of the existing Status property in management applications, it is strongly recommended that providers or instrumentation provide both the Status and OperationalStatus properties. Further, the first value of OperationalStatus should contain the primary status for the element. When instrumented, Status (because it is single-valued) should also provide the primary status of the element.") : Amended ToSubclass,ValueMap{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "..", "0x8000.."} : Amended ToSubclass,Values{"Unknown", "Other", "OK", "Degraded", "Stressed", "Predictive Failure", "Error", "Non-Recoverable Error", "Starting", "Stopping", "Stopped", "In Service", "No Contact", "Lost Communication", "Aborted", "Dormant", "Supporting Entity in Error", "Completed", "Power Mode", "DMTF Reserved", "Vendor Reserved"} : Amended ToSubclass] uint16 OperationalStatus[];
  [Description("Strings describing the various OperationalStatus array values. For example, if \"Stopping\" is the value assigned to OperationalStatus, then this property may contain an explanation as to why an object is being stopped. Note that entries in this array are correlated with those at the same array index in OperationalStatus.") : Amended ToSubclass] string StatusDescriptions[];
  [Description("A string indicating the current status of the object. Various operational and non-operational statuses are defined. This property is deprecated in lieu of OperationalStatus, which includes the same semantics in its enumeration. This change is made for 3 reasons: \n1) Status is more correctly defined as an array. This definition overcomes the limitation of describing status using a single value, when it is really a multi-valued property (for example, an element might be OK AND Stopped. \n2) A MaxLen of 10 is too restrictive and leads to unclear enumerated values. \n3) The change to a uint16 data type was discussed when CIM V2.0 was defined. However, existing V1.0 implementations used the string property and did not want to modify their code. Therefore, Status was grandfathered into the Schema. Use of the deprecated qualifier allows the maintenance of the existing property, but also permits an improved definition using OperationalStatus.") : Amended ToSubclass,ValueMap{"OK", "Error", "Degraded", "Unknown", "Pred Fail", "Starting", "Stopping", "Service", "Stressed", "NonRecover", "No Contact", "Lost Comm", "Stopped"} : Amended ToSubclass] string Status;
  [Description("Indicates the current health of the element. This attribute expresses the health of this element but not necessarily that of its subcomponents. The possible values are 0 to 30, where 5 means the element is entirely healthy and 30 means the element is completely non-functional. The following continuum is defined: \n\"Non-recoverable Error\" (30) - The element has completely failed, and recovery is not possible. All functionality provided by this element has been lost. \n\"Critical Failure\" (25) - The element is non-functional and recovery might not be possible. \n\"Major Failure\" (20) - The element is failing. It is possible that some or all of the functionality of this component is degraded or not working. \n\"Minor Failure\" (15) - All functionality is available but some might be degraded. \n\"Degraded/Warning\" (10) - The element is in working order and all functionality is provided. However, the element is not working to the best of its abilities. For example, the element might not be operating at optimal performance or it might be reporting recoverable errors. \n\"OK\" (5) - The element is fully functional and is operating within normal operational parameters and without error. \n\"Unknown\" (0) - The implementation cannot report on HealthState at this time. \nDMTF has reserved the unused portion of the continuum for additional HealthStates in the future.") : Amended ToSubclass,ValueMap{"0", "5", "10", "15", "20", "25", "30", ".."} : Amended ToSubclass,Values{"Unknown", "OK", "Degraded/Warning", "Minor failure", "Major failure", "Critical failure", "Non-recoverable error", "DMTF Reserved"} : Amended ToSubclass] uint16 HealthState;
  [Description("PrimaryStatus provides a high level status value, intended to align with Red-Yellow-Green type representation of status. It should be used in conjunction with DetailedStatus to provide high level and detailed health status of the ManagedElement and its subcomponents. \nPrimaryStatus consists of one of the following values: Unknown, OK, Degraded or Error. \"Unknown\" indicates the implementation is in general capable of returning this property, but is unable to do so at this time. \n\"OK\" indicates the ManagedElement is functioning normally. \n\"Degraded\" indicates the ManagedElement is functioning below normal. \n\"Error\" indicates the ManagedElement is in an Error condition.") : Amended ToSubclass,ValueMap{"0", "1", "2", "3", "..", "0x8000.."} : Amended ToSubclass,Values{"Unknown", "OK", "Degraded", "Error", "DMTF Reserved", "Vendor Reserved"} : Amended ToSubclass] uint16 PrimaryStatus;
  [Description("DetailedStatus compliments PrimaryStatus with additional status detail. It consists of one of the following values: Not Available, No Additional Information, Stressed, Predictive Failure, Error, Non-Recoverable Error, SupportingEntityInError. Detailed status is used to expand upon the PrimaryStatus of the element. \nA Null return indicates the implementation (provider) does not implement this property. \n\"Not Available\" indicates that the implementation (provider) is capable of returning a value for this property, but not ever for this particular piece of hardware/software or the property is intentionally not used because it adds no meaningful information (as in the case of a property that is intended to add additional info to another property). \n\"No Additional Information\" indicates that the element is functioning normally as indicated by PrimaryStatus = \"OK\". \n\"Stressed\" indicates that the element is functioning, but needs attention. Examples of \"Stressed\" states are overload, overheated, and so on. \n\"Predictive Failure\" indicates that an element is functioning normally but a failure is predicted in the near future. \n\"Non-Recoverable Error \" indicates that this element is in an error condition that requires human intervention. \n\"Supporting Entity in Error\" indicates that this element might be \"OK\" but that another element, on which it is dependent, is in error. An example is a network service or endpoint that cannot function due to lower-layer networking problems.") : Amended ToSubclass,ValueMap{"0", "1", "2", "3", "4", "5", "..", "0x8000.."} : Amended ToSubclass,Values{"Not Available", "No Additional Information", "Stressed", "Predictive Failure", "Non-Recoverable Error", "Supporting Entity in Error", "DMTF Reserved", "Vendor Reserved"} : Amended ToSubclass] uint16 DetailedStatus;
  [Description("OperatingStatus provides a current status value for the operational condition of the element and can be used for providing more detail with respect to the value of EnabledState. It can also provide the transitional states when an element is transitioning from one state to another, such as when an element is transitioning between EnabledState and RequestedState, as well as other transitional conditions.\nOperatingStatus consists of one of the following values: Unknown, Not Available, In Service, Starting, Stopping, Stopped, Aborted, Dormant, Completed, Migrating, Emmigrating, Immigrating, Snapshotting. Shutting Down, In Test \nA Null return indicates the implementation (provider) does not implement this property. \n\"Unknown\" indicates the implementation is in general capable of returning this property, but is unable to do so at this time. \n\"None\" indicates that the implementation (provider) is capable of returning a value for this property, but not ever for this particular piece of hardware/software or the property is intentionally not used because it adds no meaningful information (as in the case of a property that is intended to add additional info to another property). \n\"Servicing\" describes an element being configured, maintained, cleaned, or otherwise administered. \n\"Starting\" describes an element being initialized. \n\"Stopping\" describes an element being brought to an orderly stop. \n\"Stopped\" and \"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 element might need to be updated. \n\"Dormant\" indicates that the element is inactive or quiesced. \n\"Completed\" indicates that the element has completed its operation. This value should be combined with either OK, Error, or Degraded in the PrimaryStatus so that a client can tell if the complete operation Completed with OK (passed), Completed with Error (failed), or Completed with Degraded (the operation finished, but it did not complete OK or did not report an error). \n\"Migrating\" element is being moved between host elements. \n\"Immigrating\" element is being moved to new host element. \n\"Emigrating\" element is being moved away from host element. \n\"Shutting Down\" describes an element being brought to an abrupt stop. \n\"In Test\" element is performing test functions. \n\"Transitioning\" describes an element that is between states, that is, it is not fully available in either its previous state or its next state. This value should be used if other values indicating a transition to a specific state are not applicable.\n\"In Service\" describes an element that is in service and operational.") : Amended ToSubclass,ValueMap{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "..", "0x8000.."} : Amended ToSubclass,Values{"Unknown", "Not Available", "Servicing", "Starting", "Stopping", "Stopped", "Aborted", "Dormant", "Completed", "Migrating", "Emigrating", "Immigrating", "Snapshotting", "Shutting Down", "In Test", "Transitioning", "In Service", "DMTF Reserved", "Vendor Reserved"} : Amended ToSubclass] uint16 OperatingStatus;
  [Description("CommunicationStatus indicates the ability of the instrumentation to communicate with the underlying ManagedElement. CommunicationStatus consists of one of the following values: Unknown, None, Communication OK, Lost Communication, or No Contact. \nA Null return indicates the implementation (provider) does not implement this property. \n\"Unknown\" indicates the implementation is in general capable of returning this property, but is unable to do so at this time. \n\"Not Available\" indicates that the implementation (provider) is capable of returning a value for this property, but not ever for this particular piece of hardware/software or the property is intentionally not used because it adds no meaningful information (as in the case of a property that is intended to add additional info to another property). \n\"Communication OK \" indicates communication is established with the element, but does not convey any quality of service. \n\"No Contact\" indicates that the monitoring system has knowledge of this element, but has never been able to establish communications with it. \n\"Lost Communication\" indicates that the Managed Element is known to exist and has been contacted successfully in the past, but is currently unreachable.") : Amended ToSubclass,ValueMap{"0", "1", "2", "3", "4", "..", "0x8000.."} : Amended ToSubclass,Values{"Unknown", "Not Available", "Communication OK", "Lost Communication", "No Contact", "DMTF Reserved", "Vendor Reserved"} : Amended ToSubclass] uint16 CommunicationStatus;
};

[Description("CIM_LogicalElement is a base class for all the components of a System that represent abstract system components, such as Files, Processes, or LogicalDevices.") : Amended ToSubclass,AMENDMENT, LOCALE(0x0804)] 
class CIM_LogicalElement : CIM_ManagedSystemElement
{
};

[Description("This class extends LogicalElement to abstract the concept of an element that is enabled and disabled, such as a LogicalDevice or a ServiceAccessPoint.") : Amended ToSubclass,AMENDMENT, LOCALE(0x0804)] 
class CIM_EnabledLogicalElement : CIM_LogicalElement
{
  [Description("EnabledState is an integer enumeration that indicates the enabled and disabled states of an element. It can also indicate the transitions between these requested states. For example, shutting down (value=4) and starting (value=10) are transient states between enabled and disabled. The following text briefly summarizes the various enabled and disabled states: \nEnabled (2) indicates that the element is or could be executing commands, will process any queued commands, and queues new requests. \nDisabled (3) indicates that the element will not execute commands and will drop any new requests. \nShutting Down (4) indicates that the element is in the process of going to a Disabled state. \nNot Applicable (5) indicates the element does not support being enabled or disabled. \nEnabled but Offline (6) indicates that the element might be completing commands, and will drop any new requests. \nTest (7) indicates that the element is in a test state. \nDeferred (8) indicates that the element might be completing commands, but will queue any new requests. \nQuiesce (9) indicates that the element is enabled but in a restricted mode.\nStarting (10) indicates that the element is in the process of going to an Enabled state. New requests are queued.") : Amended ToSubclass,ValueMap{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11..32767", "32768..65535"} : Amended ToSubclass,Values{"Unknown", "Other", "Enabled", "Disabled", "Shutting Down", "Not Applicable", "Enabled but Offline", "In Test", "Deferred", "Quiesce", "Starting", "DMTF Reserved", "Vendor Reserved"} : Amended ToSubclass] uint16 EnabledState;
  [Description("A string that describes the enabled or disabled state of the element when the EnabledState property is set to 1 (\"Other\"). This property must be set to null when EnabledState is any value other than 1.") : Amended ToSubclass] string OtherEnabledState;
  [Description("RequestedState is an integer enumeration that indicates the last requested or desired state for the element, irrespective of the mechanism through which it was requested. The actual state of the element is represented by EnabledState. This property is provided to compare the last requested and current enabled or disabled states. Note that when EnabledState is set to 5 (\"Not Applicable\"), then this property has no meaning. Refer to the EnabledState property description for explanations of the values in the RequestedState enumeration. \n\"Unknown\" (0) indicates the last requested state for the element is unknown.\nNote that the value \"No Change\" (5) has been deprecated in lieu of indicating the last requested state is \"Unknown\" (0). If the last requested or desired state is unknown, RequestedState should have the value \"Unknown\" (0), but may have the value \"No Change\" (5).Offline (6) indicates that the element has been requested to transition to the Enabled but Offline EnabledState. \nIt should be noted that there are two new values in RequestedState that build on the statuses of EnabledState. These are \"Reboot\" (10) and \"Reset\" (11). Reboot refers to doing a \"Shut Down\" and then moving to an \"Enabled\" state. Reset indicates that the element is first \"Disabled\" and then \"Enabled\". The distinction between requesting \"Shut Down\" and \"Disabled\" should also be noted. Shut Down requests an orderly transition to the Disabled state, and might involve removing power, to completely erase any existing state. The Disabled state requests an immediate disabling of the element, such that it will not execute or accept any commands or processing requests. \n\nThis property is set as the result of a method invocation (such as Start or StopService on CIM_Service), or can be overridden and defined as WRITEable in a subclass. The method approach is considered superior to a WRITEable property, because it allows an explicit invocation of the operation and the return of a result code. \n\nIf knowledge of the last RequestedState is not supported for the EnabledLogicalElement, the property shall be NULL or have the value 12 \"Not Applicable\".") : Amended ToSubclass,ValueMap{"0", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "..", "32768..65535"} : Amended ToSubclass,Values{"Unknown", "Enabled", "Disabled", "Shut Down", "No Change", "Offline", "Test", "Deferred", "Quiesce", "Reboot", "Reset", "Not Applicable", "DMTF Reserved", "Vendor Reserved"} : Amended ToSubclass] uint16 RequestedState;
  [Description("An enumerated value indicating an administrator's default or startup configuration for the Enabled State of an element. By default, the element is \"Enabled\" (value=2).") : Amended ToSubclass,ValueMap{"2", "3", "5", "6", "7", "9", "..", "32768..65535"} : Amended ToSubclass,Values{"Enabled", "Disabled", "Not Applicable", "Enabled but Offline", "No Default", "Quiesce", "DMTF Reserved", "Vendor Reserved"} : Amended ToSubclass] uint16 EnabledDefault;
  [Description("The date or time when the EnabledState of the element last changed. If the state of the element has not changed and this property is populated, then it must be set to a 0 interval value. If a state change was requested, but rejected or not yet processed, the property must not be updated.") : Amended ToSubclass] datetime TimeOfLastStateChange;
  [Description("AvailableRequestedStates indicates the possible values for the RequestedState parameter of the method RequestStateChange, used to initiate a state change. The values listed shall be a subset of the values contained in the RequestedStatesSupported property of the associated instance of CIM_EnabledLogicalElementCapabilities where the values selected are a function of the current state of the CIM_EnabledLogicalElement. This property may be non-null if an implementation is able to advertise the set of possible values as a function of the current state. This property shall be null if an implementation is unable to determine the set of possible values as a function of the current state.") : Amended ToSubclass,ValueMap{"2", "3", "4", "6", "7", "8", "9", "10", "11"} : Amended ToSubclass,Values{"Enabled", "Disabled", "Shut Down", "Offline", "Test", "Defer", "Quiesce", "Reboot", "Reset"} : Amended ToSubclass] uint16 AvailableRequestedStates[];
  [Description("TransitioningToState indicates the target state to which the instance is transitioning. \nA value of 5 \"No Change\" shall indicate that no transition is in progress.A value of 12 \"Not Applicable\" shall indicate the implementation does not support representing ongoing transitions. \nA value other than 5 or 12 shall identify the state to which the element is in the process of transitioning.") : Amended ToSubclass,ValueMap{"0", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"} : Amended ToSubclass,Values{"Unknown", "Enabled", "Disabled", "Shut Down", "No Change", "Offline", "Test", "Defer", "Quiesce", "Reboot", "Reset", "Not Applicable"} : Amended ToSubclass] uint16 TransitioningToState;
  [Description("Requests that the state of the element be changed to the value specified in the RequestedState parameter. When the requested state change takes place, the EnabledState and RequestedState of the element will be the same. Invoking the RequestStateChange method multiple times could result in earlier requests being overwritten or lost. \nA return code of 0 shall indicate the state change was successfully initiated. \nA return code of 3 shall indicate that the state transition cannot complete within the interval specified by the TimeoutPeriod parameter. \nA return code of 4096 (0x1000) shall indicate the state change was successfully initiated, a ConcreteJob has been created, and its reference returned in the output parameter Job. Any other return code indicates an error condition.") : Amended ToSubclass,ValueMap{"0", "1", "2", "3", "4", "5", "6", "..", "4096", "4097", "4098", "4099", "4100..32767", "32768..65535"} : Amended ToSubclass,Values{"Completed with No Error", "Not Supported", "Unknown or Unspecified Error", "Cannot complete within Timeout Period", "Failed", "Invalid Parameter", "In Use", "DMTF Reserved", "Method Parameters Checked - Job Started", "Invalid State Transition", "Use of Timeout Parameter Not Supported", "Busy", "Method Reserved", "Vendor Specific"} : Amended ToSubclass] uint32 RequestStateChange([IN,Description("The state requested for the element. This information will be placed into the RequestedState property of the instance if the return code of the RequestStateChange method is 0 ('Completed with No Error'), or 4096 (0x1000) ('Job Started'). Refer to the description of the EnabledState and RequestedState properties for the detailed explanations of the RequestedState values.") : Amended ToSubclass,ValueMap{"2", "3", "4", "6", "7", "8", "9", "10", "11", "..", "32768..65535"} : Amended ToSubclass,Values{"Enabled", "Disabled", "Shut Down", "Offline", "Test", "Defer", "Quiesce", "Reboot", "Reset", "DMTF Reserved", "Vendor Reserved"} : Amended ToSubclass] uint16 RequestedState,[IN(FALSE),OUT,Description("May contain a reference to the ConcreteJob created to track the state transition initiated by the method invocation.") : Amended ToSubclass] CIM_ConcreteJob Ref Job,[IN,Description("A timeout period that specifies the maximum amount of time that the client expects the transition to the new state to take. The interval format must be used to specify the TimeoutPeriod. A value of 0 or a null parameter indicates that the client has no time requirements for the transition. \nIf this property does not contain 0 or null and the implementation does not support this parameter, a return code of 'Use Of Timeout Parameter Not Supported' shall be returned.") : Amended ToSubclass] datetime TimeoutPeriod);
};

[Description("An abstraction or emulation of a hardware entity, that might or might not be Realized in physical hardware. Any characteristics of a LogicalDevice that are used to manage its operation or configuration are contained in, or associated with, the LogicalDevice object. Examples of the operational properties of a Printer would be paper sizes supported or detected errors. Examples of the configuration properties of a Sensor Device would be threshold settings. Various configurations could exist for a LogicalDevice. These configurations could be contained in Setting objects and associated with the LogicalDevice.") : Amended ToSubclass,AMENDMENT, LOCALE(0x0804)] 
class CIM_LogicalDevice : CIM_EnabledLogicalElement
{
  [Key,Description("The CreationClassName of the scoping system.") : Amended ToSubclass] string SystemCreationClassName;
  [Key,Description("The System Name of the scoping system.") : Amended ToSubclass] string SystemName;
  [Key,Description("CreationClassName indicates the name of the class or the subclass used in the creation of an instance. When used with the other key properties of this class, this property allows all instances of this class and its subclasses to be uniquely identified.") : Amended ToSubclass] string CreationClassName;
  [Key,Description("An address or other identifying information used to uniquely name the LogicalDevice.") : Amended ToSubclass] string DeviceID;
  [Description("Note: The use of this property has been deprecated. Instead, the existence of an associated PowerManagementCapabilities class (associated using the ElementCapabilities relationship) indicates that power management is supported. Deprecated description: Boolean that indicates that the Device can use power management.") : Amended ToSubclass] boolean PowerManagementSupported;
  [Description("Note: The use of this property has been deprecated. Instead, use the PowerCapabilites property in an associated PowerManagementCapabilities class. Deprecated description: An enumerated array describing the power management capabilities of the Device.") : Amended ToSubclass,ValueMap{"0", "1", "2", "3", "4", "5", "6", "7"} : Amended ToSubclass,Values{"Unknown", "Not Supported", "Disabled", "Enabled", "Power Saving Modes Entered Automatically", "Power State Settable", "Power Cycling Supported", "Timed Power On Supported"} : Amended ToSubclass] uint16 PowerManagementCapabilities[];
  [Description("Note: The use of this property has been deprecated. \nDeprecated description: The primary availability and status of the Device. (Additional status information can be specified using the Additional Availability array property.) For example, the Availability property indicates that the Device is running and has full power (value=3), or is in a warning (4), test (5), degraded (10) or power save state (values 13-15 and 17). The Power Save states are defined as follows: Value 13 (\"Power Save - Unknown\") indicates that the Device is known to be in a power save mode, but its exact status in this mode is unknown; value 14 (\"Power Save - Low Power Mode\") indicates that the Device is in a power save state but still functioning, and might exhibit degraded performance; value 15 (\"Power Save - Standby\") indicates that the Device is not functioning but could be brought to full power 'quickly'; and value 17 (\"Power Save - Warning\") indicates that the Device is in a warning state, but is also in a power save mode.") : Amended ToSubclass,ValueMap{"1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21"} : Amended ToSubclass,Values{"Other", "Unknown", "Running/Full Power", "Warning", "In Test", "Not Applicable", "Power Off", "Off Line", "Off Duty", "Degraded", "Not Installed", "Install Error", "Power Save - Unknown", "Power Save - Low Power Mode", "Power Save - Standby", "Power Cycle", "Power Save - Warning", "Paused", "Not Ready", "Not Configured", "Quiesced"} : Amended ToSubclass] uint16 Availability;
  [Description("Note: The use of this method is deprecated in lieu of a more clearly named property (EnabledState) that is inherited from ManagedSystemElement and that has additional enumerated values. \nDeprecated description: The StatusInfo property indicates whether the Logical Device is in an enabled state (value=3), disabled state (value=4), some other state (value=1), or an unknown state (value=2). If this property does not apply to the LogicalDevice, the value 5 (\"Not Applicable\") should be used. If a Device is (\"Enabled\")(value=3), it has been powered up and is configured and operational. The Device might or might not be functionally active, depending on whether its Availability (or AdditionalAvailability) indicates that it is (\"Running/Full Power\")(value=3) or (\"Off line\") (value=8). In an enabled but offline mode, a Device might be performing out-of-band requests, such as running Diagnostics. If StatusInfo is (\"Disabled\") (value=4), a Device can only be \"enabled\" or powered off. In a personal computer environment, (\"Disabled\") means that the driver of the device is not available in the stack. In other environments, a Device can be disabled by removing its configuration file. A disabled device is physically present in a System and consuming resources, but it cannot be communicated with until a driver is loaded, a configuration file is loaded, or some other \"enabling\" activity has occurred.") : Amended ToSubclass,ValueMap{"1", "2", "3", "4", "5"} : Amended ToSubclass,Values{"Other", "Unknown", "Enabled", "Disabled", "Not Applicable"} : Amended ToSubclass] uint16 StatusInfo;
  [Description("Note: The use of this method is deprecated. \nDeprecated description: LastErrorCode captures the last error code reported by the LogicalDevice.") : Amended ToSubclass] uint32 LastErrorCode;
  [Description("Note: The use of this method is deprecated. \nDeprecated description: ErrorDescription is a free-form string that supplies more information about the error recorded in LastErrorCode and information on any corrective actions that can be taken.") : Amended ToSubclass] string ErrorDescription;
  [Description("Note: The use of this method is deprecated. \nDeprecated description: ErrorCleared is a Boolean property that indicates that the error reported in LastErrorCode is now cleared.") : Amended ToSubclass] boolean ErrorCleared;
  [Description("OtherIdentifyingInfo captures data, in addition to DeviceID information, that could be used to identify a LogicalDevice. For example, you could use this property to hold the operating system's user-friendly name for the Device.") : Amended ToSubclass] string OtherIdentifyingInfo[];
  [Description("Note: The use of this method is deprecated. \nDeprecated description: The number of consecutive hours that this Device has been powered on since its last power cycle.") : Amended ToSubclass] uint64 PowerOnHours;
  [Description("Note: The use of this method is deprecated. \nDeprecated description: The total number of hours that this Device has been powered on.") : Amended ToSubclass] uint64 TotalPowerOnHours;
  [Description("An array of free-form strings providing explanations and details behind the entries in the OtherIdentifyingInfo array. Note that each entry of this array is related to the entry in OtherIdentifyingInfo that is located at the same index.") : Amended ToSubclass] string IdentifyingDescriptions[];
  [Description("Additional availability and status of the Device in addition to that specified in the Availability property. The Availability property denotes the primary status and availability of the Device. In some cases, this property will not be sufficient to denote the complete status of the Device. In those cases, the AdditionalAvailability property can be used to provide further information. For example, the primary Availability of a device might be \"Off line\" (value=8) or in a low-power state (AdditionalAvailability value=14), or the Device could be running Diagnostics (AdditionalAvailability value=5, \"In Test\").") : Amended ToSubclass,ValueMap{"1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21"} : Amended ToSubclass,Values{"Other", "Unknown", "Running/Full Power", "Warning", "In Test", "Not Applicable", "Power Off", "Off Line", "Off Duty", "Degraded", "Not Installed", "Install Error", "Power Save - Unknown", "Power Save - Low Power Mode", "Power Save - Standby", "Power Cycle", "Power Save - Warning", "Paused", "Not Ready", "Not Configured", "Quiesced"} : Amended ToSubclass] uint16 AdditionalAvailability[];
  [Description("Note: The use of this property has been deprecated. When evaluating the use of Quiesce, it was determined that this single property is not adequate for describing when a device will automatically exit a quiescent state. In fact, the most likely scenario for a device to exit a quiescent state was determined to be based on the number of outstanding requests queued rather than on a maximum time. This decision will be re-evaluated and repositioned later. \nDeprecated description: Maximum time, in milliseconds, that a Device can run in a \"Quiesced\" state. The state is defined in its Availability and AdditionalAvailability properties, where \"Quiesced\" is conveyed by the value 21. What occurs at the end of the time limit is device-specific. The Device can unquiesce, can be offline, or can take other actions. A value of 0 indicates that a Device can remain quiesced indefinitely.") : Amended ToSubclass] uint64 MaxQuiesceTime;
  [Description("An integer that reflects the state of an indicator (e.g., LED) that is part of a device. Reading the value gives the current state. Writing the value with 'On'/'Off' turns the indicator on/off, other values may not be written.") : Amended ToSubclass,ValueMap{"0", "2", "3", "4"} : Amended ToSubclass,Values{"Unknown", "On", "Off", "Not Supported"} : Amended ToSubclass] uint16 LocationIndicator;
  [Description("Note: The use of this method has been deprecated. Instead, use the SetPowerState method in the associated PowerManagementService class. Deprecated description: Sets the power state of the Device.") : Amended ToSubclass] uint32 SetPowerState([IN,Description("The power state to set.") : Amended ToSubclass,ValueMap{"1", "2", "3", "4", "5", "6"} : Amended ToSubclass,Values{"Full Power", "Power Save - Low Power Mode", "Power Save - Standby", "Power Save - Other", "Power Cycle", "Power Off"} : Amended ToSubclass] uint16 PowerState,[IN,Description("Time indicates when the power state should be set, either as a regular date-time value or as an interval value (where the interval begins when the method invocation is received).") : Amended ToSubclass] datetime Time);
  [Description("Requests a reset of the LogicalDevice. The return value should be 0 if the request was successfully executed, 1 if the request is not supported, and some other value if an error occurred. In a subclass, the set of possible return codes could be specified, using a ValueMap qualifier on the method. The strings to which the ValueMap contents are 'translated' can also be specified in the subclass as a Values array qualifier.") : Amended ToSubclass] uint32 Reset();
  [Description("Note: The use of this method has been deprecated in lieu of the more general RequestStateChange method that directly overlaps with the functionality provided by this method. \nDeprecated description: Requests that the LogicalDevice be enabled (\"Enabled\" input parameter=TRUE) or disabled (=FALSE). If successful, the StatusInfo or EnabledState properties of the Device should reflect the desired state (enabled or disabled). Note that this function overlaps with the RequestedState property. RequestedState was added to the model to maintain a record (for example, a persisted value) of the last state request. Invoking the EnableDevice method should set the RequestedState property appropriately. \nThe return code should be 0 if the request was successfully executed, 1 if the request is not supported, and some other value if an error occurred. In a subclass, the set of possible return codes could be specified by using a ValueMap qualifier on the method. The strings to which the ValueMap contents are 'translated' can also be specified in the subclass as a Values array qualifier.") : Amended ToSubclass] uint32 EnableDevice([IN,Description("If TRUE, enable the device. If FALSE, disable the device.") : Amended ToSubclass] boolean Enabled);
  [Description("Note: The use of this method has been deprecated in lieu of the more general RequestStateChange method that directly overlaps with the functionality provided by this method. \nDeprecated description: Requests that the LogicalDevice be brought online (\"Online\" input parameter=TRUE) or taken offline (=FALSE). \"Online\" indicates that the Device is ready to accept requests, and is operational and fully functioning. In this case, the Availability property of the Device would be set to a value of 3 (\"Running/Full Power\"). \"Offline\" indicates that a Device is powered on and operational, but is not processing functional requests. In an offline state, a Device might be capable of running diagnostics or generating operational alerts. For example, when the \"Offline\" button is pushed on a Printer, the Device is no longer available to process print jobs, but it could be available for diagnostics or maintenance. \nIf this method is successful, the Availability and AdditionalAvailability properties of the Device should reflect the updated status. If a failure occurs when you try to bring the Device online or offline, it should remain in its current state. The request, if unsuccessful, should not leave the Device in an indeterminate state. When bringing a Device back \"Online\" from an \"Offline\" mode, the Device should be restored to its last \"Online\" state, if at all possible. Only a Device that has an EnabledState or StatusInfo of \"Enabled\" and has been configured can be brought online or taken offline. \nOnlineDevice should return 0 if successful, 1 if the request is not supported at all, 2 if the request is not supported due to the current state of the Device, and some other value if any other error occurred. In a subclass, the set of possible return codes could be specified, using a ValueMap qualifier on the method. The strings to which the ValueMap contents are 'translated' can also be specified in the subclass as a Values array qualifier. \nNote that the function of this method overlaps with the RequestedState property. RequestedState was added to the model to maintain a record (for example, a persisted value) of the last state request. Invoking the OnlineDevice method should set the RequestedState property appropriately.") : Amended ToSubclass] uint32 OnlineDevice([IN,Description("If TRUE, take the device online. If FALSE, take the device offline.") : Amended ToSubclass] boolean Online);
  [Description("Note: The use of this method has been deprecated in lieu of the more general RequestStateChange method that directly overlaps with the functionality provided by this method. \nDeprecated description: Requests that the LogicalDevice cleanly cease all activity (\"Quiesce\" input parameter=TRUE) or resume activity (=FALSE). For this method to quiesce a Device, that Device should have an Availability (or Additional Availability) of \"Running/Full Power\" (value=3) and an EnabledStatus/StatusInfo of \"Enabled\". For example, if quiesced, a Device can then be taken offline for diagnostics, or disabled for power off and hot swap. For the method to \"unquiesce\" a Device, that Device should have an Availability (or AdditionalAvailability) of \"Quiesced\" (value=21) and an EnabledStatus or StatusInfo of \"Enabled\". In this case, the Device would be returned to an \"Enabled\" and \"Running/Full Power\" status. \nThe return code of the method should indicate the success or failure of the quiesce. It should return 0 if successful, 1 if the request is not supported at all, 2 if the request is not supported due to the current state of the Device, and some other value if any other error occurred. In a subclass, the set of possible return codes could be specified, using a ValueMap qualifier on the method. The strings to which the ValueMap contents are 'translated' can also be specified in the subclass as a Values array qualifier.") : Amended ToSubclass] uint32 QuiesceDevice([IN,Description("If set to TRUE, then cleanly cease all activity. If FALSE, resume activity.") : Amended ToSubclass] boolean Quiesce);
  [Description("Note: The use of this method is deprecated. Its function is handled more generally by the ConfigurationData subclass of SettingData. \nDeprecated description: Requests that the Device capture its current configuration, setup or state information, or both in a backing store. \nThe information returned by this method could be used at a later time (using the RestoreProperties method) to return a Device to its present \"condition\". This method might not be supported by all Devices. The method should return 0 if successful, 1 if the request is not supported, and some other value if any other error occurred. In a subclass, the set of possible return codes could be specified, using a ValueMap qualifier on the method. The strings to which the ValueMap contents are 'translated' can also be specified in the subclass as a Values array qualifier.") : Amended ToSubclass] uint32 SaveProperties();
  [Description("Note: The use of this method is deprecated. Its function is handled more generally by the ConfigurationData subclass of SettingData. \nRequests that the Device re-establish its configuration, setup or state information, or both from a backing store. The information would have been captured at an earlier time (using the SaveProperties method). This method might not be supported by all Devices. The method should return 0 if successful, 1 if the request is not supported, and some other value if any other error occurred. In a subclass, the set of possible return codes could be specified using a ValueMap qualifier on the method. The strings to which the ValueMap contents are 'translated' can also be specified in the subclass as a Values array qualifier.") : Amended ToSubclass] uint32 RestoreProperties();
};

[Description("A Sensor is an entity capable of measuring or reporting the characteristics of some physical property - for example, the temperature or voltage characteristics of a Computer System.") : Amended ToSubclass,AMENDMENT, LOCALE(0x0804)] 
class CIM_Sensor : CIM_LogicalDevice
{
  [Description("The Type of the Sensor, e.g. Voltage or Temperature Sensor. If the type is set to \"Other\", then the OtherSensorType Description can be used to further identify the type, or if the Sensor has numeric readings, then the type of the Sensor can be implicitly determined by the Units. A description of the different Sensor types is as follows: A Temperature Sensor measures the environmental temperature. Voltage and Current Sensors measure electrical voltage and current readings. A Tachometer measures speed/revolutions of a Device. For example, a Fan Device can have an associated Tachometer which measures its speed. A Counter is a general purpose Sensor that measures some numerical property of a Device. A Counter value can be cleared, but it never decreases. A Switch Sensor has states like Open/Close, On/Off, or Up/Down. A Lock has states of Locked/Unlocked. Humidity, Smoke Detection and Air Flow Sensors measure the equivalent environmental characteristics. A Presence Sensor detects the presence of a PhysicalElement. A Power Consumption Sensor measures the instantaneous power consumed by a managed element. A Power Production Sensor measures the instantaneous power produced by a managed element such as a power supply or a voltage regulator. A pressure sensor is used to report pressure. Intrusion sensor reports an intrusion of an enclosure regardless whether it was authorized or not.") : Amended ToSubclass,ValueMap{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "..", "32768..65535"} : Amended ToSubclass,Values{"Unknown", "Other", "Temperature", "Voltage", "Current", "Tachometer", "Counter", "Switch", "Lock", "Humidity", "Smoke Detection", "Presence", "Air Flow", "Power Consumption", "Power Production", "Pressure", "Intrusion", "DMTF Reserved", "Vendor Reserved"} : Amended ToSubclass] uint16 SensorType;
  [Description("A string describing the Sensor type - used when the SensorType property is set to \"Other\".") : Amended ToSubclass] string OtherSensorTypeDescription;
  [Description("PossibleStates enumerates the string outputs of the Sensor. For example, a \"Switch\" Sensor may output the states \"On\", or \"Off\". Another implementation of the Switch may output the states \"Open\", and \"Close\". Another example is a NumericSensor supporting thresholds. This Sensor can report the states like \"Normal\", \"Upper Fatal\", \"Lower Non-Critical\", etc. A NumericSensor that does not publish readings and thresholds, but stores this data internally, can still report its states.") : Amended ToSubclass] string PossibleStates[];
  [Description("The current state indicated by the Sensor. This is always one of the \"PossibleStates\".") : Amended ToSubclass] string CurrentState;
  [Description("The polling interval that the Sensor hardware or the instrumentation uses to determine the current state of the Sensor.") : Amended ToSubclass] uint64 PollingInterval;
};

[Description("A Numeric Sensor is capable of returning numeric readings and optionally supports thresholds settings.") : Amended ToSubclass,AMENDMENT, LOCALE(0x0804)] 
class CIM_NumericSensor : CIM_Sensor
{
  [Description("The base unit of the values returned by this Sensor. All the values returned by this Sensor are represented in the units obtained by (BaseUnits * 10 raised to the power of the UnitModifier). For example, if BaseUnits is Volts and the UnitModifier is -6, then the units of the values returned are MicroVolts. However, if the RateUnits property is set to a value other than \"None\", then the units are further qualified as rate units. In the above example, if RateUnits is set to \"Per Second\", then the values returned by the Sensor are in MicroVolts/Second. The units apply to all numeric properties of the Sensor, unless explicitly overridden by the Units qualifier.") : Amended ToSubclass,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"} : Amended ToSubclass,Values{"Unknown", "Other", "Degrees C", "Degrees F", "Degrees K", "Volts", "Amps", "Watts", "Joules", "Coulombs", "VA", "Nits", "Lumens", "Lux", "Candelas", "kPa", "PSI", "Newtons", "CFM", "RPM", "Hertz", "Seconds", "Minutes", "Hours", "Days", "Weeks", "Mils", "Inches", "Feet", "Cubic Inches", "Cubic Feet", "Meters", "Cubic Centimeters", "Cubic Meters", "Liters", "Fluid Ounces", "Radians", "Steradians", "Revolutions", "Cycles", "Gravities", "Ounces", "Pounds", "Foot-Pounds", "Ounce-Inches", "Gauss", "Gilberts", "Henries", "Farads", "Ohms", "Siemens", "Moles", "Becquerels", "PPM (parts/million)", "Decibels", "DbA", "DbC", "Grays", "Sieverts", "Color Temperature Degrees K", "Bits", "Bytes", "Words (data)", "DoubleWords", "QuadWords", "Percentage", "Pascals"} : Amended ToSubclass] uint16 BaseUnits;
  [Description("The unit multiplier for the values returned by this Sensor. All the values returned by this Sensor are represented in the units obtained by (BaseUnits * 10 raised to the power of the UnitModifier). For example, if BaseUnits is Volts and the Unit Modifier is -6, then the units of the values returned are MicroVolts. However, if the RateUnits property is set to a value other than \"None\", then the units are further qualified as rate units. In the above example, if RateUnits is set to \"Per Second\", then the values returned by the Sensor are in MicroVolts/Second. The units apply to all numeric properties of the Sensor, unless explicitly overridden by the Units qualifier.") : Amended ToSubclass] sint32 UnitModifier;
  [Description("Specifies if the units returned by this Sensor are rate units. All the values returned by this Sensor are represented in the units obtained by (BaseUnits * 10 raised to the power of the UnitModifier). This is true unless this property (RateUnits) has a value different than \"None\". For example, if BaseUnits is Volts and the UnitModifier is -6, then the units of the values returned are MicroVolts. But, if the RateUnits property is set to a value other than \"None\", then the units are further qualified as rate units. In the above example, if RateUnits is set to \"Per Second\", then the values returned by the Sensor are in MicroVolts/Second. The units apply to all numeric properties of the Sensor, unless explicitly overridden by the Units qualifier. Any implementation of CurrentReading should be qualified with either a Counter or a Gauge qualifier, depending on the characteristics of the sensor being modeled.") : Amended ToSubclass,ValueMap{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9"} : Amended ToSubclass,Values{"None", "Per MicroSecond", "Per MilliSecond", "Per Second", "Per Minute", "Per Hour", "Per Day", "Per Week", "Per Month", "Per Year"} : Amended ToSubclass] uint16 RateUnits;
  [Description("The current value indicated by the Sensor.") : Amended ToSubclass] sint32 CurrentReading;
  [Description("NominalReading indicates the 'normal' or expected value for the NumericSensor.") : Amended ToSubclass] sint32 NominalReading;
  [Description("NormalMax provides guidance for the user as to the normal maximum range for the NumericSensor.") : Amended ToSubclass] sint32 NormalMax;
  [Description("NormalMin provides guidance for the user as to the normal minimum range for the NumericSensor.") : Amended ToSubclass] sint32 NormalMin;
  [Description("MaxReadable indicates the largest value of the measured property that can be read by the NumericSensor.") : Amended ToSubclass] sint32 MaxReadable;
  [Description("MinReadable indicates the smallest value of the measured property that can be read by the NumericSensor.") : Amended ToSubclass] sint32 MinReadable;
  [Description("Resolution indicates the ability of the Sensor to resolve differences in the measured property. The units for this measurement are determined by BaseUnit*UnitModifier/RateUnit.") : Amended ToSubclass] uint32 Resolution;
  [Description("This property is being deprecated in lieu of using the Resolution and Accuracy properties. \nIndicates the tolerance of the Sensor for the measured property. Tolerance, along with Resolution and Accuracy, is used to calculate the actual value of the measured physical property. Tolerance may vary depending on whether the Device is linear over its dynamic range.") : Amended ToSubclass] sint32 Tolerance;
  [Description("Indicates the accuracy of the Sensor for the measured property. Its value is recorded as plus/minus hundredths of a percent. Accuracy, along with Resolution, is used to calculate the actual value of the measured physical property. Accuracy may vary depending on whether the Device is linear over its dynamic range.") : Amended ToSubclass] sint32 Accuracy;
  [Description("Indicates that the Sensor is linear over its dynamic range.") : Amended ToSubclass] boolean IsLinear;
  [Description("Indicates the margin built around the thresholds. This margin prevents unnecessary state changes when the Sensor reading may fluctuate very close to its thresholds. This could be due to the Sensor's tolerance/accuracy/resolution or due to environmental factors. Once a threshold is crossed, the state of the Sensor should change. However, the state should not fluctuate between the old and new states unless the Sensor's change in the reading exceeds the hysteresis value. The units for this measurement are determined by BaseUnit*UnitModifier/RateUnit.") : Amended ToSubclass] uint32 Hysteresis;
  [Description("The Sensor's threshold values specify the ranges (min and max values) for determining whether the Sensor is operating under Normal, NonCritical, Critical or Fatal conditions. If Current Reading is between LowerThresholdNonCritical and Upper ThresholdNonCritical, then the Sensor is reporting a normal value. If CurrentReading is between LowerThresholdNonCritical and LowerThresholdCritical, then the CurrentState is NonCritical.") : Amended ToSubclass] sint32 LowerThresholdNonCritical;
  [Description("The Sensor's threshold values specify the ranges (min and max values) for determining whether the Sensor is operating under Normal, NonCritical, Critical or Fatal conditions. If the CurrentReading is between LowerThresholdNonCritical and UpperThresholdNonCritical, then the Sensor is reporting a normal value. If the CurrentReading is between UpperThreshold NonCritical and UpperThresholdCritical, then the CurrentState is NonCritical.") : Amended ToSubclass] sint32 UpperThresholdNonCritical;
  [Description("The Sensor's threshold values specify the ranges (min and max values) for determining whether the Sensor is operating under Normal, NonCritical, Critical or Fatal conditions. If the CurrentReading is between LowerThresholdCritical and Lower ThresholdFatal, then the CurrentState is Critical.") : Amended ToSubclass] sint32 LowerThresholdCritical;
  [Description("The Sensor's threshold values specify the ranges (min and max values) for determining whether the Sensor is operating under Normal, NonCritical, Critical or Fatal conditions. If the CurrentReading is between UpperThresholdCritical and Upper ThresholdFatal, then the CurrentState is Critical.") : Amended ToSubclass] sint32 UpperThresholdCritical;
  [Description("The Sensor's threshold values specify the ranges (min and max values) for determining whether the Sensor is operating under Normal, NonCritical, Critical or Fatal conditions. If the CurrentReading is below LowerThresholdFatal, then the Current State is Fatal.") : Amended ToSubclass] sint32 LowerThresholdFatal;
  [Description("The Sensor's threshold values specify the ranges (min and max values) for determining whether the Sensor is operating under Normal, NonCritical, Critical or Fatal conditions. If the CurrentReading is above UpperThresholdFatal, then the Current State is Fatal.") : Amended ToSubclass] sint32 UpperThresholdFatal;
  [Description("An array representing the thresholds supported by this Sensor.") : Amended ToSubclass,ValueMap{"0", "1", "2", "3", "4", "5"} : Amended ToSubclass,Values{"LowerThresholdNonCritical", "UpperThresholdNonCritical", "LowerThresholdCritical", "UpperThresholdCritical", "LowerThresholdFatal", "UpperThresholdFatal"} : Amended ToSubclass] uint16 SupportedThresholds[];
  [Description("An array representing the thresholds that are currently enabled for this Sensor.") : Amended ToSubclass,ValueMap{"0", "1", "2", "3", "4", "5"} : Amended ToSubclass,Values{"LowerThresholdNonCritical", "UpperThresholdNonCritical", "LowerThresholdCritical", "UpperThresholdCritical", "LowerThresholdFatal", "UpperThresholdFatal"} : Amended ToSubclass] uint16 EnabledThresholds[];
  [Description("An array representing the writable thresholds supported by Sensor.") : Amended ToSubclass,ValueMap{"0", "1", "2", "3", "4", "5"} : Amended ToSubclass,Values{"LowerThresholdNonCritical", "UpperThresholdNonCritical", "LowerThresholdCritical", "UpperThresholdCritical", "LowerThresholdFatal", "UpperThresholdFatal"} : Amended ToSubclass] uint16 SettableThresholds[];
  [Description("Indicates the accuracy of the Sensor for the measured property. The accuracy is expressed as the value of theProgrammaticAccuracy property in the units specified by the by the AccuracyUnits property. ProgrammaticAccuracy, along with Resolution, is used to calculate the actual value of the measured physical property. ProgrammaticAccuracy may vary depending on whether the Device is linear over its dynamic range.") : Amended ToSubclass] uint32 ProgrammaticAccuracy;
  [Description("Identifies the specific units in which the accuracy is expressed. The value of this property shall be a legal value of the Programmatic Units qualifier as defined in Appendix C.1 of DSP0004 V2.4 or later where the base unit is \"percent\".") : Amended ToSubclass] string AccuracyUnits;
  [Description("Indicates the method used by the sensor to produce its reading. 2 \"Measured\" shall indicate the value is measured directly by the sensor.\n3 \"Derived\" shall indicate the value is derived from other measured values that are not reported discretely by this sensor.") : Amended ToSubclass,ValueMap{"0", "2", "3", "..", "32768..65535"} : Amended ToSubclass,Values{"Unknown", "Measured", "Derived", "DMTF Reserved", "Vendor Reserved"} : Amended ToSubclass] uint16 ValueFormulation;
  [Description("This method resets the values of the thresholds to hardware defaults. This method returns 0 if successful, 1 if unsupported and any other value if an error occurred. In a subclass, the set of possible return codes could be specified, using a ValueMap qualifier on the method. The strings to which the ValueMap contents are 'translated' may also be specified in the subclass as a Values array qualifier.") : Amended ToSubclass] uint32 RestoreDefaultThresholds();
  [Description("The use of this method is being deprecated, since Current senor reading can be retrieved through the GetInstance operation. \nFor a non-linear Sensor, the resolution, accuracy, tolerance and hysteresis vary as the current reading moves. This method can be used to get these factors for a given reading. It returns 0 if successful, 1 if unsupported, and any other value if an error occurred. In a subclass, the set of possible return codes could be specified, using a ValueMap qualifier on the method. The strings to which the ValueMap contents are 'translated' may also be specified in the subclass as a Values array qualifier.") : Amended ToSubclass] uint32 GetNonLinearFactors([IN,Description("The sensor reading to get information for.") : Amended ToSubclass] sint32 SensorReading,[IN(FALSE),OUT,Description("The accuracy of the reading.") : Amended ToSubclass] sint32 Accuracy,[IN(FALSE),OUT,Description("The resolution of the reading.") : Amended ToSubclass] uint32 Resolution,[IN(FALSE),OUT,Description("The tolerance of the reading.") : Amended ToSubclass] sint32 Tolerance,[IN(FALSE),OUT,Description("The Hysteresis of the reading.") : Amended ToSubclass] uint32 Hysteresis);
};

[Description("This class is a representation of logical properties of a generic power source. Any logical device that has an aspect of producing power and thus effectively being a power source may be represented by this class or the subclass of this class.") : Amended ToSubclass,AMENDMENT, LOCALE(0x0804)] 
class CIM_PowerSource : CIM_LogicalDevice
{
  [Description("Indicates the maximum amount of power that may be drawn within the rating of the PowerSource. The units of the value shall be described by the OutputPowerUnits property. A value of zero shall indicate 'unknown'.") : Amended ToSubclass] uint32 RatedMaxOutputPower;
  [Description("Indicates the programatic units for the MaxOutputPower property.") : Amended ToSubclass] string OutputPowerUnits;
  [Description("A value of true shall indicate the output from the PowerSource is alternating current (AC). A value of false shall indicate the output from the PowerSource is direct current (DC).") : Amended ToSubclass] boolean IsACOutput;
};

[Description("Capabilities and management of the PowerSupply.The PowerSupply may have two input voltage ranges. The attributes of each input voltage (high and low voltage bounds, high and low frequency bounds, maximum input power, and maximum output power) are modeled separately. Additional attributes of the power supply including the active input voltage range and type of range switching may also be modeled.") : Amended ToSubclass,AMENDMENT, LOCALE(0x0804)] 
class CIM_PowerSupply : CIM_PowerSource
{
  [Description("Boolean indicating that the PowerSupply is a switching (instead of linear) supply.") : Amended ToSubclass] boolean IsSwitchingSupply;
  [Description("The low voltage of Input Voltage Range 1 for this Power Supply, in millivolts. A value of 0 denotes 'unknown'.") : Amended ToSubclass] uint32 Range1InputVoltageLow;
  [Description("The high voltage of Input Voltage Range 1 for this Power Supply, in millivolts. A value of 0 denotes 'unknown'.") : Amended ToSubclass] uint32 Range1InputVoltageHigh;
  [Description("The frequency (in hertz) at the low end of the Input Frequency Range 1 of this Power Supply. A value of 0 implies DC.") : Amended ToSubclass] uint32 Range1InputFrequencyLow;
  [Description("The frequency (in hertz) at the high end of the Input Frequency Range 1 of this Power Supply. A value of 0 implies DC.") : Amended ToSubclass] uint32 Range1InputFrequencyHigh;
  [Description("The low voltage of Input Voltage Range 2 for this Power Supply, in millivolts. A value of 0 denotes 'unknown'.") : Amended ToSubclass] uint32 Range2InputVoltageLow;
  [Description("The high voltage of Input Voltage Range 2 for this Power Supply, in millivolts. A value of 0 denotes 'unknown'.") : Amended ToSubclass] uint32 Range2InputVoltageHigh;
  [Description("The frequency (in hertz) at the low end of the Input Frequency Range 2 of this Power Supply. A value of 0 implies DC.") : Amended ToSubclass] uint32 Range2InputFrequencyLow;
  [Description("The frequency (in hertz) at the high end of the Input Frequency Range 2 of this Power Supply. A value of 0 implies DC.") : Amended ToSubclass] uint32 Range2InputFrequencyHigh;
  [Description("ActiveInputVoltage indicates which input voltage range is currently in use. Range 1, 2, or both can be specified using the values 3, 4, or 5, respectively. If the Supply is not currently drawing power, the value 6 (\"Neither\") can be specified. This information is necessary in the case of a UPS, a subclass of PowerSupply.") : Amended ToSubclass,ValueMap{"1", "2", "3", "4", "5", "6"} : Amended ToSubclass,Values{"Other", "Unknown", "Range 1", "Range 2", "Both", "Neither"} : Amended ToSubclass] uint16 ActiveInputVoltage;
  [Description("TypeOfRangeSwitching describes the kind of input voltage range switching that is implemented in this PowerSupply. For example, autoswitching can be specified (value=4).") : Amended ToSubclass,ValueMap{"1", "2", "3", "4", "5", "6"} : Amended ToSubclass,Values{"Other", "Unknown", "Manual", "Autoswitch", "Wide Range", "Not Applicable"} : Amended ToSubclass] uint16 TypeOfRangeSwitching;
  [Description("Represents the total output power of the PowerSupply in milliWatts. 0 denotes 'unknown'.") : Amended ToSubclass] uint32 TotalOutputPower;
  [Description("Indicates the maximum amount of power that may be drawn from this PowerSupply without causing a failure condition if the CIM_PowerSupply.ActiveInputVoltage has the value 2 or 3. The units of the value shall be described by the OutputPowerUnits property. A value of zero shall indicate 'unknown'.") : Amended ToSubclass] uint32 Range1MaxOutputPower;
  [Description("Indicates the maximum amount of power that may be drawn from this PowerSupply without causing a failure condition if the CIM_PowerSupply.ActiveInputVoltage has the value 4. The units of the value shall be described by the OutputPowerUnits property. A value of zero shall indicate 'unknown'.") : Amended ToSubclass] uint32 Range2MaxOutputPower;
  [Description("Indicates the programmatic units for the MaxOutputPowerRange1, MaxOutputPowerRange2, and MaxOutputPower properties.") : Amended ToSubclass] string OutputPowerUnits;
  [Description("Indicates the maximum amount of power that this PowerSupply may draw if the CIM_PowerSupply.ActiveInputVoltage has the value 2 or 3. The units of the value shall be described by the InputPowerUnits property. A value of zero shall indicate 'unknown'.") : Amended ToSubclass] uint32 Range1MaxInputPower;
  [Description("Indicates the maximum amount of power that this PowerSupply may draw without causing a failure condition. The units of the value shall be described by the InputPowerUnits property. A value of zero shall indicate 'unknown'.") : Amended ToSubclass] uint32 Range2MaxInputPower;
  [Description("Indicates the programmatic units for the Range1MaxInputPower and MaxInputPowerRange2 properties.") : Amended ToSubclass] string InputPowerUnits;
  [Description("A value of true shall indicate the required input of the PowerSupply is alternating current (AC). A value of false shall indicate the required input for the PowerSource is direct current (DC).") : Amended ToSubclass] boolean IsACInput;
  [Description("NumberOfPhasesUtilized shall indicate the number of phases this power supply is configured to utilize. A value of zero shall indicate zero phases are utilized or this information is unknown.") : Amended ToSubclass] uint32 NumberOfPhasesUtilized;
  [Description("NominalPhaseWiring shall indicate the phases this power supply is configured to utilize. The actual phases from which the supply is drawing may vary. For example, a power supply that utilizes two phases and is wired to three phases may cycle through any combination.") : Amended ToSubclass,ValueMap{"0", "2", "3", "4"} : Amended ToSubclass,Values{"Unknown", "A", "B", "C"} : Amended ToSubclass] uint32 NominalPhaseWiring[];
};
