(file) Return to CIM_Device25.mof CVS log (file) (dir) Up to [Pegasus] / pegasus / Schemas / CIM25

Diff for /pegasus/Schemas/CIM25/CIM_Device25.mof between version 1.1 and 1.2

version 1.1, 2001/04/08 22:06:43 version 1.2, 2001/12/13 14:53:07
Line 2 
Line 2 
 // Title:       Devices MOF specification 2.5 // Title:       Devices MOF specification 2.5
 // Filename:    CIM_Device25.mof // Filename:    CIM_Device25.mof
 // Version:     2.5 // Version:     2.5
 // Date:        12/19/2000  
 // Release:     0 // Release:     0
   // Date:        06/12/2001
   // ===================================================================
   // Copyright "2001" Distributed Management Task Force, Inc. (DMTF).
   // All rights reserved.
   // DMTF is a not-for-profit association of industry members dedicated
   // to promoting enterprise and systems management and interoperability.
   // DMTF specifications and documents may be reproduced for uses
   // consistent with this purpose by members and non-members,
   // provided that correct attribution is given.
   // As DMTF specifications may be revised from time to time,
   // the particular version and release cited should always be noted.
   // ===================================================================
 // Description: The object classes below are listed in an order that // Description: The object classes below are listed in an order that
 //              avoids forward references. Required objects, defined //              avoids forward references. Required objects, defined
 //                              by other working groups, are omitted. //                              by other working groups, are omitted.
 // ================================================================== // ==================================================================
 // Author:              DMTF System and Devices Working Group // Author:              DMTF System and Devices Working Group
 // Editor:      Michael A. Thatcher  
 // ================================================================== // ==================================================================
 // Date:  04/14/1998 - Version 2.0 // Date:  04/14/1998 - Version 2.0
 //        06/23/1998 - V2.0 Errata //        06/23/1998 - V2.0 Errata
Line 217 
Line 227 
 //              - CR494, Add to the enumerations in CIM_CacheMemory.Associativity //              - CR494, Add to the enumerations in CIM_CacheMemory.Associativity
 //      Date 07/14/00 - Version 2.4 //      Date 07/14/00 - Version 2.4
 //              - CR513a, Move Extendable Boolean up to the MediaPartition superclass //              - CR513a, Move Extendable Boolean up to the MediaPartition superclass
 //              - CR519 ERRATA CIM 2.3: correct ValueMap syntax errors in CIM_Processor.Family  //      - CR519   ERRATA CIM 2.3: correct ValueMap syntax errors in
   //                CIM_Processor.Family
 //      Date 12/01/2000 Version 2.5 //      Date 12/01/2000 Version 2.5
 //              - CR527 Add AMD Duron  processors to CIM_Processor.Family //              - CR527 Add AMD Duron  processors to CIM_Processor.Family
 //              - CR528 Add Socket 423 and Socket A (Socket 462) enumerations to //              - CR528 Add Socket 423 and Socket A (Socket 462) enumerations to
 //                      CIM_Processor.UpgradeMethod //                      CIM_Processor.UpgradeMethod
 //              - CR530 Modify the enumerations in CIM_Processor.Family (Device MOF) //              - CR530 Modify the enumerations in CIM_Processor.Family (Device MOF)
 //              - CR531 Add Transmeta Crusoe  processors's names in CIM_Processor.Family //              - CR531 Add Transmeta Crusoe  processors's names in CIM_Processor.Family
 //              - CR534 Update MappingStrings Qualifiers to stay in sync with updates to the MASTER.MIF.  //      - CR534 Update MappingStrings Qualifiers to stay in sync with
   //              updates to the MASTER.MIF.
 //              - CR535 Add "Service Processor" to CIM_Watchdog.MonitoredEntity and //              - CR535 Add "Service Processor" to CIM_Watchdog.MonitoredEntity and
 //                      CIM_Watchdog.MonitoredEntityOnLastExpiration enumeration. //                      CIM_Watchdog.MonitoredEntityOnLastExpiration enumeration.
   //  Date 05/23/2001 - Final Version 2.5
   //          Reordered classes to match Visio
   //      - CR606 Add the Aggregate qualifier where missing:
   //              PrintJobFile, NetworkAdapterRedundancyComponent,
 // //
 // =================================================================== // ===================================================================
  
Line 236 
Line 252 
 // =================================================================== // ===================================================================
 #pragma locale ("en_US") #pragma locale ("en_US")
  
   // ===================================================================
   //
   //    General Devices
   //
   // ===================================================================
  
 // =================================================================== // ===================================================================
 // DeviceConnection // DeviceConnection
Line 243 
Line 264 
    [Association,    [Association,
     Description (     Description (
        "The DeviceConnection relationship indicates that two or more "        "The DeviceConnection relationship indicates that two or more "
        "Device are connected together.")       "Device are connected together.") ]
    ]  class CIM_DeviceConnection : CIM_Dependency {
 class CIM_DeviceConnection : CIM_Dependency  
 {  
       [Override ("Antecedent"),       [Override ("Antecedent"),
        Description ("A LogicalDevice.")         Description ("A LogicalDevice.") ]
       ]  
    CIM_LogicalDevice REF Antecedent;    CIM_LogicalDevice REF Antecedent;
       [Override ("Dependent"),       [Override ("Dependent"),
        Description (        Description (
           "A second LogicalDevice connected to the Antecedent Device.")          "A second LogicalDevice connected to the Antecedent Device.") ]
       ]  
    CIM_LogicalDevice REF Dependent;    CIM_LogicalDevice REF Dependent;
       [Description (       [Description (
           "When several bus and/or connection speeds are possible, the "           "When several bus and/or connection speeds are possible, the "
Line 264 
Line 281 
           "information is not available/important to Device management, "           "information is not available/important to Device management, "
           "the property should be set to 0."),           "the property should be set to 0."),
        Units ("Bits per Second"),        Units ("Bits per Second"),
            MappingStrings {"MIF.DMTF|Bus Port Association|001.2"}         MappingStrings {"MIF.DMTF|Bus Port Association|001.2"}  ]
       ]  
    uint64 NegotiatedSpeed;    uint64 NegotiatedSpeed;
       [Description (       [Description (
           "When several bus and/or connection data widths are possible, "           "When several bus and/or connection data widths are possible, "
Line 275 
Line 291 
           "available/important to Device management, the property should "           "available/important to Device management, the property should "
           "be set to 0."),           "be set to 0."),
        Units ("Bits"),        Units ("Bits"),
            MappingStrings {"MIF.DMTF|Bus Port Association|001.3"}         MappingStrings {"MIF.DMTF|Bus Port Association|001.3"}  ]
       ]  
    uint32 NegotiatedDataWidth;    uint32 NegotiatedDataWidth;
 }; };
  
   
 // =================================================================== // ===================================================================
 // DeviceIdentity // DeviceIdentity
 // =================================================================== // ===================================================================
Line 296 
Line 312 
        "scenario is where a Device plays multiple functional roles "        "scenario is where a Device plays multiple functional roles "
        "that can not be distinguished by their hardware realization "        "that can not be distinguished by their hardware realization "
        "alone. For example, a Fibre Channel adapter might have aspects "        "alone. For example, a Fibre Channel adapter might have aspects "
        "of both a NetworkAdapter and a SCSIController.")       "of both a NetworkAdapter and a SCSIController.") ]
    ]  class CIM_DeviceIdentity: CIM_LogicalIdentity {
 class CIM_DeviceIdentity: CIM_LogicalIdentity  
 {  
       [Override ("SystemElement"),       [Override ("SystemElement"),
        Description (        Description (
         "SystemElement represents one aspect of the Device.")          "SystemElement represents one aspect of the Device.") ]
       ]  
    CIM_LogicalDevice ref SystemElement;    CIM_LogicalDevice ref SystemElement;
       [Override ("SameElement"),       [Override ("SameElement"),
        Description (        Description (
         "SameElement represents an alternate aspect of "         "SameElement represents an alternate aspect of "
         "the System entity.")          "the System entity.") ]
       ]  
    CIM_LogicalDevice ref SameElement;    CIM_LogicalDevice ref SameElement;
 }; };
  
   
 // =================================================================== // ===================================================================
 // SystemResource  // WatchDog
 // =================================================================== // ===================================================================
    [Abstract,  
     Description (  
        "An entity managed by BIOS and/or an OperatingSystem which is "  
        "available for use by software and/or LogicalDevices. Examples "  
          "of Resources in the x86 environment are IRQs, DMA channels and "  
          "memory mapped I/O.")  
    ]  
 class CIM_SystemResource : CIM_LogicalElement  
 {  
       [Description (       [Description (
         "Boolean indicating whether the Resource can be shared.")       "CIM_Watchdog is a timer implemented in system hardware. It "
       ]       "allows the hardware to monitor the state of the Operating"
    boolean Shareable;       "System, BIOS or a software component installed on the "
        "System. If the monitored component fails to re-arm the timer "
        "before its expiration, the hardware assumes that the System is "
        "in a critical state, and could reset the ComputerSystem. This "
        "feature can also be used as an application watchdog timer for "
        "a mission-critical application. In this case, the application "
        "would assume responsibility for re-arming the timer before "
        "expiration.") ]
   class CIM_Watchdog : CIM_LogicalDevice {
         [Description (
           "The entity that is currently being monitored by the WatchDog. "
           "This property is used to identify the module that is responsible "
           "for re-arming the watchdog at periodic intervals."),
          Values {"Unknown", "Other", "Operating System",
                  "Operating System Boot Process",
                  "Operating System Shutdown Process",
                  "Firmware Boot Process", "BIOS Boot Process", "Application",
                  "Service Processor"}  ]
      uint16 MonitoredEntity;
         [MaxLen (256), Description (
           "A string describing more textual information about the "
           "monitored entity ") ]
      string MonitoredEntityDescription;
         [Description (
           "The timeout interval used by the watchdog, in MicroSeconds."),
          Units ("MicroSeconds") ]
      uint32 TimeoutInterval;
         [Description (
           "Resolution of the timer. For example, if this value is 100, "
           "then the timer can expire anytime between (TimeoutInterval-"
           "100) microseconds or (TimeoutInterval+100) microseconds."),
          Units ("MicroSeconds") ]
      uint32 TimerResolution;
         [Description ("The time of the last timer expiry.") ]
      datetime TimeOfLastExpiration;
         [Description (
           "Monitored entity at the time of last timer expiry."),
          Values {"Unknown", "Other", "Operating System",
                  "Operating System Boot Process",
                  "Operating System Shutdown Process",
                  "Firmware Boot Process", "BIOS Boot Process", "Application",
                  "Service Processor"}  ]
      uint16 MonitoredEntityOnLastExpiration;
         [Description (
           "The action that should happen upon the expiry of the watchdog."),
          Values {"None - Status Only", "System Reset", "System Power Off",
                  "System Power Off, then On",
                  "Generate System NonMaskableInterrupt (NMI)",
                  "Generate System Management Interrupt (SMI)"} ]
      uint16 ActionOnExpiration;
         [Description (
           "A method to re-arm the timer. This method is only used if "
           "the MonitoredEntity is \"Application\". 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.") ]
      uint32 KeepAlive();
 }; };
  
   
 // =================================================================== // ===================================================================
 // IRQ  // CoolingDevice
 // =================================================================== // ===================================================================
    [Description ("Personal computer architecture IRQ.")]  
 class CIM_IRQ : CIM_SystemResource  
 {  
       [Propagated("CIM_ComputerSystem.CreationClassName"),  
        Key, MaxLen (256),  
        Description ("The scoping ComputerSystem's CreationClassName.")  
       ]  
    string CSCreationClassName;  
       [Propagated("CIM_ComputerSystem.Name"),  
        Key, MaxLen (256),  
          Description ("The scoping ComputerSystem's Name.")  
       ]  
    string CSName;  
       [Key, MaxLen (256),  
        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.")  
       ]  
    string CreationClassName;  
       [Key,  
          Description ("A part of the object's key value, IRQ Number."),  
        MappingStrings {"MIF.DMTF|IRQ|002.1"}  
       ]  
    uint32 IRQNumber;  
       [Description ("Availability of the IRQ."),  
          ValueMap {"1", "2", "3", "4", "5"},  
        Values {"Other", "Unknown", "Available",  
                "In Use/Not Available",  
                "In Use and Available/Shareable"},  
        MappingStrings {"MIF.DMTF|IRQ|002.2"}  
       ]  
    uint16 Availability;  
       [Description (  
           "IRQ trigger type indicating whether edge (value=4) "  
           "or level triggered (value=3) interrupts occur. Also, "  
           "\"Other\" (1) and \"Unknown\" (2) may be defined."),  
          ValueMap {"1", "2", "3", "4"},  
        Values {"Other", "Unknown", "Level", "Edge"},  
        MappingStrings {"MIF.DMTF|IRQ|002.3",  
             "MIF.DMTF|System Resource IRQ Info|001.2"}  
       ]  
    uint16 TriggerType;  
       [Description (       [Description (
           "IRQ trigger level indicating whether the interrupt is "       "Capabilities and management of CoolingDevices.") ]
           "triggered by the hardware signal going high (value=4) "  class CIM_CoolingDevice : CIM_LogicalDevice {
           "or low (value=3).  Also, \"Other\" (1) and "  
           "\"Unknown\" (2) may be defined."),  
          ValueMap {"1", "2", "3", "4"},  
        Values {"Other", "Unknown", "Active Low", "Active High"},  
        MappingStrings {"MIF.DMTF|System Resource IRQ Info|001.3"}  
       ]  
    uint16 TriggerLevel;  
       [Override ("Shareable"),  
 // Override is used to define the MappingString qualifier  
        Description (  
           "Boolean indicating whether the IRQ can be shared."),  
        MappingStrings {"MIF.DMTF|IRQ|002.4"}  
       ]  
    boolean Shareable;  
       [Description (       [Description (
         "The Hardware property indicates whether the interrupt "          "ActiveCooling is a boolean indicating that the Cooling"
         "is hardware or software based. (If TRUE, the interrupt is "          "Device provides active (as opposed to passive) cooling.") ]
         "hardware based.) On a personal computer, a hardware IRQ "     boolean ActiveCooling;
         "is a physical wire to a programmable interrupt "  
         "controller (PIC) chip, through which the CPU can be "  
         "notified of time critical events. Some IRQ lines are "  
         "reserved for standard Devices such as the keyboard, floppy "  
         "disk drives, and the system clock. A software interrupt "  
         "is a programmatic mechanism to allow an application to "  
         "get the attention of the Processor.")  
       ]  
    boolean Hardware;  
 }; };
  
   
 // =================================================================== // ===================================================================
 // MemoryMappedIO  // Refrigeration
 // =================================================================== // ===================================================================
    [Description (    [Description (
        "Personal Computer architecture Memory Mapped I/O. This class "       "Capabilities and management of a Refrigeration CoolingDevice.") ]
        "addresses both memory and port I/O resources. The property, "  class CIM_Refrigeration : CIM_CoolingDevice {
        "MappedResource, defines whether memory or I/O is mapped (and "  
        "for I/O whether the mapping is to a memory or a port space).")  
    ]  
 class CIM_MemoryMappedIO : CIM_SystemResource  
 {  
       [Propagated("CIM_ComputerSystem.CreationClassName"),  
        Key, MaxLen (256),  
        Description ("The scoping ComputerSystem's CreationClassName.")  
       ]  
    string CSCreationClassName;  
       [Propagated("CIM_ComputerSystem.Name"),  
        Key, MaxLen (256),  
          Description ("The scoping ComputerSystem's Name.")  
       ]  
    string CSName;  
       [Key, MaxLen (256),  
        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.")  
       ]  
    string CreationClassName;  
       [Key, Description (  
           "A part of the object's key value, the starting address of "  
           "memory mapped I/O."),  
        MappingStrings {"MIF.DMTF|Memory Mapped I/O|001.1"}  
       ]  
    uint64 StartingAddress;  
       [Description ("Ending address of memory mapped I/O."),  
        MappingStrings {"MIF.DMTF|Memory Mapped I/O|001.2"}  
       ]  
    uint64 EndingAddress;  
       [Description (  
         "Type of memory mapped I/O. MappedResource defines whether "  
         "memory or I/O is mapped, and for I/O, whether the mapping "  
         "is to a memory or a port space."),  
        Values {"Other", "Mapped Memory", "I/O Mapped to Memory Space",  
              "I/O Mapped to Port Space"}  
       ]  
    uint16 MappedResource;  
 }; };
  
   
 // =================================================================== // ===================================================================
 // MemoryResource  // HeatPipe
 // =================================================================== // ===================================================================
      [Description (
        "Capabilities and management of a HeatPipe CoolingDevice.") ]
   class CIM_HeatPipe : CIM_CoolingDevice {
   };
   
  
   // ===================================================================
   // Fan
   // ===================================================================
         [Description (         [Description (
         "Since the MemoryMappedIO class applies to memory AND port "       "Capabilities and management of a Fan CoolingDevice.") ]
         "resources, there is the potential for key conflict. For example, "  class CIM_Fan : CIM_CoolingDevice {
         "both a memory resource and a port resource may be located at "        [Description (
         "address 0. Since StartingAddress is the distinguishing key of "          "Indication of whether the fan supports variable speeds.") ]
         "MemoryMappedIO, two instances would be created with the same key. "     boolean VariableSpeed;
         "This is prevented by defining memory and port resource subclasses "        [Description (
         "of MemoryMappedIO, and allowing the CreationClassName key property "          "DesiredSpeed is the currently requested fan speed, "
         "to distinguish between them and force uniqueness in their keys.")          "defined in Revolutions per Minute, when a variable speed fan "
         ]          "is supported (VariableSpeed boolean = TRUE). The current "
 class CIM_MemoryResource : CIM_MemoryMappedIO          "speed is determined via a sensor (CIM_Tachometer) that is "
 {          "associated with the Fan using the CIM_AssociatedSensor "
           "relationship."),
          Units ("Revolutions per Minute") ]
      uint64 DesiredSpeed;
         [Description (
           "Requests that the Fan speed be set to the "
           "value specified in the method's input parameter. 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' may also be specified in the "
           "subclass as a Values array qualifier.") ]
      uint32 SetSpeed (
          [IN] uint64 DesiredSpeed);
 }; };
  
   
 // =================================================================== // ===================================================================
 // PortResource  // AssociatedCooling
 // =================================================================== // ===================================================================
      [Association, Description (
        "Many Devices, such as processors or power supplies, require "
        "their own cooling devices.  This association indicates where "
        "fans or other CoolingDevices are specific to a Device, "
        "versus providing enclosure or cabinet cooling.") ]
   class CIM_AssociatedCooling : CIM_Dependency {
         [Override ("Antecedent"),
          Description ("The CoolingDevice.") ]
      CIM_CoolingDevice REF Antecedent;
         [Override ("Dependent"),
          Description ("The LogicalDevice being cooled.") ]
      CIM_LogicalDevice REF Dependent;
   };
  
   
   // ===================================================================
   // UserDevice
   // ===================================================================
      [Abstract, Description (
        "UserDevices are LogicalDevices that allow a ComputerSystem's "
        "users to input, view or hear data.  It is a superclass from "
        "which other classes, such as Keyboard or DesktopMonitor, "
        "descend.") ]
   class CIM_UserDevice : CIM_LogicalDevice {
         [Description (         [Description (
         "Since the MemoryMappedIO class applies to memory AND port "          "An indication of whether the Device is locked, preventing "
         "resources, there is the potential for key conflict. For example, "          "user input or output.") ]
         "both a memory resource and a port resource may be located at "     boolean IsLocked;
         "address 0. Since StartingAddress is the distinguishing key of "  
         "MemoryMappedIO, two instances would be created with the same key. "  
         "This is prevented by defining memory and port resource subclasses "  
         "of MemoryMappedIO, and allowing the CreationClassName key property "  
         "to distinguish between them and force uniqueness in their keys.")  
         ]  
 class CIM_PortResource : CIM_MemoryMappedIO  
 {  
 }; };
  
   
 // =================================================================== // ===================================================================
 // DMA  // PointingDevice
 // =================================================================== // ===================================================================
    [Description ("Personal computer architecture DMA.")]  
 class CIM_DMA : CIM_SystemResource  
 {  
       [Propagated("CIM_ComputerSystem.CreationClassName"),  
        Key, MaxLen (256),  
        Description ("The scoping ComputerSystem's CreationClassName.")  
       ]  
    string CSCreationClassName;  
       [Propagated("CIM_ComputerSystem.Name"),  
        Key, MaxLen (256),  
          Description ("The scoping ComputerSystem's Name.")  
       ]  
    string CSName;  
       [Key, MaxLen (256),  
        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.")  
       ]  
    string CreationClassName;  
       [Key, Description (  
           "A part of the object's key value, the DMA Channel number."),  
        MappingStrings {"MIF.DMTF|DMA|001.1"}  
       ]  
    uint32 DMAChannel;  
       [Description ("Availability of the DMA."),  
          ValueMap {"1", "2", "3", "4", "5"},  
        Values {"Other", "Unknown", "Available",  
                "In Use/Not Available",  
                "In Use and Available/Shareable"},  
        MappingStrings {"MIF.DMTF|DMA|001.2"}  
       ]  
    uint16 Availability;  
       [Description (       [Description (
           "Indication that the DMA Channel supports burst mode."),       "PointingDevice represents those Devices used to 'point' to "
        MappingStrings {"MIF.DMTF|DMA|001.3"}       "regions of a Display.") ]
       ]  class CIM_PointingDevice : CIM_UserDevice {
    boolean BurstMode;        [Description ("The type of the pointing device."),
       [Description (         ValueMap {"1", "2", "3", "4", "5", "6", "7", "8", "9"},
           "An array indicating all the transfer widths (in bits) "         Values {"Other", "Unknown", "Mouse", "Track Ball", "Track Point",
           "supported by this DMA Channel. Permissible values "                 "Glide Point", "Touch Pad", "Touch Screen",
           "are 8, 16, 32, 64 or 128 bits.  If unknown, enter 0."),                 "Mouse - Optical Sensor"},
        Units ("Bits"),         MappingStrings {"MIF.DMTF|Pointing Device|003"} ]
          ValueMap {"0", "8", "16", "32", "64", "128"},     uint16 PointingType;
        MappingStrings {"MIF.DMTF|System Resource DMA Info|001.2"}  
       ]  
    uint16 TransferWidths[];  
       [Description (       [Description (
           "An integer indicating the DMA Channel address size in "          "Number of buttons. If the PointingDevice has no buttons, "
           "bits. Permissible values are 8, 16, 32 or 64 bits. "          "enter 0."),
           "If unknown, enter 0."),         MappingStrings {"MIF.DMTF|Pointing Device|003"} ]
         Units ("Bits"),     uint8 NumberOfButtons;
          ValueMap {"0", "8", "16", "32", "64"},  
        MappingStrings {"MIF.DMTF|System Resource DMA Info|001.3"}  
       ]  
    uint16 AddressSize;  
       [Description (       [Description (
           "The maximum number of bytes that can be transferred by this "          "Integer indicating whether the PointingDevice is configured "
           "DMA Channel. If unknown, enter 0."),          "for right (value=2) or left handed operation (value=3). "
        Units ("Bytes"),          "Also, the values, \"Unknown\" (0) and \"Not Applicable\" (1), "
        MappingStrings {"MIF.DMTF|System Resource DMA Info|001.4"}          "can be defined."),
       ]         Values {"Unknown", "Not Applicable", "Right Handed Operation",
    uint32 MaxTransferSize;                 "Left Handed Operation"} ]
      uint16 Handedness;
       [Description (       [Description (
           "Indicates whether DMA may execute in 'count by byte' mode "          "Tracking resolution of the PointingDevice in Counts per "
           "(value=4) or not (value=3).  Also, \"Other\" (1) and "          "Inch."),
           "\"Unknown\" (2) may be defined."),         Units ("Counts per Inch") ]
          ValueMap {"1", "2", "3", "4"},     uint32 Resolution;
        Values {"Other", "Unknown",  };
                "Not execute in 'count by byte' mode",  
                "Execute in 'count by byte' mode"},  
        MappingStrings {"MIF.DMTF|System Resource DMA Info|001.7"}  // ===================================================================
       ]  // Keyboard
    uint16 ByteMode;  // ===================================================================
       [Description (       [Description (
           "Indicates whether DMA may execute in 'count by word' mode "       "Capabilities and management of the Keyboard LogicalDevice.") ]
           "(value=4) or not (value=3).  Also, \"Other\" (1) and "  class CIM_Keyboard : CIM_UserDevice {
           "\"Unknown\" (2) may be defined."),        [Description ("Number of function keys on the Keyboard.") ]
          ValueMap {"1", "2", "3", "4"},     uint16 NumberOfFunctionKeys;
        Values {"Other", "Unknown",  
                "Not execute in 'count by word' mode",  
                "Execute in 'count by word' mode"},  
        MappingStrings {"MIF.DMTF|System Resource DMA Info|001.8"}  
       ]  
    uint16 WordMode;  
       [Description (       [Description (
           "DMA channel timing.  For example, \"Type A\" (value "          "A free-form string indicating the format and layout of the "
           "=4) or \"Type F\" (6) could be specified."),          "Keyboard."),
          ValueMap {"1", "2", "3", "4", "5", "6"},         MappingStrings {"MIF.DMTF|Keyboard|004"} ]
        Values {"Other", "Unknown", "ISA Compatible", "Type A",     string Layout;
                "Type B", "Type F"},  
        MappingStrings {"MIF.DMTF|System Resource DMA Info|001.9"}  
       ]  
    uint16 ChannelTiming;  
       [Description (       [Description (
           "Indicates whether C type (burst) timing is supported "          "An integer indicating whether a hardware-level password is "
           "(value=5) or not (value=4). Also, \"Other\" (1), "          "enabled at the keyboard (value=4), preventing local input. "
           "\"Unknown\" (2) and \"ISA Compatible\" (3) are defined."),          "Other values are:  \"Disabled\" (3), \"Not Implemented\" (5), "
           "\"Other\" (1) and \"Unknown\" (2)."),
          ValueMap {"1", "2", "3", "4", "5"},          ValueMap {"1", "2", "3", "4", "5"},
        Values {"Other", "Unknown", "ISA Compatible", "Not Supported",         Values {"Other", "Unknown", "Disabled", "Enabled",
                "Supported"},                 "Not Implemented"},
        MappingStrings {"MIF.DMTF|System Resource DMA Info|001.10"}         MappingStrings {"MIF.DMTF|System Hardware Security|001.2"} ]
       ]     uint16 Password;
    uint16 TypeCTiming;  
 }; };
  
 // ===================================================================  
 // ComputerSystemResource  
 // ===================================================================  
    [Association, Aggregation,  
     Description (  
        "An association between a ComputerSystem and the System"  
        "Resources available on it.")  
    ]  
 class CIM_ComputerSystemResource : CIM_SystemComponent  
 {  
       [Override ("GroupComponent"), Aggregate,  
        Description ("The ComputerSystem."),  
        Min (1), Max (1)  
       ]  
    CIM_ComputerSystem REF GroupComponent;  
       [Override ("PartComponent"),  
        Description ("A SystemResource of the ComputerSystem.")  
       ]  
    CIM_SystemResource REF PartComponent;  
 };  
  
 // =================================================================== // ===================================================================
 // ComputerSystemIRQ  // Display
 // =================================================================== // ===================================================================
    [Association, Aggregation,     [Abstract, Description (
     Description (       "Display is a superclass for grouping the miscellaneous display "
        "An association between a ComputerSystem and the IRQs "       "devices that exist.") ]
        "available on it.")  class CIM_Display : CIM_UserDevice {
    ]  
 class CIM_ComputerSystemIRQ : CIM_ComputerSystemResource  
 {  
         [Override ("PartComponent"),  
        Description ("An IRQ of the ComputerSystem."),  
          Weak  
       ]  
    CIM_IRQ REF PartComponent;  
 }; };
  
 // ===================================================================  
 // ComputerSystemMappedIO  
 // ===================================================================  
    [Association, Aggregation,  
     Description (  
        "An association between a ComputerSystem and the Memory Mapped "  
        "I/O ports available on it.")  
    ]  
 class CIM_ComputerSystemMappedIO : CIM_ComputerSystemResource  
 {  
         [Override ("PartComponent"),  
        Description (  
           "A memory mapped I/O port of the ComputerSystem."),  
          Weak  
       ]  
    CIM_MemoryMappedIO REF PartComponent;  
 };  
  
 // =================================================================== // ===================================================================
 // ComputerSystemDMA  // DesktopMonitor
 // =================================================================== // ===================================================================
    [Association, Aggregation,     [Description (
     Description (       "Capabilities and management of the DesktopMonitor (CRT) "
        "An association between a ComputerSystem and the DMA channels "       "LogicalDevice.") ]
        "available on it.")  class CIM_DesktopMonitor : CIM_Display {
    ]        [Description (
 class CIM_ComputerSystemDMA : CIM_ComputerSystemResource          "The type of DesktopMonitor or CRT. For example, "
 {          "multiscan color or monochrome monitors (values 2 or 3, "
         [Override ("PartComponent"),          "respectively) can be indicated in this property."),
        Description ("A DMA channel of the ComputerSystem."),         Values {"Unknown", "Other", "Multiscan Color",
          Weak                 "Multiscan Monochrome", "Fixed Frequency Color",
       ]                 "Fixed Frequency Monochrome"} ]
    CIM_DMA REF PartComponent;     uint16 DisplayType;
         [Description (
           "Monitor's bandwidth in MHertz. If unknown, enter 0."),
          Units ("MegaHertz") ]
      uint32 Bandwidth;
         [Description (
           "The logical height of the Display in screen coordinates.") ]
      uint32 ScreenHeight;
         [Description (
           "The logical width of the Display in screen coordinates.") ]
      uint32 ScreenWidth;
 }; };
  
 // ===================================================================  
 // AllocatedResource  
 // ===================================================================  
    [Association,  
     Description (  
        "An association between LogicalDevices and SystemResources, "  
        "indicating that the Resource is assigned to the Device.")  
    ]  
 class CIM_AllocatedResource : CIM_Dependency  
 {  
       [Override ("Antecedent"),  
        Description ("The Resource.")  
       ]  
    CIM_SystemResource REF Antecedent;  
       [Override ("Dependent"),  
        Description (  
           "The LogicalDevice to which the Resource is assigned.")  
       ]  
    CIM_LogicalDevice REF Dependent;  
 };  
  
 // =================================================================== // ===================================================================
 // AllocatedDMA  // FlatPanel
 // =================================================================== // ===================================================================
    [Association,  
     Description (  
          "An association between a LogicalDevice and a DMA System"  
          "Resource indicating that the DMA Channel is assigned to the "  
          "Device.")  
    ]  
 class CIM_AllocatedDMA : CIM_AllocatedResource  
 {  
         [Override ("Antecedent"),  
          Description ("The DMA Channel.")  
         ]  
    CIM_DMA REF Antecedent;  
         [Description (         [Description (
           "Boolean indicating whether the LogicalDevice can act as a "       "Capabilities and management of the FlatPanel LogicalDevice.") ]
           "bus master on the DMA Channel."),  class CIM_FlatPanel : CIM_Display  {
          MappingStrings {"MIF.DMTF|System Resource DMA Info|001.6"}        [Description ("FlatPanel's horizontal resolution in Pixels."),
         ]         Units ("Pixels") ]
    boolean BusMaster;     uint32 HorizontalResolution;
         [Description ("FlatPanel's vertical resolution in Pixels."),
          Units ("Pixels") ]
      uint32 VerticalResolution;
         [Description (
           "A FlatPanel's scan mode indicating either single "
           "(value=2) or dual scan (3)."),
          Values {"Unknown", "Other", "Single Scan", "Dual Scan"} ]
      uint16 ScanMode;
         [Description (
           "An integer enumeration describing the type of flat panel "
           "display."),
          Values {"Unknown", "Other", "Passive Matrix LCD",
                  "Active Matrix LCD", "Cholesteric LCD",
                  "Field Emission Display",
                  "Electro Luminescent Display", "Gas Plasma", "LED"} ]
      uint16 DisplayType;
         [Description (
           "A description of the display illumination type. For example, "
           "backlit (value=2) or reflective (4) can be specified."),
          Values {"Unknown", "Other", "Backlit", "Edgelit", "Reflective"} ]
      uint16 LightSource;
         [Description (
          "Boolean indicating whether the FlatPanel supports color "
          "display.") ]
      boolean SupportsColor;
 }; };
  
   
 // =================================================================== // ===================================================================
 // DeviceServiceImplementation  // Scanner
 // =================================================================== // ===================================================================
    [Association,     [Description (
     Description (       "Capabilities and management of the Scanner LogicalDevice.") ]
        "An association between a Service and how it is implemented. "  class CIM_Scanner : CIM_LogicalDevice {
        "The cardinality of this association is many-to-many. "  
        "A Service may be provided by more than one Logical"  
        "Device, operating in conjunction.  And, any Device may "  
        "provide more than one Service.  When multiple Devices are "  
        "associated with a single Service, it is assumed that these "  
        "elements operate in conjunction to provide the Service.  If "  
        "different implementations of a Service exist, each of these "  
        "implementations would result in individual instantiations "  
        "of the Service object.  These individual instantiations "  
        "would then have associations to the unique implementations.")  
    ]  
 class CIM_DeviceServiceImplementation : CIM_Dependency  
 {  
       [Override ("Antecedent"),  
        Description ("The LogicalDevice.")  
       ]  
    CIM_LogicalDevice REF Antecedent;  
       [Override ("Dependent"),  
        Description ("The Service implemented using the LogicalDevice.")  
       ]  
    CIM_Service REF Dependent;  
 }; };
  
   
 // =================================================================== // ===================================================================
 // DeviceSAPImplementation  // Battery
 // =================================================================== // ===================================================================
    [Association,  
     Description (  
        "An association between a ServiceAccessPoint and how "  
        "it is implemented. The cardinality of this association "  
        "is many-to-many.  A SAP may be provided by more "  
        "than one LogicalDevice, operating in conjunction.  And, any "  
        "Device may provide more than one ServiceAccessPoint. "  
        "When many LogicalDevices are associated with a single "  
        "SAP, it is assumed that these elements operate in "  
        "conjunction to provide the AccessPoint.  If different "  
        "implementations of a SAP exist, each of these implementations "  
        "would result in individual instantiations of the "  
        "ServiceAccessPoint object.  These individual instantiations "  
        "would then have associations to the unique implementations.")  
    ]  
 class CIM_DeviceSAPImplementation : CIM_Dependency  
 {  
       [Override ("Antecedent"),  
        Description ("The LogicalDevice.")  
       ]  
    CIM_LogicalDevice REF Antecedent;  
       [Override ("Dependent"),  
        Description (  
          "The ServiceAccessPoint implemented using the LogicalDevice.")  
       ]  
    CIM_ServiceAccessPoint REF Dependent;  
 };  
   
 // ==================================================================  
 // DeviceErrorCounts  
 // ==================================================================  
    [Description (  
          "DeviceErrorCounts is a statistical class containing error-"  
          "related counters for a LogicalDevice. The types of errors "  
          "are as defined by CCITT (Rec X.733) and ISO (IEC 10164-4).")  
    ]  
 class CIM_DeviceErrorCounts : CIM_StatisticalInformation  
 {  
         [Propagated ("CIM_LogicalDevice.SystemCreationClassName"),  
          Key, MaxLen (256),  
          Description ("The scoping System's CreationClassName. ")  
         ]  
    string SystemCreationClassName;  
         [Propagated ("CIM_LogicalDevice.SystemName"),  
          Key, MaxLen (256),  
          Description ("The scoping System's Name. ")  
         ]  
    string SystemName;  
         [Propagated ("CIM_LogicalDevice.CreationClassName"),  
          Key, MaxLen (256),  
          Description ("The scoping Device's CreationClassName. ")  
         ]  
    string DeviceCreationClassName;  
         [Propagated ("CIM_LogicalDevice.DeviceID"),  
          Key, MaxLen (64),  
          Description ("The scoping Device's ID. ")  
         ]  
    string DeviceID;  
         [Override ("Name"),  
          Key, MaxLen (256),  
          Description (  
           "The inherited Name serves as part of the key for the "  
           "DeviceErrorCounts instance. The object is scoped by "  
           "the LogicalDevice to which the statistics apply. ")  
         ]  
    string Name;  
         [Description ("Count of the indeterminate errors. "),  
        Counter  
       ]  
    uint64 IndeterminateErrorCount;  
         [Description ("Count of the critical errors. "),  
          MappingStrings {"MIF.DMTF|Operational State|006"},  
        Counter  
       ]  
    uint64 CriticalErrorCount;  
         [Description ("Count of the major errors. "),  
          MappingStrings {"MIF.DMTF|Operational State|006"},  
        Counter  
       ]  
    uint64 MajorErrorCount;  
         [Description ("Count of the minor errors. "),  
        Counter  
       ]  
    uint64 MinorErrorCount;  
         [Description ("Count of the warnings. "),  
          MappingStrings {"MIF.DMTF|Operational State|006"},  
        Counter  
       ]  
    uint64 WarningCount;  
         [Description (         [Description (
           "Method to reset the error and warning counters. The method "       "Capabilities and management of the Battery LogicalDevice. "
           "takes one parameter as input - an integer indicating which "       "This class applies to both batteries in Laptop Systems and "
           "counter to reset. For this input parameter, 0 indicates all, "       "other internal/external batteries, such as used in, "
           "1 indicates a reset of the indeterminate error counter, "       "or as UPSs.") ]
           "2 the critical error counter, 3 the major error counter, "  class CIM_Battery : CIM_LogicalDevice  {
           "4 the minor error counter and 5 the warning counter. The "        [Description (
           "method returns 0 if successful, 1 if not supported, and any "          "Description of the Battery's charge status. Values such "
           "other value if an error occurred. A method is specified so "          "as \"Fully Charged\" (value=3) or \"Partially Charged\" "
           "that the LogicalDevice's instrumentation, which tabulates "          "(11) can be specified. The value, 10, is "
           "the errors and warnings, can also reset its internal "          "not valid in the CIM Schema since in DMI it represents "
           "processing and counters.\n"          "that no battery is installed. In this case, this object "
         "In a subclass, the set of possible return codes could be "          "should not be instantiated."),
         "specified, using a ValueMap qualifier on the method. The "         ValueMap {"1", "2", "3", "4", "5", "6", "7", "8", "9", "10",
         "strings to which the ValueMap contents are 'translated' "                   "11"},
         "may also be specified in the subclass as a Values "         Values {"Other", "Unknown", "Fully Charged",
         "array qualifier.")                 "Low", "Critical", "Charging", "Charging and High",
         ]                 "Charging and Low", "Charging and Critical", "Undefined",
    uint32 ResetCounter ([IN, Values {"All",                 "Partially Charged"},
     "Indeterminate Error Counter", "Critical Error Counter",         MappingStrings {"MIF.DMTF|Portable Battery|003"} ]
     "Major Error Counter", "Minor Error Counter",     uint16 BatteryStatus;
     "Warning Counter"}] uint16 SelectedCounter);        [Description (
           "TimeOnBattery indicates the elapsed time in seconds "
           "since the ComputerSystem, UPS, ... last switched to "
           "battery power, or the time since the System or UPS "
           "was last restarted, whichever is less. Zero shall "
           "be returned if the Battery is 'on line'."),
          Units ("Seconds") ]
      uint32 TimeOnBattery;
         [Description (
           "EstimatedRunTime is an estimate in minutes of the "
           "time to battery charge depletion under the present "
           "load conditions if the utility power is off, or lost "
           "and remains off, or a Laptop is disconnected from a "
           "power source."),
          Units ("Minutes"),
          MappingStrings {"MIF.DMTF|Portable Battery|003"} ]
      uint32 EstimatedRunTime;
         [Gauge, Description (
           "An estimate of the percentage of full charge remaining."),
          Units ("Percent") ]
      uint16 EstimatedChargeRemaining;
         [Description (
           "An enumeration that describes the Battery's chemistry."),
          ValueMap {"1", "2", "3", "4", "5", "6", "7", "8"},
          Values {"Other", "Unknown", "Lead Acid", "Nickel Cadmium",
                  "Nickel Metal Hydride", "Lithium-ion", "Zinc air",
                  "Lithium Polymer"},
          MappingStrings {"MIF.DMTF|Portable Battery|003"} ]
      uint16 Chemistry;
         [Description (
           "The design capacity of the battery in mWatt-hours. "
           "If this property is not supported, enter 0."),
          Units ("MilliWattHours"),
          MappingStrings {"MIF.DMTF|Portable Battery|003"} ]
      uint32 DesignCapacity;
         [Description (
           "The full charge capacity of the battery in mWatt-hours. "
           "Comparison of this value to the Battery DesignCapacity "
           "determines when the Battery requires replacement.  A "
           "Battery's end of life is typically when the FullCharge"
           "Capacity falls below 80% of the DesignCapacity. "
           "If this property is not supported, enter 0."),
          Units ("MilliWattHours"),
          MappingStrings {"MIF.DMTF|Portable Battery|003"} ]
      uint32 FullChargeCapacity;
         [Description (
           "The design voltage of the battery in mVolts. If "
           "this attribute is not supported, enter 0."),
          Units ("MilliVolts"),
          MappingStrings {"MIF.DMTF|Portable Battery|003"} ]
      uint64 DesignVoltage;
         [MaxLen (64), Description (
           "The Smart Battery Data Specification version number "
           "supported by this Battery. If the Battery does not "
           "support this function, the value should be left blank."),
          MappingStrings {"MIF.DMTF|Portable Battery|003"} ]
      string SmartBatteryVersion;
         [Description (
           "The remaining time to charge the battery fully in minutes "
           "at the current charging rate and usage."),
          Units ("Minutes"),
          MappingStrings {"MIF.DMTF|Portable Battery|003"} ]
      uint32 TimeToFullCharge;
       [Description (
           "Indicates the Battery's expected lifetime in minutes, "
           "assuming that the Battery is fully charged. This property "
           "represents the total expected life of the Battery, not its "
           "current remaining life, which is indicated by the "
           "EstimatedRunTime property. "),
          Units ("Minutes") ]
      uint32 ExpectedLife;
         [Description (
           "MaxRechargeTime indicates the maximum time, in minutes, "
           "to fully charge the Battery. This property represents the "
           "time to recharge a fully depleted Battery, not the current "
           "remaining charging time, which is indicated in the "
           "TimeToFullCharge property. "),
          Units ("Minutes") ]
      uint32 MaxRechargeTime;
 }; };
  
 // ==================================================================  
 // ErrorCountersForDevice  
 // ==================================================================  
    [Association,  
     Description (  
        "ErrorCountersForDevice relates the DeviceErrorCounts class "  
          "to the LogicalDevice to which it applies. ")  
    ]  
 class CIM_ErrorCountersForDevice : CIM_Statistics  
 {  
         [Override ("Stats"),  
          Description (  
           "The statistical object - in this case, the error counter "  
           "class. "),  
          Weak  
         ]  
    CIM_DeviceErrorCounts REF Stats;  
         [Override ("Element"),  
          Description ("The Device to which the error counters apply. "),  
          Min(1), Max(1)  
         ]  
    CIM_LogicalDevice REF Element;  
 };  
  
 // =================================================================== // ===================================================================
 // VideoBIOSFeature  // PowerSupply
 // =================================================================== // ===================================================================
    [Description (    [Description (
        "VideoBIOSFeature represents the capabilities of the low-level "       "Capabilities and management of the PowerSupply LogicalDevice.") ]
        "software that is used to bring up, configure and use a "  class CIM_PowerSupply : CIM_LogicalDevice   {
        "ComputerSystem's VideoController and Display.")  
    ]  
 class CIM_VideoBIOSFeature : CIM_SoftwareFeature  
 {  
       [Description (       [Description (
           "An array of integers that specify the features supported by "          "Boolean indicating that the PowerSupply is a switching "
           "the VideoBIOS. For example, one could indicate support for "          "(vs linear) supply.") ]
           "VESA power management (value=6) or video BIOS shadowing (8). "     boolean IsSwitchingSupply;
           "The value, 3, is not valid in the CIM Schema since in DMI it "  
           "represents that no BIOS Features are supported.  In this "  
           "case, the object should not be instantiated."),  
          ValueMap {"1", "2", "3", "4", "5", "6", "7", "8", "9"},  
        Values {"Other", "Unknown", "Undefined", "Standard Video BIOS",  
                "VESA BIOS Extensions Supported",  
                "VESA Power Management Supported",  
                "VESA Display Data Channel Supported",  
                "Video BIOS Shadowing Allowed", "Video BIOS Upgradeable"},  
          ArrayType ("Indexed"),  
        MappingStrings {"MIF.DMTF|Video BIOS Characteristic|001.3"},  
          ModelCorrespondence {  
                "CIM_VideoBIOSFeature.CharacteristicDescriptions"}  
       ]  
    uint16 Characteristics[];  
       [Description (       [Description (
           "An array of free-form strings providing more detailed "          "The low voltage of Input Voltage Range 1 for this Power"
           "explanations for any of the VideoBIOS features indicated in "          "Supply, in millivolts. A value of 0 denotes 'unknown'."),
           "the Characteristics array. Note, each entry of this array "         Units ("MilliVolts"),
           "is related to the entry in the Characteristics array that "         MappingStrings {"MIF.DMTF|Power Supply|004"} ]
           "is located at the same index."),     uint32 Range1InputVoltageLow;
        ArrayType ("Indexed"),  
          MappingStrings {"MIF.DMTF|Video BIOS Characteristic|001.4"},  
          ModelCorrespondence {"CIM_VideoBIOSFeature.Characteristics"}  
       ]  
    string CharacteristicDescriptions[];  
 };  
   
 // ===================================================================  
 // VideoBIOSElement  
 // ===================================================================  
    [Description (    [Description (
        "VideoBIOSElement represents the low-level software that is "          "The high voltage of Input Voltage Range 1 for this Power"
        "loaded into non-volatile storage and used to bring up, "          "Supply, in millivolts. A value of 0 denotes 'unknown'."),
        "configure and access a ComputerSystem's VideoController and "         Units ("MilliVolts"),
        "Display.")         MappingStrings {"MIF.DMTF|Power Supply|004"} ]
    ]     uint32 Range1InputVoltageHigh;
 class CIM_VideoBIOSElement : CIM_SoftwareElement  
 {  
       [Override ("Version"),  
        MappingStrings {"MIF.DMTF|Video BIOS|001.3"}  
       ]  
    string Version;  
       [Override ("Manufacturer"),  
        MappingStrings {"MIF.DMTF|Video BIOS|001.2"}  
       ]  
    string Manufacturer;  
       [Description (       [Description (
           "If true, indicates that the Video BIOS is shadowed."),          "The frequency (in Hertz) at the low end of this Power"
        MappingStrings {"MIF.DMTF|Video BIOS|001.5"}          "Supply's Input Frequency Range 1. A value of zero "
       ]          "implies DC."),
    boolean IsShadowed;         Units ("Hertz"),
          MappingStrings {"MIF.DMTF|Power Supply|004"} ]
      uint32 Range1InputFrequencyLow;
                 [Description (                 [Description (
                 "Date that this BIOS was released."),          "The frequency (in Hertz) at the high end of this Power"
                 MappingStrings {"MIF.DMTF|Video BIOS|001.4"}          "Supply's Input Frequency Range 1. A value of zero "
                 ]          "implies DC."),
         datetime ReleaseDate;         Units ("Hertz"),
          MappingStrings {"MIF.DMTF|Power Supply|004"} ]
      uint32 Range1InputFrequencyHigh;
         [Description (
           "The low voltage of Input Voltage Range 2 for this Power"
           "Supply, in millivolts. A value of 0 denotes 'unknown'."),
          Units ("MilliVolts"),
          MappingStrings {"MIF.DMTF|Power Supply|004"} ]
      uint32 Range2InputVoltageLow;
         [Description (
           "The high voltage of Input Voltage Range 2 for this Power"
           "Supply, in millivolts. A value of 0 denotes 'unknown'."),
          Units ("MilliVolts"),
          MappingStrings {"MIF.DMTF|Power Supply|004"} ]
      uint32 Range2InputVoltageHigh;
         [Description (
           "The frequency (in Hertz) at the low end of this Power"
           "Supply's Input Frequency Range 2. A value of zero "
           "implies DC."),
          Units ("Hertz"),
          MappingStrings {"MIF.DMTF|Power Supply|004"} ]
      uint32 Range2InputFrequencyLow;
         [Description (
           "The frequency (in Hertz) at the high end of this Power"
           "Supply's Input Frequency Range 2. A value of zero "
           "implies DC."),
          Units ("Hertz"),
          MappingStrings {"MIF.DMTF|Power Supply|004"} ]
      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."),
          ValueMap {"1", "2", "3", "4", "5", "6"},
          Values {"Other", "Unknown", "Range 1", "Range 2", "Both",
                  "Neither"},
          MappingStrings {"MIF.DMTF|Power Supply|004"} ]
      uint16 ActiveInputVoltage;
         [Description (
           "TypeOfRangeSwitching describes the kind of input voltage "
           "range switching implemented in this PowerSupply. For "
           "example, autoswitching can be specified (value=4)."),
          ValueMap {"1", "2", "3", "4", "5", "6"},
          Values {"Other", "Unknown", "Manual", "Autoswitch",
                  "Wide Range", "Not Applicable"},
          MappingStrings {"MIF.DMTF|Power Supply|004"} ]
      uint16 TypeOfRangeSwitching;
         [Description (
           "Represents the total output power of the PowerSupply in "
           "milliWatts. 0 denotes 'unknown'."),
          Units ("MilliWatts"),
          MappingStrings {"MIF.DMTF|Power Supply|004"} ]
      uint32 TotalOutputPower;
 }; };
  
 // ===================================================================  
 // VideoBIOSFeatureVideoBIOSElements  
 // ===================================================================  
    [Association,  
     Aggregation,  
     Description (  
        "A link between VideoBIOSFeature and its aggregated "  
          "VideoBIOSElements.")  
    ]  
 class CIM_VideoBIOSFeatureVideoBIOSElements : CIM_SoftwareFeatureSoftwareElements  
 {  
       [Override ("GroupComponent"), Aggregate,  
        Description ("The VideoBIOSFeature.")  
       ]  
    CIM_VideoBIOSFeature REF GroupComponent;  
       [Override ("PartComponent"),  
        Description (  
           "The VideoBIOSElement that implements the capabilities "  
           "described by VideoBIOSFeature.")  
       ]  
    CIM_VideoBIOSElement REF PartComponent;  
 };  
  
 // =================================================================== // ===================================================================
 // DeviceSoftware  // SuppliesPower
 // =================================================================== // ===================================================================
    [Association,     [Association, Description (
     Description (       "The SuppliesPower relationship indicates that a Device is in "
        "The DeviceSoftware relationship identifies any software that "       "the power domain of the referenced PowerSupply or UPS. "
        "is associated with a Device - such as drivers, configuration "       "It indicates which Device(s) are dependent on the PowerSupply, "
        "or application software, or firmware.")       "and hence, which Devices are affected if the Supply is lost.") ]
    ]  class CIM_SuppliesPower : CIM_Dependency {
 class CIM_DeviceSoftware : CIM_Dependency  
 {  
       [Override ("Antecedent"),       [Override ("Antecedent"),
        Description ("The SoftwareElement.")         Description ("The Supply providing power.") ]
       ]     CIM_PowerSupply REF Antecedent;
    CIM_SoftwareElement REF Antecedent;  
       [Override ("Dependent"),       [Override ("Dependent"),
        Description (        Description (
           "The LogicalDevice that requires or uses the software.")          "A LogicalDevice in the power domain of the Supply.") ]
       ]  
    CIM_LogicalDevice REF Dependent;    CIM_LogicalDevice REF Dependent;
   };
   
   
   // ===================================================================
   // UninterruptiblePowerSupply
   // ===================================================================
       [Description (       [Description (
           "An enumerated integer to indicate the role this software "       "Capabilities and management of an UninterruptiblePowerSupply. "
           "plays in regards to its associated Device. For example, this "       "The properties of the UPS Device indicate when incoming power "
           "software could be instrumentation (value=5) or firmware (6)."),       "is trimmed or boosted, and the aggregated information of the "
        Values {"Unknown", "Other", "Driver", "Configuration Software",       "batteries, generators, etc. that comprise the Device.  These "
                "Application Software", "Instrumentation", "Firmware",       "individual components (for example, multiple batteries) can "
              "BIOS", "Boot ROM"},       "also be independently modeled and associated with the UPS.") ]
          ModelCorrespondence {"CIM_DeviceSoftware.PurposeDescription"},  class CIM_UninterruptiblePowerSupply : CIM_PowerSupply {
          MappingStrings {"MIF.DMTF|SubComponent Software|001.2"}        [Override ("Range1InputVoltageLow"), Description (
       ]          "If the voltage (in millivolts) drops below the value "
    uint16 Purpose;          "specified by Range1InputVoltageLow, the UPS will compensate "
           "by boosting the voltage using its power source(s).  A value "
           "of 0 indicates that the voltage at which boosting occurs "
           "is 'unknown'."),
          Units ("MilliVolts") ]
      uint32 Range1InputVoltageLow;
         [Override ("Range1InputVoltageHigh"), Description (
           "If the voltage (in millivolts) rises above the value "
           "specified by Range1InputVoltageHigh, the UPS will compensate "
           "by trimming the voltage.  A value of 0 indicates that the "
           "voltage at which trimming occurs is 'unknown'."),
          Units ("MilliVolts") ]
      uint32 Range1InputVoltageHigh;
         [Override ("Range2InputVoltageLow"), Description (
           "If the voltage (in millivolts) drops below the value "
           "specified by Range2InputVoltageLow, the UPS will compensate "
           "by boosting the voltage using its power source(s).  A value "
           "of 0 indicates that the voltage at which boosting occurs "
           "is 'unknown'."),
          Units ("MilliVolts") ]
      uint32 Range2InputVoltageLow;
         [Override ("Range2InputVoltageHigh"), Description (
           "If the voltage (in millivolts) rises above the value "
           "specified by Range2InputVoltageHigh, the UPS will compensate "
           "by trimming the voltage.  A value of 0 indicates that the "
           "voltage at which trimming occurs is 'unknown'."),
          Units ("MilliVolts") ]
      uint32 Range2InputVoltageHigh;
       [Description (       [Description (
           "A free-form string to provide more information for "          "The indication of the capacity remaining in the UPS' "
           "the Purpose property, e.g. \"Application Software\"."),          "batteries, generator, ...  A value of \"Normal\" (2) "
          ModelCorrespondence {"CIM_DeviceSoftware.Purpose"}          "indicates that the remaining estimated minutes of run-time "
       ]          "is greater than the UPS' defined 'low power' state "
    string PurposeDescription;          "(typically two minutes). A value of \"Low\" (3) indicates "
           "that the remaining estimated minutes of run-time is less "
           "than or equal to the UPS' defined 'low power' state.  A "
           "value of \"Depleted\" (4) indicates that the "
           "UPS will be unable to sustain the present load when and if "
           "the utility power is lost (including the possibility that "
           "the utility power is currently absent)."),
          ValueMap {"1", "2", "3", "4"},
          Values {"Unknown", "Normal", "Low", "Depleted"},
          MappingStrings {"MIF.DMTF|UPS Battery|001.1"} ]
      uint16 RemainingCapacityStatus;
       [Description (       [Description (
         "Boolean indicating that the software is 'burned into' or "          "TimeOnBackup indicates the elapsed time in seconds "
         "otherwise located on the hardware of the LogicalDevice.")          "since the UPS last switched to battery power, generator, ...  "
       ]          "Or, the time since the UPS was last restarted, whichever is "
    boolean LoadedOnDevice;          "less. Zero shall be returned if the UPS is 'on line'."),
          Units ("Seconds"),
          MappingStrings {"MIF.DMTF|UPS Battery|001.2"} ]
      uint32 TimeOnBackup;
       [Description (       [Description (
         "Boolean indicating whether the software is upgradeable, "          "EstimatedRunTime is an estimate in minutes of the time to "
         "when it is LoadedOnDevice. Software that is loaded as "          "battery, generator, ... depletion under the present load "
         "part of the OperatingSystem is typically changeable and "          "conditions if the utility power is off, or lost and remains "
         "upgradeable. However, when DeviceSoftware is burned into "          "off."),
         "EEPROM or a chip that Realizes the LogicalDevice, then "         Units ("Minutes"),
         "it may not be upgradeable. This property indicates the "         MappingStrings {"MIF.DMTF|UPS Battery|001.3"} ]
         "ability to update and upgrade DeviceSoftware.")     uint32 EstimatedRunTime;
       ]        [Gauge, Description (
    boolean UpgradeableOnDevice;          "An estimate of the percentage of full charge remaining for "
           "a UPS (that uses battery technology)."),
          Units ("Percent"),
          MappingStrings {"MIF.DMTF|UPS Battery|001.4"} ]
      uint16 EstimatedChargeRemaining;
 }; };
  
 // ===================================================================  
 // RedundancyGroup  
 // ===================================================================  
    [Description (  
        "A class derived from LogicalElement that is a special "  
        "collection of ManagedSystemElements. This collection indicates "  
        "that the aggregated components together provide redundancy. "  
        "All elements aggregated in a RedundancyGroup should be "  
        "instantiations of the same object class.")  
    ]  
 class CIM_RedundancyGroup : CIM_LogicalElement  
 {  
       [Key, MaxLen (256),  
        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.")  
       ]  
    string CreationClassName;  
       [Override("Name"),  
        Key, MaxLen (256),  
        Description (  
           "The RedundancyGroup Name serves as the key for the "  
           "Group's instance in an enterprise environment.")  
       ]  
    string Name;  
       [Description (  
           "RedundancyStatus provides information on the state of the "  
           "RedundancyGroup. \"Fully Redundant\" (value=2) means that "  
           "all of the configured redundancy is still available; "  
           "\"Degraded Redundancy\" (3) means that some failures have "  
           "been experienced but some reduced amount of redundancy is "  
           "still available; \"Redundancy Lost\" (4) means that a "  
           "sufficient number of failures have been experienced such "  
           "that no redundancy is available and the next failure "  
           "experienced will cause overall failure. Also, the values, "  
           "\"Other\" (1) and \"Unknown\" (0), are defined."),  
        Values {"Unknown", "Other", "Fully Redundant",  
                "Degraded Redundancy", "Redundancy Lost"}  
       ]  
    uint16 RedundancyStatus;  
 };  
  
 // =================================================================== // ===================================================================
 // RedundancyComponent  // AssociatedBattery
 // =================================================================== // ===================================================================
    [Association,     [Association, Description (
     Aggregation,       "A LogicalDevice may use or require one or more Batteries. This "
     Description (       "relationship is described by the AssociatedBattery dependency. "
        "A RedundancyGroup aggregates Managed System Elements and "       "It is also possible to model the individual Batteries that "
        "indicates that these elements, taken together, provide "       "comprise a UPS, using this association.") ]
        "redundancy. All elements aggregated in a RedundancyGroup "  class CIM_AssociatedBattery : CIM_Dependency   {
        "should be instantiations of the same object class.")        [Override ("Antecedent"),
    ]         Description ("The Battery.") ]
 class CIM_RedundancyComponent : CIM_Component     CIM_Battery REF Antecedent;
 {        [Override ("Dependent"),
       [Override ("GroupComponent"),  
        Aggregate,  
        Description (        Description (
           "The RedundancyComponent association indicates that "          "The LogicalDevice needing or associated with the Battery.") ]
           "'this set of fans' or 'these physical extents' participate "     CIM_LogicalDevice REF Dependent;
           "in a single RedundancyGroup.")  
       ]  
    CIM_RedundancyGroup REF GroupComponent;  
 }; };
  
 // ===================================================================  
 // SpareGroup  
 // ===================================================================  
    [Description (  
        "A class derived from RedundancyGroup indicating that one or "  
        "more of the aggregated elements can be spared. (The actual "  
        "Spares are defined using the ActsAsSpare association.) An "  
        "example is the use of redundant NICs in a ComputerSystem - "  
        "where one NIC is primary and the other is Spare. The 'primary' "  
        "NIC would be a member of the SpareGroup (associated using the "  
        "RedundancyComponent class) and the 'other' NIC would be "  
        "associated using the ActsAsSpare relationship.")  
    ]  
 class CIM_SpareGroup : CIM_RedundancyGroup  
 {  
                 [Description (  
          "This method is forces a failover from one ManagedSystemElement "  
          "to another.  There are two parameters to the Failover method,"  
          "FailoverFrom and FailoverTo. The FailoverFrom parameter is a "  
          "reference to the primary ManagedSystemElement that will become "  
          "inactive after the method. This Element should be associated with the "  
          "SpareGroup through the RedundancyComponent relationship. The Failover"  
          "To parameter is a reference to the ManagedSystemElement that will take "  
          "over for the primary. This Element should be associated with the "  
          "SpareGroup through the ActsAsSpare association. Once the failover has "  
          "occurred, the SpareGroup and the RedundancyComponent and ActsAsSpare "  
          "associations will be updated with current status.  For example, "  
          "the ActsAsSpare association that contained the FailoverTo Element will "  
          "be deleted and a new RedundancyComponent association instantiated in "  
          "its place. 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' may also be specified in the subclass as a "  
          "Values array qualifier.") ]  
     uint32 Failover([IN] CIM_ManagedSystemElement REF FailoverFrom,  
                     [IN] CIM_ManagedSystemElement REF FailoverTo);  
 };  
  
 // =================================================================== // ===================================================================
 // ActsAsSpare  // Processor
 // =================================================================== // ===================================================================
    [Association,  
     Description (  
        "The ActsAsSpare association indicates which elements can spare "  
        "or replace the other aggregated elements.  The fact that a "  
        "spare can operate in \"hot standby\" mode is specified on an "  
        "element by element basis.")  
    ]  
 class CIM_ActsAsSpare  
 {  
       [Key, Description ("The SpareGroup")  
       ]  
    CIM_SpareGroup REF Group;  
       [Key, Description (  
           "A ManagedSystemElement acting as a spare and participating "  
           "in the SpareGroup.")  
       ]  
    CIM_ManagedSystemElement REF Spare;  
       [Description (       [Description (
           "HotStandby is a boolean indicating that the spare is "       "Capabilities and management of the Processor LogicalDevice.") ]
           "operating as a hot standby.")  class CIM_Processor : CIM_LogicalDevice {
       ]  
    boolean HotStandby;  
 };  
   
 // ===================================================================  
 // StorageRedundancyGroup  
 // ===================================================================  
    [Description (    [Description (
        "A class derived from RedundancyGroup containing mass "          "A free form string describing the role of the Processor - "
        "storage-related redundancy information. StorageRedundancy"          "for example, \"Central Processor\" or \"Math Processor\".") ]
        "Groups are used to protect user data.  They are made up of one "     string Role;
        "or more PhysicalExtents, or one or more AggregatePExtents. "  
        "StorageRedundancyGroups may overlap.  However, the "  
        "underlying Extents within the overlap should not contain "  
        "any check data.")  
    ]  
 class CIM_StorageRedundancyGroup : CIM_RedundancyGroup  
 {  
       [Description (       [Description (
         "The TypeOfAlgorithm specifies the algorithm used for data "          "The Processor family type. For example, values include "
         "redundancy and reconstruction. For example, \"P+Q\" (value"          "\"Pentium(R) processor with MMX(TM) technology\" (14) "
         "=5) or \"P+S\" (7) may be specified. The value of 0, is "          "and \"68040\" (96)."),
         "defined as \"None\" to indicate that data redundancy is not "         ValueMap {"1", "2", "3", "4", "5", "6", "7", "8", "9", "10",
         "active. An inactive redundancy should only be instantiated "                   "11", "12", "13", "14", "15", "16", "17", "18", "19",
         "if data striping or concatenation are active. These are "                   "24", "25", "26", "27", "28", "29", "30",
         "indicated by the IsStriped or IsConcatentated boolean "                   "31", "32", "33", "34", "35", "36", "37", "38", "39",
         "properties of this RedundancyGroup."),                   "48", "49", "50", "51", "52", "53", "54", "55",
        Values {"None", "Other", "Unknown", "Copy", "XOR", "P+Q",                   "64", "65", "66", "67", "68", "69",
              "S", "P+S"},                   "80", "81", "82", "83", "84", "85", "86", "87", "88",
        MappingStrings {"MIF.DMTF|Redundancy Group|001.2"}                   "96", "97", "98", "99", "100",
       ]                   "101", "112", "120", "121", "128", "130",
    uint16 TypeOfAlgorithm;                   "144", "145", "146", "147", "148", "149", "150",
                    "160", "176", "177", "180", "200", "201", "202",
                    "250", "251", "260", "261", "280", "281",
                    "300", "301", "302", "320", "350", "500"},
          Values {"Other", "Unknown", "8086", "80286", "80386", "80486",
                  "8087", "80287", "80387", "80487", "Pentium(R) brand",
                  "Pentium(R) Pro", "Pentium(R) II",
                  "Pentium(R) processor with MMX(TM) technology",
                  "Celeron(TM)", "Pentium(R) II Xeon(TM)",
                  "Pentium(R) III", "M1 Family", "M2 Family", "K5 Family",
                  "K6 Family", "K6-2", "K6-3",
                  "AMD Athlon(TM) Processor Family",
                  "AMD(R) Duron(TM) Processor", "AMD29000 Family",
                  "K6-2+", "Power PC Family", "Power PC 601",
                  "Power PC 603", "Power PC 603+", "Power PC 604",
                  "Power PC 620", "Power PC X704", "Power PC 750",
                  "Alpha Family", "Alpha 21064", "Alpha 21066",
                  "Alpha 21164", "Alpha 21164PC", "Alpha 21164a",
                  "Alpha 21264", "Alpha 21364", "MIPS Family",
                  "MIPS R4000", "MIPS R4200", "MIPS R4400", "MIPS R4600",
                  "MIPS R10000", "SPARC Family", "SuperSPARC",
                  "microSPARC II", "microSPARC IIep", "UltraSPARC",
                  "UltraSPARC II", "UltraSPARC IIi", "UltraSPARC III",
                  "UltraSPARC IIIi", "68040", "68xxx Family", "68000",
                  "68010", "68020", "68030", "Hobbit Family",
                  "Crusoe(TM) TM5000 Family", "Crusoe(TM) TM3000 Family",
                  "Weitek", "Itanium(TM) Processor", "PA-RISC Family",
                  "PA-RISC 8500", "PA-RISC 8000", "PA-RISC 7300LC",
                  "PA-RISC 7200", "PA-RISC 7100LC", "PA-RISC 7100",
                  "V30 Family", "Pentium(R) III Xeon(TM)",
                  "Pentium(R) III Processor with Intel(R) SpeedStep(TM) Technology",
                  "AS400 Family", "IBM390 Family", "G4", "G5", "i860",
                  "i960", "SH-3", "SH-4", "ARM", "StrongARM", "6x86",
                  "MediaGX", "MII", "WinChip", "DSP", "Video Processor"},
          MappingStrings {"MIF.DMTF|Processor|013"},
          ModelCorrespondence {"CIM_Processor.OtherFamilyDescription"} ]
      uint16 Family;
         [MaxLen (64), Description (
           "A string describing the Processor Family type - used when "
           "the Family property is set to 1 (\"Other\"). This string "
           "should be set to NULL when the Family property is any "
           "value other than 1."),
          ModelCorrespondence {"CIM_Processor.Family"} ]
      string OtherFamilyDescription;
       [Description (       [Description (
         "StorageRedundancy provides additional information on the "          "CPU socket information including data on how this "
         "state of the RedundancyGroup, beyond the RedundancyStatus "          "Processor can be upgraded (if upgrades are supported). "
         "property. Information like \"Reconfig In Progress\" (value"          "This property is an integer enumeration."),
         "=1) or \"Redundancy Disabled\" can be specified using "         ValueMap {"1", "2", "3", "4", "5", "6", "7", "8", "9",
         "this property."),                   "10", "11", "12", "13", "14"},
        Values {"No Additional Status", "Reconfig In Progress",         Values {"Other", "Unknown", "Daughter Board", "ZIF Socket",
              "Data Lost", "Not Currently Configured",                 "Replacement/Piggy Back", "None", "LIF Socket", "Slot 1",
              "Protected Rebuild", "Redundancy Disabled",                 "Slot 2", "370 Pin Socket", "Slot A", "Slot M",
              "Unprotected Rebuild", "Recalculating", "Verifying"}                 "Socket 423", "Socket A (Socket 462)"},
       ]         MappingStrings {"MIF.DMTF|Processor|013"} ]
    uint16 StorageRedundancy;     uint16 UpgradeMethod;
         [Description ("The maximum speed (in MHz) of this Processor."),
          Units ("MegaHertz"),
          MappingStrings {"MIF.DMTF|Processor|013"} ]
      uint32 MaxClockSpeed;
         [Description ("The current speed (in MHz) of this Processor."),
          Units ("MegaHertz"),
          MappingStrings {"MIF.DMTF|Processor|013"} ]
      uint32 CurrentClockSpeed;
         [Description ("Processor data width in bits."),
          Units ("Bits") ]
      uint16 DataWidth;
         [Description ("Processor address width in bits."),
          Units ("Bits") ]
      uint16 AddressWidth;
         [Gauge, Description (
           "Loading of this Processor, averaged over the last minute, "
           "in Percent."),
          Units ("Percent"),
          MappingStrings {"MIB.IETF|HOST-RESOURCES-MIB.hrProcessorLoad"} ]
      uint16 LoadPercentage;
       [Description (       [Description (
         "True indicates that the data is striped across the various "          "Stepping is a free-form string indicating the revision "
         "StorageExtents in the Group.")          "level of the Processor within the Processor.Family."),
       ]         ModelCorrespondence {"CIM_Processor.Family"} ]
    boolean IsStriped;     string Stepping;
       [Description (       [Description (
         "True indicates that the data is concatenated across the "          "A globally unique identifier for the Processor. This "
         "various StorageExtents in the Group.")          "identifier may only be unique within a Processor Family.") ]
       ]     string UniqueID;
    boolean IsConcatenated;        [Description (
           "The CPUStatus property indicates the current status of "
           "the Processor. For example, it may be disabled by the user "
           "via BIOS (value=2), or disabled due to a POST error (value="
           "3). Information in this property can be obtained from SMBIOS, "
           "the Type 4 structure, the Status attribute."),
          ValueMap {"0", "1", "2", "3", "4", "7"},
          Values {"Unknown", "CPU Enabled",
                  "CPU Disabled by User via BIOS Setup",
                  "CPU Disabled By BIOS (POST Error)", "CPU Is Idle", "Other"} ]
      uint16 CPUStatus;
 }; };
  
 // ===================================================================  
 // ExtraCapacityGroup  // ====================================================================
   // AlarmDevice
 // =================================================================== // ===================================================================
    [Description (    [Description (
        "A class derived from RedundancyGroup indicating that the "       "An AlarmDevice is a type of Device that emits audible or "
        "aggregated elements have more capacity or capability than is "       "visible indications related to a problem situation. ") ]
        "needed.  An example of this type of redundancy is the "  class CIM_AlarmDevice : CIM_LogicalDevice {
        "installation of N+1 power supplies or fans in a system.")        [Description ("Boolean indicating that the Alarm is audible. ") ]
    ]     boolean AudibleAlarm;
 class CIM_ExtraCapacityGroup : CIM_RedundancyGroup        [Description ("Boolean indicating that the Alarm is visible. ") ]
 {     boolean VisibleAlarm;
       [Description (       [Description (
           "MinNumberNeeded indicates the smallest number of elements "          "Boolean indicating that the Alarm causes motion of the "
           "that must be operational in order to have redundancy.  "          "Device.") ]
           "For example, in an N+1 redundancy relationship, "     boolean MotionAlarm;
           "the MinNumberNeeded property should be set equal to N.")  
       ]  
    uint32 MinNumberNeeded;  
       [Description (       [Description (
         "Boolean indicating whether load balancing is supported by "          "Urgency is an enumerated value that indicates the relative "
         "the ExtraCapacityGroup.")          "frequency at which the Alarm flashes, vibrates and/or emits "
       ]          "audible tones. "),
    boolean LoadBalancedGroup;         Values {"Unknown", "Other", "Not Supported", "Informational",
                  "Non-Critical", "Critical", "Unrecoverable"} ]
      uint16 Urgency;
         [Description ("The current state of the alarm."),
          Values {"Unknown", "Off", "Steady", "Alternating"} ]
      uint16 AlarmState;
         [Description (
           "True indicates that the audio of an AlarmState indicator "
           "has been disabled (i.e. muted). A disabled state here "
           "does not imply that the AlarmState is off.") ]
      boolean AudioIndicatorIsDisabled;
         [Description (
           "True indicates that the visual of an AlarmState indicator "
           "has been disabled (i.e. dimmed). A disabled state here "
           "does not imply that the AlarmState is off.") ]
      boolean VisualIndicatorIsDisabled;
         [Description (
           "True indicates that the motion of an AlarmState indicator "
           "has been disabled (i.e. stopped). A disabled state here "
           "does not imply that the AlarmState is off.") ]
      boolean MotionIndicatorIsDisabled;
         [Description (
           "SetAlarmState is a method for defining the current state "
           "of the Alarm. Its input parameter, RequestedAlarmState, is "
           "specified using the Values list of AlarmDevice's AlarmState "
           "property. SetAlarmState returns 0 if the request is "
           "successfully implemented, 1 if the specified RequestedAlarm"
           "State is not supported, and some other value if any other "
           "error occurred. In a subclass, the set of possible return "
           "codes should be specified using a ValueMap qualifier on the "
           "method. The strings to which the ValueMap contents are "
           "'translated' should be specified as a Values array "
           "qualifier.") ]
      uint32 SetAlarmState (
         [IN, Values {"Unknown", "Off", "Steady", "Alternating"}]
          uint16 RequestedAlarmState);
         [Description (
           "SetAlarmIndicator is a method for enabling or disabling the "
           "indicator of the AlarmState function, without changing the "
           "current AlarmState. It has 3 input parameters, Audio"
           "Indicator, VisualIndicator and MotionIndicator. For all of "
           "the input parameters, a value of 0 indicates no change to "
           "the AlarmState indicator, 1 indicates Disable, and 2 "
           "indicates Enable. The method returns 0 if the request is "
           "successfully implemented, 1 if the specified request is not "
           "supported, and some other value if any other error occurred. "
           "In a subclass, the set of possible return codes should be "
           "specified using a ValueMap qualifier on the method. The "
           "strings to which the ValueMap contents are 'translated' "
           "should be specified as a Values array qualifier.") ]
      uint32 SetAlarmIndicator (
         [IN, Values {"No Change", "Disable", "Enable"}]
          uint16 AudioIndicator,
         [IN, Values {"No Change", "Disable", "Enable"}]
          uint16 VisualIndicator,
         [IN, Values {"No Change", "Disable", "Enable"}]
          uint16 MotionIndicator);
         [Description (
           "SetUrgency is a method for defining the desired urgency "
           "level for the Alarm. Its input parameter, RequestedUrgency, "
           "is specified using the Values list of AlarmDevice's Urgency "
           "property. SetUrgency returns 0 if the request is successfully "
           "implemented, 1 if the specified Urgency level is not "
           "supported, and some other value if any other error occurred. "
           "In a subclass, the set of possible return codes should be "
           "specified using a ValueMap qualifier on the method. The "
           "strings to which the ValueMap contents are 'translated' "
           "should be specified as a Values array qualifier.") ]
      uint32 SetUrgency (
         [IN, ValueMap {"1", "3", "4", "5", "6"},
              Values {"Other", "Informational", "Non-Critical", "Critical",
                      "Unrecoverable"} ]
          uint16 RequestedUrgency);
 }; };
  
   
 // =================================================================== // ===================================================================
 // LogicalPort  // AssociatedAlarm
   // ===================================================================
      [Association, Description (
        "LogicalDevices may have one or more AlarmDevices "
        "associated with them, in order to indicate problem situations. "
        "This relationship is indicated by the AssociatedAlarm "
        "dependency. ") ]
   class CIM_AssociatedAlarm : CIM_Dependency {
         [Override ("Antecedent"),
          Description ("The AlarmDevice. ") ]
      CIM_AlarmDevice REF Antecedent;
         [Override ("Dependent"),
          Description ("The LogicalDevice that is alarmed. ") ]
      CIM_LogicalDevice REF Dependent;
   };
   
   
   // ===================================================================
   // Door
 // =================================================================== // ===================================================================
    [Description (    [Description (
        "The abstraction of a port or connection point of a Device. "       "A Door is the abstraction of hardware providing access to "
        "This object should be instantiated when the Port has "       "the internal componentry of a System. When a Door is 'opened', "
        "independent management characteristics from the Device that "       "typically all accessible, moving components are stopped or "
        "includes it. Examples are a Fibre Channel Port and a USB Port. "       "suspended to prevent physical harm.") ]
        "This class would not be instantiated for an Ethernet Port which "  class CIM_Door : CIM_LogicalDevice {
        "is not managed independently of the EthernetAdapter.")  
    ]  
 class CIM_LogicalPort : CIM_LogicalDevice  
 {  
       [Description ("The speed of the Port in Bits per Second."),  
        Units ("Bits per Second")  
       ]  
    uint64 Speed;  
       [Description (       [Description (
         "The max speed of the Port in Bits per Second."),          "Boolean indicating the 'open' (TRUE) or 'closed' (FALSE) "
        Units ("Bits per Second")          "status of the Door.") ]
       ]     boolean Open;
    uint64 MaxSpeed;        [Description (
           "Boolean indicating that the Door is 'locked' (TRUE) or "
           "'unlocked' (FALSE). When the Door is locked, access to the "
           "componentry is prevented, without the use of a physical "
           "key or the issuance of a software unlock command.") ]
      boolean Locked;
         [Description (
           "When a Door is 'Open', all accessible, moving componentry "
           "and Device operation are typically stopped. The Timeout "
           "property provides a mechanism to event on a Door left open "
           "for a period of time (in seconds) exceeding the property's "
           "value."),
          Units ("Seconds") ]
      uint32 Timeout;
         [Description (
           "Date and time that the Door was last opened.") ]
      datetime LastOpened;
         [Description (
           "The Capabilities of the Door. For example, information on "
           "whether the Door is \"Host System Lockable\" (value=2) and/or "
           "whether a key is available (value=3) are specified in this "
           "property. The value 4, \"All Drives Dismounted Before "
           "Access\", pertains to a Door on a StorageLibrary or set of "
           "drive bays. If specified for the Door, it means that it can "
           "not be opened unless all Media are first unloaded from the "
           "accessible MediaAccessDevices."),
          Values {"Unknown", "Other", "Host System Lockable",
                  "Physical Key", "All Drives Dismounted Before Access"} ]
      uint16 Capabilities[];
 }; };
  
   
 // =================================================================== // ===================================================================
 // PortOnDevice  // DoorAccessToPhysicalElement
 // =================================================================== // ===================================================================
    [Association,     [Association, Description (
     Description (       "Doors provide access to PhysicalElements for hot swap, repair "
        "PortOnDevice associates a Port or connection point with its "       "and similar activities. The entities accessed through a Door "
        "Device.")       "are indicated in this relationship.") ]
    ]  class CIM_DoorAccessToPhysicalElement : CIM_Dependency {
 class CIM_PortOnDevice : CIM_Dependency  
 {  
       [Override ("Antecedent"),       [Override ("Antecedent"),
        Description ("The Device that includes the Port.")         Description ("The Door that provides access.") ]
       ]     CIM_Door REF Antecedent;
    CIM_LogicalDevice REF Antecedent;  
       [Override ("Dependent"),       [Override ("Dependent"),
        Description ("The Port on the Device.")         Description ("The PhysicalElement that is accessed.") ]
       ]     CIM_PhysicalElement REF Dependent;
    CIM_LogicalPort REF Dependent;  
 }; };
  
   
 // =================================================================== // ===================================================================
 // Printer  // DoorAccessToDevice
   // ===================================================================
      [Association, Description (
        "Doors provide access to PhysicalElements for hot swap, repair "
        "and similar activities. In turn, PhysicalElements 'Realize' "
        "LogicalDevices. Since it may not be possible to define all the "
        "PhysicalElements that exist, and optimizing the retrieval of "
        "Devices 'behind' the Door may be desirable, the DoorAccessTo"
        "Device association provides a shortcut mechanism for defining "
        "the LogicalDevices ('hardware') accessed through a Door.") ]
   class CIM_DoorAccessToDevice : CIM_Dependency {
         [Override ("Antecedent"),
          Description ("The Door that provides access.") ]
      CIM_Door REF Antecedent;
         [Override ("Dependent"),
          Description ("The LogicalDevice that is accessed.") ]
      CIM_LogicalDevice REF Dependent;
   };
   
   
   // ===================================================================
   //
   //    Resources, Statistics, and Sensors
   //
 // =================================================================== // ===================================================================
   
   
   // ===================================================================
   // SystemResource
   // ===================================================================
      [Abstract,
       Description (
        "An entity managed by BIOS and/or an OperatingSystem which is "
        "available for use by software and/or LogicalDevices. Examples "
        "of Resources in the x86 environment are IRQs, DMA channels and "
        "memory mapped I/O.") ]
   class CIM_SystemResource : CIM_LogicalElement {
    [Description (    [Description (
        "Capabilities and management of the Printer LogicalDevice.")          "Boolean indicating whether the Resource can be shared.") ]
    ]     boolean Shareable;
 class CIM_Printer : CIM_LogicalDevice  };
 {  
   
   // ===================================================================
   // IRQ
   // ===================================================================
      [Description ("Personal computer architecture IRQ.") ]
   class CIM_IRQ : CIM_SystemResource {
         [Propagated("CIM_ComputerSystem.CreationClassName"),
          Key, MaxLen (256),
          Description ("The scoping ComputerSystem's CreationClassName.") ]
      string CSCreationClassName;
         [Propagated("CIM_ComputerSystem.Name"),
          Key, MaxLen (256),
          Description ("The scoping ComputerSystem's Name.") ]
      string CSName;
         [Key, MaxLen (256),
          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.")  ]
      string CreationClassName;
         [Key,
          Description ("A part of the object's key value, IRQ Number."),
          MappingStrings {"MIF.DMTF|IRQ|002.1"} ]
      uint32 IRQNumber;
         [Description ("Availability of the IRQ."),
          ValueMap {"1", "2", "3", "4", "5"},
          Values {"Other", "Unknown", "Available",
                  "In Use/Not Available",
                  "In Use and Available/Shareable"},
          MappingStrings {"MIF.DMTF|IRQ|002.2"} ]
      uint16 Availability;
       [Description (       [Description (
           "Status information for a Printer, beyond that specified "          "IRQ trigger type indicating whether edge (value=4) "
           "in the LogicalDevice Availability property. Values include "          "or level triggered (value=3) interrupts occur. Also, "
           "\"Idle\" (3) and an indication that the Device is currently "          "\"Other\" (1) and \"Unknown\" (2) may be defined."),
           "printing (4)."),         ValueMap {"1", "2", "3", "4"},
          ValueMap {"1", "2", "3", "4", "5", "6", "7"},         Values {"Other", "Unknown", "Level", "Edge"},
        Values {"Other", "Unknown", "Idle", "Printing", "Warmup",         MappingStrings {"MIF.DMTF|IRQ|002.3",
              "Stopped Printing", "Offline"},          "MIF.DMTF|System Resource IRQ Info|001.2"} ]
        MappingStrings {"MIB.IETF|Printer-MIB.hrPrinterStatus"}     uint16 TriggerType;
       ]  
    uint16 PrinterStatus;  
       [Description ("Printer error information."),  
        Values {"Unknown", "Other", "No Error", "Low Paper",  
                "No Paper", "Low Toner",  
                "No Toner", "Door Open", "Jammed", "Offline",  
                "Service Requested", "Output Bin Full"},  
        ModelCorrespondence {"CIM_Printer.ErrorInformation"},  
        MappingStrings {  
              "MIB.IETF|Printer-MIB.hrPrinterDetectedErrorState"}  
       ]  
    uint16 DetectedErrorState;  
       [Description (       [Description (
         "An array providing supplemental information for the "          "IRQ trigger level indicating whether the interrupt is "
         "current error state, indicated in DetectedErrorState."),          "triggered by the hardware signal going high (value=4) "
        ModelCorrespondence {"CIM_Printer.DetectedErrorState"}          "or low (value=3).  Also, \"Other\" (1) and "
       ]          "\"Unknown\" (2) may be defined."),
    string ErrorInformation[];         ValueMap {"1", "2", "3", "4"},
          Values {"Other", "Unknown", "Active Low", "Active High"},
          MappingStrings {"MIF.DMTF|System Resource IRQ Info|001.3"} ]
      uint16 TriggerLevel;
   // Override is used to define the MappingString qualifier
         [Override ("Shareable"),
          Description (
           "Boolean indicating whether the IRQ can be shared."),
          MappingStrings {"MIF.DMTF|IRQ|002.4"} ]
      boolean Shareable;
       [Description (       [Description (
           "An integer array indicating the types of paper supported."),          "The Hardware property indicates whether the interrupt "
        Values {"Unknown", "Other", "A", "B", "C", "D", "E",          "is hardware or software based. (If TRUE, the interrupt is "
                "Letter", "Legal", "NA-10x13-Envelope", "NA-9x12-Envelope",          "hardware based.) On a personal computer, a hardware IRQ "
                "NA-Number-10-Envelope", "NA-7x9-Envelope",          "is a physical wire to a programmable interrupt "
                "NA-9x11-Envelope", "NA-10x14-Envelope",          "controller (PIC) chip, through which the CPU can be "
                "NA-Number-9-Envelope", "NA-6x9-Envelope",          "notified of time critical events. Some IRQ lines are "
                "NA-10x15-Envelope", "A0", "A1", "A2", "A3", "A4", "A5",          "reserved for standard Devices such as the keyboard, floppy "
                "A6", "A7", "A8", "A9" "A10", "B0", "B1", "B2", "B3", "B4",          "disk drives, and the system clock. A software interrupt "
                "B5", "B6", "B7", "B8", "B9", "B10", "C0", "C1", "C2" "C3",          "is a programmatic mechanism to allow an application to "
                "C4", "C5", "C6", "C7", "C8", "ISO-Designated", "JIS B0",          "get the attention of the Processor.") ]
                "JIS B1", "JIS B2", "JIS B3", "JIS B4", "JIS B5", "JIS B6",     boolean Hardware;
                "JIS B7", "JIS B8", "JIS B9", "JIS B10",  };
              "NA-Letter", "NA-Legal", "B4-Envelope", "B5-Envelope",  
              "C3-Envelope", "C4-Envelope", "C5-Envelope", "C6-Envelope",  // ===================================================================
              "Designated-Long-Envelope", "Monarch-Envelope",  // MemoryMappedIO
              "Executive", "Folio", "Invoice", "Ledger", "Quarto"}  // ===================================================================
       ]  
    uint16 PaperSizesSupported[];  
       [Description (  
         "An array of free-form strings specifying the types of "  
         "paper that are currently available on the Printer. Each "  
         "string should be expressed in the form specified by "  
         "ISO/IEC 10175 Document Printing Application (DPA) which "  
         "is also summarized in Appendix C of RFC 1759 (Printer MIB). "  
         "Examples of valid strings are \"iso-a4-colored\" and "  
         "\"na-10x14-envelope\". By definition a paper size that "  
         "is available and listed in PaperTypesAvailable should "  
         "also appear in the PaperSizesSupported property."),  
        ArrayType ("Indexed"),  
        ModelCorrespondence {"CIM_PrintJob.RequiredPaperType",  
              "CIM_PrintService.PaperTypesAvailable"},  
        MappingStrings {"MIB.IETF|Printer-MIB.prtInputMediaName"}  
       ]  
    string PaperTypesAvailable[];  
       [Description (       [Description (
         "Specifies the paper type that the Printer will use if a "       "Personal Computer architecture Memory Mapped I/O. This class "
         "PrintJob does not specify a particular type. The string "       "addresses both memory and port I/O resources. The property, "
         "should be expressed in the form specified by ISO/IEC "       "MappedResource, defines whether memory or I/O is mapped (and "
         "10175 Document Printing Application (DPA) which is also "       "for I/O whether the mapping is to a memory or a port space).") ]
         "summarized in Appendix C of RFC 1759 (Printer MIB)."),  class CIM_MemoryMappedIO : CIM_SystemResource {
        ModelCorrespondence {"CIM_Printer.PaperTypesAvailable"}        [Propagated("CIM_ComputerSystem.CreationClassName"),
       ]         Key, MaxLen (256),
    string DefaultPaperType;         Description ("The scoping ComputerSystem's CreationClassName.") ]
      string CSCreationClassName;
         [Propagated("CIM_ComputerSystem.Name"),
          Key, MaxLen (256),
          Description ("The scoping ComputerSystem's Name.") ]
      string CSName;
         [Key, MaxLen (256),
          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.")  ]
      string CreationClassName;
         [Key, Description (
           "A part of the object's key value, the starting address of "
           "memory mapped I/O."),
          MappingStrings {"MIF.DMTF|Memory Mapped I/O|001.1"} ]
      uint64 StartingAddress;
         [Description ("Ending address of memory mapped I/O."),
          MappingStrings {"MIF.DMTF|Memory Mapped I/O|001.2"} ]
      uint64 EndingAddress;
       [Description (       [Description (
         "Specifies the paper type that the Printer is currently "          "Type of memory mapped I/O. MappedResource defines whether "
         "using. The string should be expressed in the form specified "          "memory or I/O is mapped, and for I/O, whether the mapping "
         "by ISO/IEC 10175 Document Printing Application (DPA) which "          "is to a memory or a port space."),
         "is also summarized in Appendix C of RFC 1759 (Printer MIB)."),         Values {"Other", "Mapped Memory", "I/O Mapped to Memory Space",
        ModelCorrespondence {"CIM_Printer.PaperTypesAvailable"}                 "I/O Mapped to Port Space"} ]
       ]     uint16 MappedResource;
    string CurrentPaperType;  };
   
   
   // ===================================================================
   // MemoryResource
   // ===================================================================
       [Description (       [Description (
           "An array indicating the print languages natively supported."),       "Since the MemoryMappedIO class applies to memory AND port "
          ValueMap {"1", "2", "3", "4", "5", "6", "7", "8", "9", "10",       "resources, there is the potential for key conflict. For example, "
                "11", "12", "13", "14", "15", "16", "17", "18", "19",       "both a memory resource and a port resource may be located at "
                "20", "21", "22", "23", "24", "25", "26", "27", "28",       "address 0. Since StartingAddress is the distinguishing key of "
                "29", "30", "31", "32", "33", "34", "35", "36", "37",       "MemoryMappedIO, two instances would be created with the same key. "
                "38", "39", "40", "41", "42", "43", "44", "45", "46", "47"},       "This is prevented by defining memory and port resource subclasses "
        Values {"Other", "Unknown", "PCL", "HPGL", "PJL", "PS",       "of MemoryMappedIO, and allowing the CreationClassName key property "
                "PSPrinter", "IPDS", "PPDS", "EscapeP", "Epson", "DDIF",       "to distinguish between them and force uniqueness in their keys.") ]
                "Interpress", "ISO6429", "Line Data", "MODCA", "REGIS",  class CIM_MemoryResource : CIM_MemoryMappedIO {
                "SCS", "SPDL", "TEK4014", "PDS", "IGP", "CodeV", "DSCDSE",  };
                "WPS", "LN03", "CCITT", "QUIC", "CPAP", "DecPPL",  
                "Simple Text", "NPAP", "DOC", "imPress", "Pinwriter",  
                "NPDL", "NEC201PL", "Automatic", "Pages", "LIPS", "TIFF",  // ===================================================================
                "Diagnostic", "CaPSL", "EXCL", "LCDS", "XES", "MIME"},  // PortResource
        MappingStrings {"MIB.IETF|Printer-MIB.prtInterpreterLangFamily"},  // ===================================================================
        ModelCorrespondence {"CIM_Printer.MimeTypesSupported",  
              "CIM_PrintJob.Language",  
              "CIM_PrintService.LanguagesSupported"}  
       ]  
    uint16 LanguagesSupported[];  
       [Description (       [Description (
         "An array of free-form strings providing more detailed "       "Since the MemoryMappedIO class applies to memory AND port "
         "explanations of any mime types that are supported by "       "resources, there is the potential for key conflict. For example, "
         "the Printer. If data is provided for this property, then "       "both a memory resource and a port resource may be located at "
         "the value 47, \"Mime\", should be included in the Languages"       "address 0. Since StartingAddress is the distinguishing key of "
         "Supported property."),       "MemoryMappedIO, two instances would be created with the same key. "
        ModelCorrespondence {"CIM_Printer.LanguagesSupported",       "This is prevented by defining memory and port resource subclasses "
              "CIM_PrintJob.MimeTypes",       "of MemoryMappedIO, and allowing the CreationClassName key property "
              "CIM_PrintService.MimeTypesSupported"}       "to distinguish between them and force uniqueness in their keys.") ]
       ]  class CIM_PortResource : CIM_MemoryMappedIO {
    string MimeTypesSupported[];  };
   
   
   // ===================================================================
   // DMA
   // ===================================================================
      [Description ("Personal computer architecture DMA.") ]
   class CIM_DMA : CIM_SystemResource {
         [Propagated("CIM_ComputerSystem.CreationClassName"),
          Key, MaxLen (256),
          Description ("The scoping ComputerSystem's CreationClassName.") ]
      string CSCreationClassName;
         [Propagated("CIM_ComputerSystem.Name"),
          Key, MaxLen (256),
          Description ("The scoping ComputerSystem's Name.") ]
      string CSName;
         [Key, MaxLen (256),
          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.")  ]
      string CreationClassName;
         [Key, Description (
           "A part of the object's key value, the DMA Channel number."),
          MappingStrings {"MIF.DMTF|DMA|001.1"} ]
      uint32 DMAChannel;
         [Description ("Availability of the DMA."),
          ValueMap {"1", "2", "3", "4", "5"},
          Values {"Other", "Unknown", "Available",
                  "In Use/Not Available",
                  "In Use and Available/Shareable"},
          MappingStrings {"MIF.DMTF|DMA|001.2"} ]
      uint16 Availability;
       [Description (       [Description (
         "Indicates the current printer language being used. A "          "Indication that the DMA Channel supports burst mode."),
         "language that is being used by the Printer should also be "         MappingStrings {"MIF.DMTF|DMA|001.3"} ]
         "listed in LanguagesSupported."),     boolean BurstMode;
          ValueMap {"1", "2", "3", "4", "5", "6", "7", "8", "9", "10",  
                "11", "12", "13", "14", "15", "16", "17", "18", "19",  
                "20", "21", "22", "23", "24", "25", "26", "27", "28",  
                "29", "30", "31", "32", "33", "34", "35", "36", "37",  
                "38", "39", "40", "41", "42", "43", "44", "45", "46", "47"},  
        Values {"Other", "Unknown", "PCL", "HPGL", "PJL", "PS",  
                "PSPrinter", "IPDS", "PPDS", "EscapeP", "Epson", "DDIF",  
                "Interpress", "ISO6429", "Line Data", "MODCA", "REGIS",  
                "SCS", "SPDL", "TEK4014", "PDS", "IGP", "CodeV", "DSCDSE",  
                "WPS", "LN03", "CCITT", "QUIC", "CPAP", "DecPPL",  
                "Simple Text", "NPAP", "DOC", "imPress", "Pinwriter",  
                "NPDL", "NEC201PL", "Automatic", "Pages", "LIPS", "TIFF",  
                "Diagnostic", "CaPSL", "EXCL", "LCDS", "XES", "MIME"},  
        ModelCorrespondence {"CIM_Printer.LanguagesSupported",  
              "CIM_Printer.CurrentMimeType"}  
       ]  
    uint16 CurrentLanguage;  
       [Description (       [Description (
         "Specifies the mime type currently being used by the "          "An array indicating all the transfer widths (in bits) "
         "Printer if the CurrentLanguage is set to indicate a "          "supported by this DMA Channel. Permissible values "
         "mime type is in use (value = 47)."),          "are 8, 16, 32, 64 or 128 bits.  If unknown, enter 0."),
        ModelCorrespondence {"CIM_Printer.CurrentLanguage"}         Units ("Bits"),
       ]         ValueMap {"0", "8", "16", "32", "64", "128"},
    string CurrentMimeType;         MappingStrings {"MIF.DMTF|System Resource DMA Info|001.2"} ]
      uint16 TransferWidths[];
       [Description (       [Description (
         "Indicates the default printer language. A language that "          "An integer indicating the DMA Channel address size in "
         "is used as a default by the Printer should also be listed "          "bits. Permissible values are 8, 16, 32 or 64 bits. "
         "in LanguagesSupported."),          "If unknown, enter 0."),
          ValueMap {"1", "2", "3", "4", "5", "6", "7", "8", "9", "10",         Units ("Bits"),
                "11", "12", "13", "14", "15", "16", "17", "18", "19",         ValueMap {"0", "8", "16", "32", "64"},
                "20", "21", "22", "23", "24", "25", "26", "27", "28",         MappingStrings {"MIF.DMTF|System Resource DMA Info|001.3"} ]
                "29", "30", "31", "32", "33", "34", "35", "36", "37",     uint16 AddressSize;
                "38", "39", "40", "41", "42", "43", "44", "45", "46", "47"},  
        Values {"Other", "Unknown", "PCL", "HPGL", "PJL", "PS",  
                "PSPrinter", "IPDS", "PPDS", "EscapeP", "Epson", "DDIF",  
                "Interpress", "ISO6429", "Line Data", "MODCA", "REGIS",  
                "SCS", "SPDL", "TEK4014", "PDS", "IGP", "CodeV", "DSCDSE",  
                "WPS", "LN03", "CCITT", "QUIC", "CPAP", "DecPPL",  
                "Simple Text", "NPAP", "DOC", "imPress", "Pinwriter",  
                "NPDL", "NEC201PL", "Automatic", "Pages", "LIPS", "TIFF",  
                "Diagnostic", "CaPSL", "EXCL", "LCDS", "XES", "MIME"},  
        ModelCorrespondence {"CIM_Printer.LanguagesSupported",  
              "CIM_Printer.DefaultMimeType"}  
       ]  
    uint16 DefaultLanguage;  
       [Description (       [Description (
         "Specifies the default mime type used by the Printer if the "          "The maximum number of bytes that can be transferred by this "
         "DefaultLanguage is set to indicate a mime type is in use "          "DMA Channel. If unknown, enter 0."),
         "(value=47)."),         Units ("Bytes"),
        ModelCorrespondence {"CIM_Printer.DefaultLanguage"}         MappingStrings {"MIF.DMTF|System Resource DMA Info|001.4"} ]
       ]     uint32 MaxTransferSize;
    string DefaultMimeType;  
       [Description (       [Description (
           "Printer jobs processed since last reset.  These jobs may be "          "Indicates whether DMA may execute in 'count by byte' mode "
           "processed from one or more PrintQueues."),          "(value=4) or not (value=3).  Also, \"Other\" (1) and "
        Counter          "\"Unknown\" (2) may be defined."),
       ]         ValueMap {"1", "2", "3", "4"},
    uint32 JobCountSinceLastReset;         Values {"Other", "Unknown",
       [Description ("Time of last reset of the Printer Device.")]                 "Not execute in 'count by byte' mode",
    datetime TimeOfLastReset;                 "Execute in 'count by byte' mode"},
          MappingStrings {"MIF.DMTF|System Resource DMA Info|001.7"} ]
      uint16 ByteMode;
       [Description (       [Description (
           "An array of integers indicating Printer capabilities. "          "Indicates whether DMA may execute in 'count by word' mode "
           "Information such as \"Duplex Printing\" (value=3) or "          "(value=4) or not (value=3).  Also, \"Other\" (1) and "
           "\"Transparency Printing\" (7) is specified in this "          "\"Unknown\" (2) may be defined."),
           "property."),         ValueMap {"1", "2", "3", "4"},
          ArrayType ("Indexed"),         Values {"Other", "Unknown",
        Values {"Unknown", "Other", "Color Printing",                 "Not execute in 'count by word' mode",
                "Duplex Printing", "Copies", "Collation", "Stapling",                 "Execute in 'count by word' mode"},
                "Transparency Printing", "Punch", "Cover", "Bind",         MappingStrings {"MIF.DMTF|System Resource DMA Info|001.8"} ]
              "Black and White Printing", "One Sided",     uint16 WordMode;
              "Two Sided Long Edge", "Two Sided Short Edge",  
              "Portrait", "Landscape", "Reverse Portrait",  
              "Reverse Landscape", "Quality High", "Quality Normal",  
              "Quality Low"},  
        ModelCorrespondence {"CIM_Printer.CapabilityDescriptions",  
              "CIM_PrintJob.Finishing",  
              "CIM_PrintService.Capabilities"}  
       ]  
    uint16 Capabilities[];  
       [Description (       [Description (
           "An array of free-form strings providing more detailed "          "DMA channel timing.  For example, \"Type A\" (value "
           "explanations for any of the Printer features indicated in "          "=4) or \"Type F\" (6) could be specified."),
           "the Capabilities array. Note, each entry of this array "         ValueMap {"1", "2", "3", "4", "5", "6"},
           "is related to the entry in the Capabilities array that "         Values {"Other", "Unknown", "ISA Compatible", "Type A",
           "is located at the same index."),                 "Type B", "Type F"},
        ArrayType ("Indexed"),         MappingStrings {"MIF.DMTF|System Resource DMA Info|001.9"} ]
          ModelCorrespondence {"CIM_Printer.Capabilities"}     uint16 ChannelTiming;
       ]  
    string CapabilityDescriptions[];  
       [Description (  
         "Specifies which finishings and other capabilities of "  
         "the Printer will be used by default. An entry in Default"  
         "Capabilities should also be listed in the Capabilities "  
         "array."),  
        Values {"Unknown", "Other", "Color Printing",  
                "Duplex Printing", "Copies", "Collation", "Stapling",  
                "Transparency Printing", "Punch", "Cover", "Bind",  
              "Black and White Printing", "One Sided",  
              "Two Sided Long Edge", "Two Sided Short Edge",  
              "Portrait", "Landscape", "Reverse Portrait",  
              "Reverse Landscape", "Quality High", "Quality Normal",  
              "Quality Low"},  
        ModelCorrespondence {"CIM_Printer.Capabilities"}  
       ]  
    uint16 DefaultCapabilities[];  
       [Description (  
         "Specifies which finishings and other capabilities of "  
         "the Printer are currently being used. An entry in this "  
         "property should also be listed in the Capabilities array."),  
        Values {"Unknown", "Other", "Color Printing",  
                "Duplex Printing", "Copies", "Collation", "Stapling",  
                "Transparency Printing", "Punch", "Cover", "Bind",  
              "Black and White Printing", "One Sided",  
              "Two Sided Long Edge", "Two Sided Short Edge",  
              "Portrait", "Landscape", "Reverse Portrait",  
              "Reverse Landscape", "Quality High", "Quality Normal",  
              "Quality Low"},  
        ModelCorrespondence {"CIM_Printer.Capabilities"}  
       ]  
    uint16 CurrentCapabilities[];  
       [Description (  
         "The maximum number of copies that can be produced by "  
         "the Printer from a single Job."),  
        ModelCorrespondence {"CIM_PrintJob.Copies"}  
       ]  
    uint32 MaxCopies;  
       [Description (  
         "The number of copies that will be produced for a "  
         "single Job unless otherwise specified.")  
       ]  
    uint32 DefaultCopies;  
       [Description (  
         "The maximum number of print-stream pages that the "  
         "Printer can render onto a single media sheet."),  
        ModelCorrespondence {"CIM_PrintJob.NumberUp"}  
       ]  
    uint32 MaxNumberUp;  
       [Description (  
         "The number of print-stream pages that the Printer will "  
         "render onto a single media sheet unless a Job specifies "  
         "otherwise.")  
       ]  
    uint32 DefaultNumberUp;  
       [Description (  
           "Printer's horizontal resolution in Pixels per Inch."),  
        Units ("Pixels per Inch"),  
        ModelCorrespondence {"CIM_PrintJob.HorizontalResolution"}  
       ]  
    uint32 HorizontalResolution;  
       [Description (  
           "Printer's vertical resolution in Pixels per Inch."),  
        Units ("Pixels per Inch"),  
        ModelCorrespondence {"CIM_PrintJob.HorizontalResolution"}  
       ]  
    uint32 VerticalResolution;  
       [Description (  
         "Identifies the available character sets for the output "  
         "of text related to managing the Printer. Strings "  
         "provided in this property should conform to the "  
         "semantics and syntax specified by section 4.1.2 "  
         "(\"Charset parameter\") in RFC 2046 (MIME Part 2) and "  
         "contained in the IANA character-set registry. Examples "  
         "include \"utf-8\", \"us-ascii\" and \"iso-8859-1\"."),  
        ArrayType ("Indexed"),  
        ModelCorrespondence {"CIM_PrintJob.CharSet"},  
        MappingStrings {  
            "MIB.IETF|Printer-MIB.prtLocalizationCharacterSet"}  
       ]  
    string CharSetsSupported[];  
       [Description (  
         "Specifies the current character set being used for "  
         "the output of text relating to management of the "  
         "Printer. The character set described by this property "  
         "should also be listed in CharsetsSupported. The string "  
         "specified by this property should conform to the "  
         "semantics and syntax specified by section 4.1.2 "  
         "(\"Charset parameter\") in RFC 2046 (MIME Part 2) and "  
         "contained in the IANA character-set registry. Examples "  
         "include \"utf-8\", \"us-ascii\" and \"iso-8859-1\"."),  
        ModelCorrespondence {"CIM_Printer.CharSetsSupported"}  
       ]  
    string CurrentCharSet;  
       [Description (  
         "Identifies the available languages for strings used by "  
         "the Printer for the output of management information. "  
         "The strings should conform to RFC 1766, for example "  
         "\"en\" is used for English."),  
        ArrayType ("Indexed"),  
        MappingStrings {  
            "MIB.IETF|Printer-MIB.prtLocalizationLanguage"},  
        ModelCorrespondence {"CIM_PrintJob.NaturalLanguage"}  
       ]  
    string NaturalLanguagesSupported[];  
       [Description (  
         "Identifies the current language being used by the "  
         "Printer for management. The language listed in the "  
         "CurrentNaturalLanguage property should also be listed "  
         "in NaturalLanguagesSupported."),  
        ModelCorrespondence {"CIM_Printer.NaturalLanguagesSupported"}  
       ]  
    string CurrentNaturalLanguage;  
       [Description (  
         "Specifies the largest Job (as a byte stream) that the "  
         "Printer will accept in units of Kbytes. A value of zero "  
         "indicates that no limit has been set."),  
        Units ("KiloBytes"),  
        ModelCorrespondence {"CIM_PrintJob.JobSize"}  
       ]  
    uint32 MaxSizeSupported;  
       [Description (  
         "Describes all of the job sheets that are available on "  
         "the Printer. This can also be used to describe the banner "  
         "that a Printer might provide at the beginning of each Job, "  
         "or can describe other user specified options."),  
        ModelCorrespondence {"CIM_PrintJob.RequiredJobSheets"}  
       ]  
    string AvailableJobSheets[];  
       [Description (       [Description (
         "Specifies the marking technology used by the Printer."),          "Indicates whether C type (burst) timing is supported "
        ValueMap {"1", "2", "3", "4", "5", "6", "7", "8", "9",          "(value=5) or not (value=4). Also, \"Other\" (1), "
                "10", "11", "12", "13", "14", "15", "16", "17",          "\"Unknown\" (2) and \"ISA Compatible\" (3) are defined."),
                "18", "19", "20", "21", "22", "23", "24", "25",         ValueMap {"1", "2", "3", "4", "5"},
                "26", "27"},         Values {"Other", "Unknown", "ISA Compatible", "Not Supported",
        Values {"Other", "Unknown", "Electrophotographic LED",                 "Supported"},
              "Electrophotographic Laser",         MappingStrings {"MIF.DMTF|System Resource DMA Info|001.10"} ]
              "Electrophotographic Other",     uint16 TypeCTiming;
              "Impact Moving Head Dot Matrix 9pin",  
              "Impact Moving Head Dot Matrix 24pin",  
              "Impact Moving Head Dot Matrix Other",  
              "Impact Moving Head Fully Formed",  
              "Impact Band", "Impact Other", "Inkjet Aqueous",  
              "Inkjet Solid", "Inkjet Other", "Pen",  
              "Thermal Transfer", "Thermal Sensitive",  
              "Thermal Diffusion", "Thermal Other",  
              "Electroerosion", "Electrostatic",  
              "Photographic Microfiche",  
              "Photographic Imagesetter", "Photographic Other",  
              "Ion Deposition", "eBeam", "Typesetter"},  
        MappingStrings {"MIB.IETF|Printer-MIB.prtMarkerMarkTech"}  
       ]  
    uint16 MarkingTechnology;  
 }; };
  
   
 // =================================================================== // ===================================================================
 // PrintQueue  // ComputerSystemResource
 // =================================================================== // ===================================================================
    [Description (     [Association, Aggregation,
        "Capabilities and management of a Printer Queue. A PrintQueue "      Description (
        "holds PrintJobs - which are placed on the Queue by a Print"       "An association between a ComputerSystem and the System"
        "Service. Jobs can move from Queue to Queue.")       "Resources available on it.") ]
    ]  class CIM_ComputerSystemResource : CIM_SystemComponent {
 class CIM_PrintQueue : CIM_JobDestination        [Override ("GroupComponent"), Aggregate,
 {         Min (1), Max (1), Description ("The ComputerSystem.")]
       [Description (     CIM_ComputerSystem REF GroupComponent;
         "Indicates that Jobs on the Queue will be passed to a "        [Override ("PartComponent"),
         "Printer. When FALSE, a Job will remain on the Queue and "         Description ("A SystemResource of the ComputerSystem.") ]
         "will not be passed to a Printer for output.")     CIM_SystemResource REF PartComponent;
       ]  
    boolean QueueEnabled;  
       [Description (  
         "When FALSE, no PrintService can place PrintJobs on the "  
         "PrintQueue. The ability of an individual PrintService "  
         "to place a Job on the Queue can be specified using the "  
         "QueueAcceptingFromService property in the QueueForPrint"  
         "Service association.")  
       ]  
    boolean QueueAccepting;  
       [Description ("The current number of Jobs on the Queue."),  
        Gauge  
       ]  
    uint32 NumberOnQueue;  
       [Description (  
         "Gives Queue-specific status information, beyond the "  
         "ManagedSystemElement.Status property. This may be used to "  
         "provide further qualification as to the status of the "  
         "Queue or to indicate a secondary condition (e.g. spool "  
         "area is full)."),  
        Values {"Other", "Unknown", "No Additional Status",  
              "QueueSpoolAreaFull"}  
       ]  
    uint16 QueueStatus;  
       [Description (  
         "Provides a textual explanation for the status of the Queue. "  
         "The settings of both QueueStatus and the Status property "  
         "inherited from ManagedSystemElement may be described by "  
         "QueueStatusInfo. For example, if \"Stopping\" is the value "  
         "assigned to Status, then this property may contain an "  
         "explanation as to why the Queue is being stopped.")  
       ]  
    string QueueStatusInfo;  
       [Description (  
         "Specifies the largest possible Job (in terms of a single "  
         "byte stream) that may be submitted to this Queue. A value "  
         "of zero indicates that no limit has been set. Units "  
         "are Kbytes."),  
        Units ("KiloBytes"),  
        ModelCorrespondence {"CIM_PrintJob.JobSize"}  
       ]  
    uint32 MaxJobSize;  
       [Description (  
         "Specifies the priority that will be assigned to a new Job "  
         "being submitted to this Queue, if the Job does not "  
         "explicitly specify a priority. The range of valid priorities "  
         "and the interpretation of priorities may be determined from "  
         "the JobPriorityHigh and JobPriorityLow properties."),  
        ModelCorrespondence {"CIM_PrintQueue.JobPriorityHigh",  
              "CIM_PrintQueue.JobPriorityLow"}  
       ]  
    uint32 DefaultJobPriority;  
       [Description (  
         "Specifies the numeric value that is used to represent the "  
         "highest priority Jobs that are submitted to this Queue. The "  
         "range of numeric values for priority may be inversed, e.g. "  
         "a high priority job is represented by a low integer value. "  
         "This is indicated by JobPriorityLow being greater than "  
         "JobPriorityHigh. If both values (PriorityLow and Priority"  
         "High) are assigned to zero, then the Queue does not support "  
         "Job priorities."),  
        ModelCorrespondence {"CIM_PrintQueue.JobPriorityLow",  
              "CIM_Job.Priority"}  
       ]  
    uint32 JobPriorityHigh;  
       [Description (  
         "Specifies the numeric value that is used to represent the "  
         "lowest priority Jobs that are submitted to this Queue. The "  
         "range of numeric values for priority may be inversed, e.g. "  
         "a low priority job is represented by a high integer value. "  
         "This is indicated by JobPriorityLow being greater than "  
         "JobPriorityHigh. If both values (PriorityLow and PriorityHigh) "  
         "are assigned to zero, then the Queue does not support "  
         "Job priorities."),  
        ModelCorrespondence {"CIM_PrintQueue.JobPriorityHigh",  
              "CIM_Job.Priority"}  
       ]  
    uint32 JobPriorityLow;  
       [Description (  
         "Specifies the job sheets that are supported by this Queue. "  
         "Typically the job sheets provided by a Queue will be the "  
         "union or aggregation of those provided by all the Printers "  
         "that it supports. However, a system administrator may choose "  
         "to restrict access to some job sheets on a particular Queue. "  
         "A Queue might also support additional job sheets through the "  
         "use of a filter that adds a banner or some other page when a "  
         "Job is taken from the Queue."),  
        ModelCorrespondence {"CIM_PrintJob.RequiredJobSheets"}  
       ]  
    string AvailableJobSheets[];  
 }; };
  
   
 // =================================================================== // ===================================================================
 // PrintJob  // ComputerSystemIRQ
 // =================================================================== // ===================================================================
    [Description (     [Association, Aggregation,
        "Description of a print request that is either waiting on a "  
        "Queue for a Printer to become available, in the process of "  
        "being output on a Printer, or that has previously been "  
        "printed on a Printer. PrintJobs are weak to their current "  
        "Queue, or to the last Queue that held them.")  
    ]  
 class CIM_PrintJob : CIM_Job  
 {  
       [Propagated ("CIM_PrintQueue.SystemCreationClassName"), Key,  
        Description ("The scoping System's CreationClassName."),  
        MaxLen (256)  
       ]  
    string SystemCreationClassName;  
       [Propagated ("CIM_PrintQueue.SystemName"), Key,  
        Description ("The scoping System's Name."),  
        MaxLen (256)  
       ]  
    string SystemName;  
       [Propagated ("CIM_PrintQueue.CreationClassName"), Key,  
        Description ("The scoping Queue's CreationClassName."),  
        MaxLen (256)  
       ]  
    string QueueCreationClassName;  
       [Propagated ("CIM_PrintQueue.Name"), Key,  
        Description ("The scoping Queue's Name."),  
        MaxLen (256)  
       ]  
    string QueueName;  
       [Description (  
         "Uniquely identifies this Job within its scoping Queue."),  
        Key  
       ]  
    string JobID;  
       [Description (  
         "Provides additional textual descriptions of how this "  
         "Job should be scheduled.")  
       ]  
    string SchedulingInformation;  
       [Description (  
         "Specifies the size of the PrintJob (as a byte stream) in "  
         "units of Kbytes."),  
        Units ("KiloBytes"),  
        ModelCorrespondence {"CIM_Printer.MaxSizeSupported",  
              "CIM_PrintQueue.MaxJobSize"}  
       ]  
    uint32 JobSize;  
       [Description (  
         "Specifies the print language used by this Job."),  
        ValueMap {"1", "2", "3", "4", "5", "6", "7", "8", "9", "10",  
                "11", "12", "13", "14", "15", "16", "17", "18", "19",  
                "20", "21", "22", "23", "24", "25", "26", "27", "28",  
                "29", "30", "31", "32", "33", "34", "35", "36", "37",  
                "38", "39", "40", "41", "42", "43", "44", "45", "46", "47"},  
        Values {"Other", "Unknown", "PCL", "HPGL", "PJL", "PS",  
                "PSPrinter", "IPDS", "PPDS", "EscapeP", "Epson", "DDIF",  
                "Interpress", "ISO6429", "Line Data", "MODCA", "REGIS",  
                "SCS", "SPDL", "TEK4014", "PDS", "IGP", "CodeV", "DSCDSE",  
                "WPS", "LN03", "CCITT", "QUIC", "CPAP", "DecPPL",  
                "Simple Text", "NPAP", "DOC", "imPress", "Pinwriter",  
                "NPDL", "NEC201PL", "Automatic", "Pages", "LIPS", "TIFF",  
                "Diagnostic", "CaPSL", "EXCL", "LCDS", "XES", "MIME"},  
        ArrayType ("Indexed"),  
        MappingStrings {"MIB.IETF|Printer-MIB.prtInterpreterLangFamily"},  
        ModelCorrespondence {"CIM_Printer.LanguagesSupported",  
              "CIM_PrintService.LanguagesSupported",  
              "CIM_PrintJob.MimeTypes"}  
       ]  
    uint16 Language;  
       [Description (  
         "Specifies the mime types used by the PrintJob if "  
         "Language is set to indicate a mime type is in use (value=47)."),  
        ModelCorrespondence {"CIM_PrintJob.Language",  
              "CIM_Printer.MimeTypesSupported",  
              "CIM_PrintService.MimeTypesSupported"}  
       ]  
    string MimeTypes[];  
       [Description (  
         "A string specifying the type of paper that is required by "  
         "this PrintJob. Each string should be expressed in the form "  
         "specified by ISO/IEC 10175 Document Printing Application (DPA) "  
         "which is also summarized in Appendix C of RFC 1759 (Printer "  
         "MIB). Examples of valid strings are \"iso-a4-colored\" and "  
         "\"na-10x14-envelope\"."),  
        ModelCorrespondence {"CIM_Printer.PaperTypesAvailable",  
              "CIM_PrintService.PaperTypesAvailable"}  
       ]  
    string RequiredPaperType;  
       [Description (  
         "An array of integers indicating the type of finishing "  
         "required by this Job. It is equivalent to the Capabilities "  
         "property provided by the Printer."),  
        ArrayType ("Indexed"),  
        Values {"Unknown", "Other", "Color Printing",  
              "Duplex Printing", "Copies", "Collation", "Stapling",  
              "Transparency Printing", "Punch", "Cover", "Bind",  
              "Black and White Printing", "One Sided",  
              "Two Sided Long Edge", "Two Sided Short Edge",  
              "Portrait", "Landscape", "Reverse Portrait",  
              "Reverse Landscape", "Quality High", "Quality Normal",  
              "Quality Low"},  
        ModelCorrespondence {"CIM_Printer.Capabilities",  
              "CIM_PrintService.Capabilities"}  
       ]  
    uint16 Finishing[];  
       [Description (  
         "The number of physical copies of the output that will be "  
         "produced from this Job."),  
        ModelCorrespondence {"CIM_Printer.MaxCopies"}  
       ]  
    uint32 Copies;  
       [Description (  
         "The horizontal resolution in Pixels per Inch for the Job."),  
        Units ("Pixels per Inch"),  
        ModelCorrespondence {"CIM_Printer.HorizontalResolution"}  
       ]  
    uint32 HorizontalResolution;  
       [Description (  
         "The vertical resolution in Pixels per Inch for the Job."),  
        Units ("Pixels per Inch"),  
        ModelCorrespondence {"CIM_Printer.VerticalResolution"}  
       ]  
    uint32 VerticalResolution;  
       [Description (  
         "Specifies the character set and encoding method that "  
         "should be used by the Printer for the management of "  
         "this Job. The strings should conform to the semantics and "  
         "syntax specified by section 4.1.2 (\"Charset parameter\") "  
         "in RFC 2046 (MIME Part 2) and contained in the IANA "  
         "character-set registry. Examples include \"utf-8\", "  
         "\"us-ascii\" and \"iso-8859-1\"."),  
        ModelCorrespondence {"CIM_Printer.CharSetsSupported"}  
       ]  
    string CharSet;  
       [Description (  
         "Identifies the language that should be used by the Printer "  
         "for the management of this Job. The specified value should "  
         "conform to RFC 1766. For example, \"en\" is used for "  
         "English."),  
        ModelCorrespondence {"CIM_Printer.NaturalLanguagesSupported"}  
       ]  
    string NaturalLanguage;  
       [Description (  
         "The number of print-stream pages that should be rendered "  
         "onto a single media sheet when the Printer outputs this "  
         "PrintJob."),  
        ModelCorrespondence {"CIM_Printer.MaxNumberUp"}  
       ]  
    uint32 NumberUp;  
       [Override("JobStatus"),  
        Description (        Description (
         "The inherited JobStatus is used to provide additional "       "An association between a ComputerSystem and the IRQs "
         "information about the status of a PrintJob beyond that "       "available on it.") ]
         "enumerated by PrintJobStatus."),  class CIM_ComputerSystemIRQ : CIM_ComputerSystemResource {
        ModelCorrespondence {"CIM_PrintJob.PrintJobStatus"}        [Override ("PartComponent"), Weak,
       ]         Description ("An IRQ of the ComputerSystem.")]
    string JobStatus;     CIM_IRQ REF PartComponent;
       [Description (  
         "Describes the current state of this Job with respect "  
         "to the PrintQueue and the Printer. Additional information "  
         "may be specified in JobStatus."),  
        ValueMap {"1", "2", "3", "4", "5", "6", "7"},  
        Values {"Other", "Unknown", "Pending", "Blocked",  
              "Complete", "Completed With Error", "Printing"},  
        ModelCorrespondence {"CIM_PrintJob.TimeCompleted",  
              "CIM_PrintJob.JobStatus"}  
       ]  
    uint16 PrintJobStatus;  
       [Description (  
         "Time when this Job was completed. This value is only "  
          "valid if the PrintJobStatus has been assigned to "  
          "\"Complete\" (value=5) or \"Completed With Error\" "  
          "(value=6)."),  
        ModelCorrespondence {"CIM_PrintJob.PrintJobStatus"}  
       ]  
    datetime TimeCompleted;  
       [Description (  
         "Describes the job sheets that should be used when this "  
         "Job is output on the Printer."),  
        ModelCorrespondence {"CIM_Printer.AvailableJobSheets"}  
       ]  
    string RequiredJobSheets[];  
       [Description (  
         "Provides additional information, beyond Job Owner "  
         "inherited from CIM_Job, to identify the origins of the "  
         "PrintJob. This property could include information such as "  
         "the System, application or Process that created the Job.")  
       ]  
    string JobOrigination;  
 }; };
  
 // =================================================================== // ===================================================================
 // PrintSAP  // ComputerSystemMappedIO
 // =================================================================== // ===================================================================
    [Description ("The ServiceAccessPoint for a printing Service.") ]     [Association, Aggregation,
 class CIM_PrintSAP : CIM_ServiceAccessPoint      Description (
 {       "An association between a ComputerSystem and the Memory Mapped "
       [Description (       "I/O ports available on it.") ]
         "Specifies the print procotols that this AccessPoint uses. "  class CIM_ComputerSystemMappedIO : CIM_ComputerSystemResource {
         "Note that each entry of this array is related to the entry in "        [Override ("PartComponent"), Weak,
         "the PrintProtocolInfo array that is located at the same "         Description (
         "index."),          "A memory mapped I/O port of the ComputerSystem.")]
        ArrayType ("Indexed"),     CIM_MemoryMappedIO REF PartComponent;
        Values {"Unknown", "Other", "SMB", "BSD", "SYSV","HPNP", "IPP",  
              "Local"},  
        ModelCorrespondence {"CIM_PrintSAP.PrintProtocolInfo"}  
       ]  
    uint16 PrintProtocol[];  
       [Description (  
         "Provides clarifying or additional information about the "  
         "protocols supported by this AccessPoint. Note, each entry "  
         "of this array is related to the entry in the PrintProtocol "  
         "array that is located at the same index."),  
        ArrayType ("Indexed"),  
        ModelCorrespondence {"CIM_PrintSAP.PrintProtocol"}  
       ]  
    string PrintProtocolInfo[];  
 }; };
  
   
 // =================================================================== // ===================================================================
 // PrintService  // ComputerSystemDMA
 // =================================================================== // ===================================================================
    [Description (     [Association, Aggregation,
        "The Service that provides support for printing. The basic "      Description (
        "assumption of the Printing Model is that a PrintService accepts "       "An association between a ComputerSystem and the DMA channels "
        "a PrintJob for processing, via its PrintSAP. The Job is then "       "available on it.") ]
        "placed on a PrintQueue (indicated by the QueueForPrintService "  class CIM_ComputerSystemDMA : CIM_ComputerSystemResource {
        "association). Printers take Jobs from Queues (indicated by the "        [Override ("PartComponent"), Weak,
        "PrinterServicingQueue association).")         Description ("A DMA channel of the ComputerSystem.")]
    ]     CIM_DMA REF PartComponent;
 class CIM_PrintService : CIM_Service  
 {  
       [Description (  
         "An array of free-form strings specifying the types of "  
         "paper that may be used by Jobs that are submitted to this "  
         "PrintService. This may be different than the paper types that "  
         "are installed on the Printer, because the PrintService may "  
         "include support for manually making other types available or "  
         "only a subset of paper types may be exported via this Service. "  
         "Each string should be expressed in the form specified by "  
         "ISO/IEC 10175 Document Printing Application (DPA) which is "  
         "also summarized in Appendix C of RFC 1759 (Printer MIB). "  
         "Examples of valid strings are \"iso-a4-colored\" and "  
         "\"na-10x14-envelope\"."),  
        ModelCorrespondence {"CIM_Printer.PaperTypesAvailable",  
              "CIM_PrintJob.RequiredPaperType"}  
       ]  
    string PaperTypesAvailable[];  
       [Description (  
         "An array indicating the print languages supported by the "  
         "PrintService. A PrintService may support more languages "  
         "than those available on the underlying Printer through the "  
         "use of filters. An administrator may also choose to prevent "  
         "some languages from being exported by the PrintService."),  
        ValueMap {"1", "2", "3", "4", "5", "6", "7", "8", "9", "10",  
                "11", "12", "13", "14", "15", "16", "17", "18", "19",  
                "20", "21", "22", "23", "24", "25", "26", "27", "28",  
                "29", "30", "31", "32", "33", "34", "35", "36", "37",  
                "38", "39", "40", "41", "42", "43", "44", "45", "46", "47"},  
        Values {"Other", "Unknown", "PCL", "HPGL", "PJL", "PS",  
                "PSPrinter", "IPDS", "PPDS", "EscapeP", "Epson", "DDIF",  
                "Interpress", "ISO6429", "Line Data", "MODCA", "REGIS",  
                "SCS", "SPDL", "TEK4014", "PDS", "IGP", "CodeV", "DSCDSE",  
                "WPS", "LN03", "CCITT", "QUIC", "CPAP", "DecPPL",  
                "Simple Text", "NPAP", "DOC", "imPress", "Pinwriter",  
                "NPDL", "NEC201PL", "Automatic", "Pages", "LIPS", "TIFF",  
                "Diagnostic", "CaPSL", "EXCL", "LCDS", "XES", "MIME"},  
        ArrayType ("Indexed"),  
        MappingStrings {"MIB.IETF|Printer-MIB.prtInterpreterLangFamily"},  
        ModelCorrespondence {"CIM_Printer.LanguagesSupported",  
              "CIM_PrintJob.Language",  
              "CIM_PrintService.MimeTypesSupported"}  
       ]  
    uint16 LanguagesSupported[];  
       [Description (  
         "An array of free-form strings providing more detailed "  
         "explanations for any mime types that are supported by "  
         "the PrintService. Support for mime types is indicated "  
         "by specifying a value of 47 in the LanguagesSupported array."),  
        ModelCorrespondence {"CIM_Printer.MimeTypesSupported",  
              "CIM_PrintJob.MimeTypes",  
              "CIM_PrintService.LanguagesSupported"}  
       ]  
    string MimeTypesSupported[];  
       [Description (  
         "An array of integers indicating the capabilities supported "  
         "by this service. Information such as \"Duplex Printing\" "  
         "(value=3) or \"Transparency Printing\" (7) is specified in "  
         "this property."),  
        ArrayType ("Indexed"),  
        Values {"Unknown", "Other", "Color Printing", "Duplex Printing",  
              "Copies", "Collation", "Stapling", "Transparency Printing",  
              "Punch", "Cover", "Bind", "Black and White Printing",  
              "One Sided", "Two Sided Long Edge", "Two Sided Short Edge",  
              "Portrait", "Landscape", "Reverse Portrait",  
              "Reverse Landscape", "Quality High", "Quality Normal",  
              "Quality Low"},  
        ModelCorrespondence {"CIM_Printer.Capabilities",  
              "CIM_PrintJob.Finishing",  
              "CIM_PrintService.CapabilityDescriptions"}  
       ]  
    uint16 Capabilities[];  
       [Description (  
         "An array of free-form strings providing more detailed "  
         "explanations for any of the Printer features indicated in "  
         "the Capabilities array. Note, each entry of this array "  
         "is related to the entry in the Capabilities array that "  
         "is located at the same index."),  
        ArrayType ("Indexed"),  
        ModelCorrespondence {"CIM_PrintService.Capabilities"}  
       ]  
    string CapabilityDescriptions[];  
       [Description (  
         "Describes the filters that are available within this Print"  
         "Service. For example, a PrintService may be able to convert "  
         "a Job submitted in one page description language to another, "  
         "so that it can be passed to an available Printer.")  
       ]  
    string AvailableFilters[];  
 }; };
  
   
 // =================================================================== // ===================================================================
 // PrinterServicingQueue  // AllocatedResource
 // =================================================================== // ===================================================================
    [Association,     [Association, Description (
     Description (       "An association between LogicalDevices and SystemResources, "
        "This association indicates that a Printer can be passed "       "indicating that the Resource is assigned to the Device.") ]
        "PrintJobs from a particular Queue.")  class CIM_AllocatedResource : CIM_Dependency {
    ]  
 class CIM_PrinterServicingQueue : CIM_Dependency  
 {  
       [Override ("Antecedent"),       [Override ("Antecedent"),
        Description (         Description ("The Resource.") ]
         "A destination Printer for Jobs enqueued on the Dependent "     CIM_SystemResource REF Antecedent;
         "Queue.")  
       ]  
    CIM_Printer REF Antecedent;  
       [Override ("Dependent"),       [Override ("Dependent"),
        Description ("A Queue that is providing Jobs to the Printer.")         Description (
       ]          "The LogicalDevice to which the Resource is assigned.") ]
    CIM_PrintQueue REF Dependent;     CIM_LogicalDevice REF Dependent;
 }; };
  
   
 // =================================================================== // ===================================================================
 // PrinterServicingJob  // AllocatedDMA
 // =================================================================== // ===================================================================
    [Association,     [Association, Description (
     Description (       "An association between a LogicalDevice and a DMA System"
        "This association indicates that a Printer is currently "       "Resource indicating that the DMA Channel is assigned to the "
        "servicing a particular PrintJob.")       "Device.") ]
    ]  class CIM_AllocatedDMA : CIM_AllocatedResource {
 class CIM_PrinterServicingJob : CIM_Dependency  
 {  
       [Override ("Antecedent"),       [Override ("Antecedent"),
        Description ("The destination Printer for a PrintJob.")         Description ("The DMA Channel.")  ]
       ]     CIM_DMA REF Antecedent;
    CIM_Printer REF Antecedent;        [Description (
       [Override ("Dependent"), Description ("The PrintJob.") ]          "Boolean indicating whether the LogicalDevice can act as a "
    CIM_PrintJob REF Dependent;          "bus master on the DMA Channel."),
          MappingStrings {"MIF.DMTF|System Resource DMA Info|001.6"}  ]
      boolean BusMaster;
 }; };
  
 // ===================================================================  
 // PrintJobFile  
 // ===================================================================  
    [Association, Aggregation,  
     Description (  
        "This association indicates which files are associated with "  
        "a PrintJob.")  
    ]  
 class CIM_PrintJobFile : CIM_Component  
 {  
       [Override ("GroupComponent"),  
        Description ("The PrintJob that is based on one or more Files.")  
       ]  
    CIM_PrintJob REF GroupComponent;  
       [Override ("PartComponent"),  
        Description ("The File(s) that make up a PrintJob.")  
       ]  
    CIM_DataFile REF PartComponent;  
 };  
  
 // ===================================================================  // ==================================================================
 // QueueForPrintService  // DeviceErrorCounts
 // ===================================================================  // ==================================================================
    [Association,     [Description (
        "DeviceErrorCounts is a statistical class containing error-"
        "related counters for a LogicalDevice. The types of errors "
        "are as defined by CCITT (Rec X.733) and ISO (IEC 10164-4).") ]
   class CIM_DeviceErrorCounts : CIM_StatisticalInformation {
         [Propagated ("CIM_LogicalDevice.SystemCreationClassName"),
          Key, MaxLen (256),
          Description ("The scoping System's CreationClassName. ") ]
      string SystemCreationClassName;
         [Propagated ("CIM_LogicalDevice.SystemName"),
          Key, MaxLen (256),
          Description ("The scoping System's Name. ") ]
      string SystemName;
         [Propagated ("CIM_LogicalDevice.CreationClassName"),
          Key, MaxLen (256),
          Description ("The scoping Device's CreationClassName. ") ]
      string DeviceCreationClassName;
         [Propagated ("CIM_LogicalDevice.DeviceID"),
          Key, MaxLen (64),
          Description ("The scoping Device's ID. ") ]
      string DeviceID;
         [Override ("Name"),
          Key, MaxLen (256),
     Description (     Description (
        "This association indicates that a PrintService utilizes a "          "The inherited Name serves as part of the key for the "
        "particular PrintQueue.")          "DeviceErrorCounts instance. The object is scoped by "
    ]          "the LogicalDevice to which the statistics apply. ") ]
 class CIM_QueueForPrintService : CIM_Dependency     string Name;
 {        [Description ("Count of the indeterminate errors. "),
       [Override ("Antecedent"),         Counter ]
        Description ("The PrintQueue that the Service utilizes.")     uint64 IndeterminateErrorCount;
       ]        [Description ("Count of the critical errors. "),
    CIM_PrintQueue REF Antecedent;         MappingStrings {"MIF.DMTF|Operational State|006"},
       [Override ("Dependent"),         Counter ]
        Description ("The PrintService that puts Jobs on the Queue.")     uint64 CriticalErrorCount;
       ]        [Description ("Count of the major errors. "),
    CIM_PrintService REF Dependent;         MappingStrings {"MIF.DMTF|Operational State|006"},
          Counter ]
      uint64 MajorErrorCount;
         [Description ("Count of the minor errors. "),
          Counter ]
      uint64 MinorErrorCount;
         [Description ("Count of the warnings. "),
          MappingStrings {"MIF.DMTF|Operational State|006"},
          Counter ]
      uint64 WarningCount;
       [Description (       [Description (
         "Indicates that the PrintService can accept Jobs and "          "Method to reset the error and warning counters. The method "
         "place them on the Queue.")          "takes one parameter as input - an integer indicating which "
       ]          "counter to reset. For this input parameter, 0 indicates all, "
    boolean QueueAcceptingFromService;          "1 indicates a reset of the indeterminate error counter, "
           "2 the critical error counter, 3 the major error counter, "
           "4 the minor error counter and 5 the warning counter. The "
           "method returns 0 if successful, 1 if not supported, and any "
           "other value if an error occurred. A method is specified so "
           "that the LogicalDevice's instrumentation, which tabulates "
           "the errors and warnings, can also reset its internal "
           "processing and counters.\n"
           "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.") ]
      uint32 ResetCounter (
         [IN, Values {"All","Indeterminate Error Counter",
                      "Critical Error Counter", "Major Error Counter",
                      "Minor Error Counter", "Warning Counter"}]
         uint16 SelectedCounter);
 }; };
  
 // ===================================================================  
 // QueueForwardsToPrintSAP  
 // ===================================================================  
    [Association,  
     Description (  
        "This association indicates that the Jobs from a PrintQueue "  
        "can be sent to the referenced PrintSAP, to be handled by the "  
        "SAP's backing PrintService.")  
    ]  
 class CIM_QueueForwardsToPrintSAP : CIM_Dependency  
 {  
       [Override ("Antecedent"),  
        Description ("The PrintSAP for the PrintService.")  
       ]  
    CIM_PrintSAP REF Antecedent;  
       [Override ("Dependent"),  
        Description ("The PrintQueue that forwards Jobs to the SAP.")  
       ]  
    CIM_PrintQueue REF Dependent;  
 };  
  
 // ===================================================================  // ==================================================================
 // OwningPrintQueue  // ErrorCountersForDevice
 // ===================================================================  // ==================================================================
    [Association,     [Association, Description (
        "ErrorCountersForDevice relates the DeviceErrorCounts class "
        "to the LogicalDevice to which it applies. ") ]
   class CIM_ErrorCountersForDevice : CIM_Statistics {
         [Override ("Stats"), Weak,
     Description (     Description (
        "This association indicates which Queue holds a PrintJob and "          "The statistical object - in this case, the error counter "
        "where the Job is located within that Queue. A Job may remain on "          "class. ")]
        "its final Queue once it has been printed with a PrintJobStatus "     CIM_DeviceErrorCounts REF Stats;
        "of \"Complete\" or \"Completed With Error\".")      [Override ("Element"), Min(1), Max(1),
    ]       Description ("The Device to which the error counters apply. ") ]
 class CIM_OwningPrintQueue : CIM_JobDestinationJobs     CIM_LogicalDevice REF Element;
 {  
       [Override ("Antecedent"),  
        Description ("The PrintQueue on which the Job is held."),  
        Min(1), Max(1)  
       ]  
    CIM_PrintQueue REF Antecedent;  
       [Override ("Dependent"),  
        Description ("The PrintJob."),  
        Weak  
       ]  
    CIM_PrintJob REF Dependent;  
       [Description (  
         "The position of the PrintJob on the Queue. The top of the "  
         "Queue is indicated by a value of 1 with higher values being "  
         "used to represent Jobs that are further away from the top of "  
         "the Queue. A QueuePosition of zero indicate that the Job has "  
         "completed (either with or without error).")  
       ]  
    uint32 QueuePosition;  
 }; };
  
 // =================================================================== // ===================================================================
 // Sensor // Sensor
 // =================================================================== // ===================================================================
    [Abstract,     [Abstract, Description (
     Description (  
        "A Sensor is a hardware device capable of measuring the "        "A Sensor is a hardware device capable of measuring the "
        "characteristics of some physical property - for example, the "        "characteristics of some physical property - for example, the "
        "temperature or voltage characteristics of a UnitaryComputer"        "temperature or voltage characteristics of a UnitaryComputer"
        "System.")       "System.") ]
    ]  class CIM_Sensor : CIM_LogicalDevice {
 class CIM_Sensor : CIM_LogicalDevice  
 {  
       [Description (       [Description (
         "The Type of the Sensor, e.g. Voltage or Temperature Sensor. "         "The Type of the Sensor, e.g. Voltage or Temperature Sensor. "
         "If the type is set to \"Other\", then the OtherSensorType"         "If the type is set to \"Other\", then the OtherSensorType"
Line 2266 
Line 1756 
        Values {"Unknown", "Other", "Temperature", "Voltage", "Current",        Values {"Unknown", "Other", "Temperature", "Voltage", "Current",
              "Tachometer", "Counter", "Switch", "Lock", "Humidity",              "Tachometer", "Counter", "Switch", "Lock", "Humidity",
              "Smoke Detection", "Presence", "Air Flow"},              "Smoke Detection", "Presence", "Air Flow"},
        ModelCorrespondence {"CIM_Sensor.OtherSensorTypeDescription"}         ModelCorrespondence {"CIM_Sensor.OtherSensorTypeDescription"} ]
       ]  
    uint16 SensorType;    uint16 SensorType;
       [MaxLen (128),        [MaxLen (128), Description (
        Description (  
         "A string describing the Sensor type - used when the SensorType "         "A string describing the Sensor type - used when the SensorType "
         "property is set to \"Other\"."),         "property is set to \"Other\"."),
        ModelCorrespondence {"CIM_Sensor.SensorType"}         ModelCorrespondence {"CIM_Sensor.SensorType"} ]
       ]  
    string OtherSensorTypeDescription;    string OtherSensorTypeDescription;
       [MaxLen (128),        [MaxLen (128), Description (
        Description (  
         "PossibleStates enumerates the string outputs of the Sensor. For "         "PossibleStates enumerates the string outputs of the Sensor. For "
         "example, a \"Switch\" Sensor may output the states \"On\", or \"Off\". "         "example, a \"Switch\" Sensor may output the states \"On\", or \"Off\". "
         "Another implementation of the Switch may output the states \"Open\", "         "Another implementation of the Switch may output the states \"Open\", "
Line 2285 
Line 1771 
         "thresholds. This Sensor can report the states like \"Normal\", "         "thresholds. This Sensor can report the states like \"Normal\", "
         "\"Upper Fatal\", \"Lower Non-Critical\", etc. A NumericSensor that "         "\"Upper Fatal\", \"Lower Non-Critical\", etc. A NumericSensor that "
         "does not publish readings and thresholds, but stores this data "         "does not publish readings and thresholds, but stores this data "
         "internally, can still report its states.")          "internally, can still report its states.") ]
       ]  
    string PossibleStates[];    string PossibleStates[];
       [MaxLen (128),        [MaxLen (128), Description (
        Description (  
         "The current state indicated by the Sensor. This is always one of "         "The current state indicated by the Sensor. This is always one of "
         "the \"PossibleStates\".")          "the \"PossibleStates\".") ]
       ]  
    string CurrentState;    string CurrentState;
       [Description (       [Description (
         "The polling interval that the Sensor hardware or the instrumentation "         "The polling interval that the Sensor hardware or the instrumentation "
         "uses to determine the current state of the Sensor."),         "uses to determine the current state of the Sensor."),
        Units ("NanoSeconds")         Units ("NanoSeconds") ]
       ]  
    uint64 PollingInterval;    uint64 PollingInterval;
 }; };
  
   
 // =================================================================== // ===================================================================
 // AssociatedSensor // AssociatedSensor
 // =================================================================== // ===================================================================
    [Association,     [Association, Description (
     Description (  
        "Many Devices include Sensors or have Sensors installed "        "Many Devices include Sensors or have Sensors installed "
        "nearby, in order to measure critical input and output "        "nearby, in order to measure critical input and output "
        "properties.  This association indicates that relationship.")       "properties.  This association indicates that relationship.") ]
    ]  class CIM_AssociatedSensor : CIM_Dependency {
 class CIM_AssociatedSensor : CIM_Dependency  
 {  
       [Override ("Antecedent"),       [Override ("Antecedent"),
        Description ("The Sensor.")         Description ("The Sensor.") ]
       ]  
    CIM_Sensor REF Antecedent;    CIM_Sensor REF Antecedent;
       [Override ("Dependent"),        [Override ("Dependent"), Description (
        Description (  
           "The LogicalDevice for which information is measured by "           "The LogicalDevice for which information is measured by "
           "the Sensor.")          "the Sensor.") ]
       ]  
    CIM_LogicalDevice REF Dependent;    CIM_LogicalDevice REF Dependent;
 }; };
  
   
 // =================================================================== // ===================================================================
 // BinarySensor // BinarySensor
 // =================================================================== // ===================================================================
Line 2333 
Line 1811 
        "of the CurrentState and PossibleStates properties to Sensor, "        "of the CurrentState and PossibleStates properties to Sensor, "
        "the BinarySensor subclass is no longer necessary, but is "        "the BinarySensor subclass is no longer necessary, but is "
        "retained for backward compatibility. A BinarySensor can be "        "retained for backward compatibility. A BinarySensor can be "
        "created by instantiating a Sensor with two PossibleStates.")       "created by instantiating a Sensor with two PossibleStates.") ]
    ]  class CIM_BinarySensor : CIM_Sensor {
 class CIM_BinarySensor : CIM_Sensor  
 {  
       [Description ("The current value indicated by the Sensor.")]       [Description ("The current value indicated by the Sensor.")]
    boolean CurrentReading;    boolean CurrentReading;
       [Description (       [Description (
           "ExpectedReading indicates the 'normal' value for the Sensor.")          "ExpectedReading indicates the 'normal' value for the Sensor.") ]
       ]  
    boolean ExpectedReading;    boolean ExpectedReading;
       [MaxLen (64),        [MaxLen (64), Description (
          Description (  
           "InterpretationOfTrue is a string indicating what a 'True' "           "InterpretationOfTrue is a string indicating what a 'True' "
           "value from the BinarySensor means.  This information could "           "value from the BinarySensor means.  This information could "
           "be displayed to a user.")          "be displayed to a user.") ]
       ]  
    string InterpretationOfTrue;    string InterpretationOfTrue;
       [MaxLen (64),        [MaxLen (64), Description (
          Description (  
           "InterpretationOfFalse is a string indicating what a 'False' "           "InterpretationOfFalse is a string indicating what a 'False' "
           "value from the BinarySensor means.  This information could "           "value from the BinarySensor means.  This information could "
           "be displayed to a user.")          "be displayed to a user.") ]
       ]  
    string InterpretationOfFalse;    string InterpretationOfFalse;
 }; };
  
   
 // =================================================================== // ===================================================================
 // MultiStateSensor // MultiStateSensor
 // =================================================================== // ===================================================================
    [Description (    [Description (
      "A Multi-StateSensor is a multi-member set of Sensors.")       "A Multi-StateSensor is a multi-member set of Sensors.") ]
    ]  class CIM_MultiStateSensor : CIM_Sensor {
 class CIM_MultiStateSensor : CIM_Sensor  
 {  
 }; };
  
   
 // =================================================================== // ===================================================================
 // CollectionOfSensors // CollectionOfSensors
 // =================================================================== // ===================================================================
    [Association,     [Association, Aggregation, Description (
     Aggregation,  
     Description (  
        "The CollectionOfSensors association indicates the "        "The CollectionOfSensors association indicates the "
        "Sensors that make up a MultiStateSensor.")       "Sensors that make up a MultiStateSensor.") ]
    ]  class CIM_CollectionOfSensors : CIM_Component {
 class CIM_CollectionOfSensors : CIM_Component        [Override ("GroupComponent"), Aggregate, Max (1),
 {         Description ("The MultiStateSensor.")]
       [Override ("GroupComponent"),  
        Aggregate,  
        Description ("The MultiStateSensor."),  
        Max (1)  
       ]  
    CIM_MultiStateSensor REF GroupComponent;    CIM_MultiStateSensor REF GroupComponent;
       [Override ("PartComponent"),        [Override ("PartComponent"), Min (2),
        Description (        Description (
           "A Sensor that is part of the MultiStateSensor."),          "A Sensor that is part of the MultiStateSensor.")]
        Min (2)  
       ]  
    CIM_Sensor REF PartComponent;    CIM_Sensor REF PartComponent;
 }; };
  
   
 // =================================================================== // ===================================================================
 // DiscreteSensor // DiscreteSensor
 // =================================================================== // ===================================================================
Line 2409 
Line 1872 
        "Information in the CurrentReading and PossibleValues properties "        "Information in the CurrentReading and PossibleValues properties "
        "will typically have the same values and semantics as for the "        "will typically have the same values and semantics as for the "
        "CurrentState and PossibleStates properties, inherited from "        "CurrentState and PossibleStates properties, inherited from "
        "Sensor.")       "Sensor.") ]
    ]  class CIM_DiscreteSensor : CIM_Sensor {
 class CIM_DiscreteSensor : CIM_Sensor        [MaxLen (64), Description (
 {          "The current value indicated by the Sensor.") ]
       [MaxLen (64),  
          Description ("The current value indicated by the Sensor.")]  
    string CurrentReading;    string CurrentReading;
       [MaxLen (64),        [MaxLen (64), Description (
          Description (  
           "PossibleValues enumerates the string outputs that can be "           "PossibleValues enumerates the string outputs that can be "
           "reported by the DiscreteSensor.")          "reported by the DiscreteSensor.") ]
       ]  
    string PossibleValues[];    string PossibleValues[];
       [MaxLen (64),        [MaxLen (64), Description (
          Description (  
           "AcceptableValues details which of the PossibleValues strings "           "AcceptableValues details which of the PossibleValues strings "
           "are considered 'acceptable' (ie, 'not an error').")          "are considered 'acceptable' (ie, 'not an error').") ]
       ]  
    string AcceptableValues[];    string AcceptableValues[];
 }; };
  
   
 // =================================================================== // ===================================================================
 // NumericSensor // NumericSensor
 // =================================================================== // ===================================================================
    [Description (    [Description (
         "A Numeric Sensor is capable of returning numeric readings "         "A Numeric Sensor is capable of returning numeric readings "
         "and optionally supports thresholds settings.")       "and optionally supports thresholds settings.") ]
    ]  class CIM_NumericSensor : CIM_Sensor {
 class CIM_NumericSensor : CIM_Sensor  
 {  
       [Description (       [Description (
         "The base unit of the values returned by this Sensor. All "         "The base unit of the values returned by this Sensor. All "
         "the values returned by this Sensor are represented in the units "         "the values returned by this Sensor are represented in the units "
Line 2467 
Line 1923 
              "Bytes", "Words (data)", "DoubleWords", "QuadWords",              "Bytes", "Words (data)", "DoubleWords", "QuadWords",
              "Percentage"},              "Percentage"},
        ModelCorrespondence {"CIM_NumericSensor.UnitModifier",        ModelCorrespondence {"CIM_NumericSensor.UnitModifier",
             "CIM_NumericSensor.RateUnits"}          "CIM_NumericSensor.RateUnits"} ]
       ]  
    uint16 BaseUnits;    uint16 BaseUnits;
       [Description (       [Description (
         "The unit multiplier for the values returned by this Sensor. All "         "The unit multiplier for the values returned by this Sensor. All "
Line 2483 
Line 1938 
         "units apply to all numeric properties of the Sensor, unless "         "units apply to all numeric properties of the Sensor, unless "
         "explicitly overridden by the Units qualifier."),         "explicitly overridden by the Units qualifier."),
        ModelCorrespondence {"CIM_NumericSensor.BaseUnits",        ModelCorrespondence {"CIM_NumericSensor.BaseUnits",
             "CIM_NumericSensor.RateUnits"}          "CIM_NumericSensor.RateUnits"} ]
       ]  
    sint32 UnitModifier;    sint32 UnitModifier;
       [Description (       [Description (
         "Specifies if the units returned by this Sensor are rate units. "         "Specifies if the units returned by this Sensor are rate units. "
Line 2506 
Line 1960 
              "Per Minute", "Per Hour", "Per Day", "Per Week", "Per Month",              "Per Minute", "Per Hour", "Per Day", "Per Week", "Per Month",
              "Per Year"},              "Per Year"},
        ModelCorrespondence {"CIM_NumericSensor.UnitModifier",        ModelCorrespondence {"CIM_NumericSensor.UnitModifier",
             "CIM_NumericSensor.BaseUnits"}          "CIM_NumericSensor.BaseUnits"} ]
       ]  
    uint16 RateUnits;    uint16 RateUnits;
       [Description ("The current value indicated by the Sensor.")]       [Description ("The current value indicated by the Sensor.")]
    sint32 CurrentReading;    sint32 CurrentReading;
       [Description (       [Description (
           "NominalReading indicates the 'normal' or expected value "           "NominalReading indicates the 'normal' or expected value "
           "for the NumericSensor.")          "for the NumericSensor.") ]
       ]  
    sint32 NominalReading;    sint32 NominalReading;
       [Description (       [Description (
           "NormalMax provides guidance for the user as to the "           "NormalMax provides guidance for the user as to the "
           "normal maximum range for the NumericSensor.")          "normal maximum range for the NumericSensor.") ]
       ]  
    sint32 NormalMax;    sint32 NormalMax;
       [Description (       [Description (
           "NormalMin provides guidance for the user as to the "           "NormalMin provides guidance for the user as to the "
           "normal minimum range for the NumericSensor.")          "normal minimum range for the NumericSensor.") ]
       ]  
    sint32 NormalMin;    sint32 NormalMin;
       [Description (       [Description (
           "MaxReadable indicates the largest value of the measured "           "MaxReadable indicates the largest value of the measured "
           "property that can be read by the NumericSensor.")          "property that can be read by the NumericSensor.") ]
       ]  
    sint32 MaxReadable;    sint32 MaxReadable;
       [Description (       [Description (
           "MinReadable indicates the smallest value of the measured "           "MinReadable indicates the smallest value of the measured "
           "property that can be read by the NumericSensor.")          "property that can be read by the NumericSensor.") ]
       ]  
    sint32 MinReadable;    sint32 MinReadable;
       [Description (       [Description (
           "Resolution indicates the ability of the Sensor to resolve "           "Resolution indicates the ability of the Sensor to resolve "
         "differences in the measured property.  This value may vary "         "differences in the measured property.  This value may vary "
           "depending on whether the Device is linear over its dynamic "           "depending on whether the Device is linear over its dynamic "
           "range.")          "range.") ]
       ]  
    uint32 Resolution;    uint32 Resolution;
       [Description (       [Description (
           "Indicates the tolerance of the Sensor for the measured "           "Indicates the tolerance of the Sensor for the measured "
           "property. Tolerance, along with Resolution and Accuracy, "           "property. Tolerance, along with Resolution and Accuracy, "
           "is used to calculate the actual value of the measured "           "is used to calculate the actual value of the measured "
           "physical property.  Tolerance may vary depending on "           "physical property.  Tolerance may vary depending on "
           "whether the Device is linear over its dynamic range.")          "whether the Device is linear over its dynamic range.") ]
       ]  
    sint32 Tolerance;    sint32 Tolerance;
       [Description (       [Description (
           "Indicates the accuracy of the Sensor for the measured "           "Indicates the accuracy of the Sensor for the measured "
Line 2558 
Line 2004 
           "is used to calculate the actual value of the measured "           "is used to calculate the actual value of the measured "
           "physical property. Accuracy may vary depending on whether "           "physical property. Accuracy may vary depending on whether "
           "the Device is linear over its dynamic range."),           "the Device is linear over its dynamic range."),
        Units ("Hundredths of Percent")         Units ("Hundredths of Percent") ]
       ]  
    sint32 Accuracy;    sint32 Accuracy;
       [Description (       [Description (
           "Indicates that the Sensor is linear over its dynamic range.")          "Indicates that the Sensor is linear over its dynamic range.") ]
       ]  
    boolean IsLinear;    boolean IsLinear;
       [Description (       [Description (
         "Indicates the margin built around the thresholds. This margin "         "Indicates the margin built around the thresholds. This margin "
Line 2573 
Line 2017 
         "environmental factors. Once a threshold is crossed, the state of "         "environmental factors. Once a threshold is crossed, the state of "
         "the Sensor should change. However, the state should not "         "the Sensor should change. However, the state should not "
         "fluctuate between the old and new states unless the Sensor's "         "fluctuate between the old and new states unless the Sensor's "
         "change in the reading exceeds the hysteresis value.")          "change in the reading exceeds the hysteresis value.") ]
       ]  
    uint32 Hysteresis;    uint32 Hysteresis;
       [Description (       [Description (
         "The Sensor's threshold values specify the ranges (min and max "         "The Sensor's threshold values specify the ranges (min and max "
Line 2583 
Line 2026 
         "Reading is between LowerThresholdNonCritical and UpperThreshold"         "Reading is between LowerThresholdNonCritical and UpperThreshold"
         "NonCritical, then the Sensor is reporting a normal value. "         "NonCritical, then the Sensor is reporting a normal value. "
         "If CurrentReading is between LowerThresholdNonCritical and Lower"         "If CurrentReading is between LowerThresholdNonCritical and Lower"
         "ThresholdCritical, then the CurrentState is NonCritical.")          "ThresholdCritical, then the CurrentState is NonCritical.") ]
       ]  
    sint32 LowerThresholdNonCritical;    sint32 LowerThresholdNonCritical;
       [Description (       [Description (
         "The Sensor's threshold values specify the ranges (min and max "         "The Sensor's threshold values specify the ranges (min and max "
Line 2593 
Line 2035 
         "Reading is between LowerThresholdNonCritical and UpperThreshold"         "Reading is between LowerThresholdNonCritical and UpperThreshold"
         "NonCritical, then the Sensor is reporting a normal value. "         "NonCritical, then the Sensor is reporting a normal value. "
         "If the CurrentReading is between UpperThresholdNonCritical and "         "If the CurrentReading is between UpperThresholdNonCritical and "
         "UpperThresholdCritical, then the CurrentState is NonCritical.")          "UpperThresholdCritical, then the CurrentState is NonCritical.") ]
       ]  
    sint32 UpperThresholdNonCritical;    sint32 UpperThresholdNonCritical;
       [Description (       [Description (
         "The Sensor's threshold values specify the ranges (min and max "         "The Sensor's threshold values specify the ranges (min and max "
         "values) for determining whether the Sensor is operating under "         "values) for determining whether the Sensor is operating under "
         "Normal, NonCritical, Critical or Fatal conditions. If the Current"         "Normal, NonCritical, Critical or Fatal conditions. If the Current"
         "Reading is between LowerThresholdCritical and LowerThreshold"         "Reading is between LowerThresholdCritical and LowerThreshold"
         "Fatal, then the CurrentState is Critical.")          "Fatal, then the CurrentState is Critical.") ]
       ]  
    sint32 LowerThresholdCritical;    sint32 LowerThresholdCritical;
       [Description (       [Description (
         "The Sensor's threshold values specify the ranges (min and max "         "The Sensor's threshold values specify the ranges (min and max "
         "values) for determining whether the Sensor is operating under "         "values) for determining whether the Sensor is operating under "
         "Normal, NonCritical, Critical or Fatal conditions. If the Current"         "Normal, NonCritical, Critical or Fatal conditions. If the Current"
         "Reading is between UpperThresholdCritical and UpperThreshold"         "Reading is between UpperThresholdCritical and UpperThreshold"
         "Fatal, then the CurrentState is Critical.")          "Fatal, then the CurrentState is Critical.") ]
       ]  
    sint32 UpperThresholdCritical;    sint32 UpperThresholdCritical;
       [Description (       [Description (
         "The Sensor's threshold values specify the ranges (min and max "         "The Sensor's threshold values specify the ranges (min and max "
         "values) for determining whether the Sensor is operating under "         "values) for determining whether the Sensor is operating under "
         "Normal, NonCritical, Critical or Fatal conditions. If the Current"         "Normal, NonCritical, Critical or Fatal conditions. If the Current"
         "Reading is below LowerThresholdFatal, then the CurrentState is "         "Reading is below LowerThresholdFatal, then the CurrentState is "
         "Fatal.")          "Fatal.") ]
       ]  
    sint32 LowerThresholdFatal;    sint32 LowerThresholdFatal;
      [Description (      [Description (
        "The Sensor's threshold values specify the ranges (min and max "        "The Sensor's threshold values specify the ranges (min and max "
        "values) for determining whether the Sensor is operating under "        "values) for determining whether the Sensor is operating under "
        "Normal, NonCritical, Critical or Fatal conditions. If the Current"        "Normal, NonCritical, Critical or Fatal conditions. If the Current"
        "Reading is above UpperThresholdFatal, then the CurrentState is "        "Reading is above UpperThresholdFatal, then the CurrentState is "
        "Fatal.")         "Fatal.") ]
       ]  
    sint32 UpperThresholdFatal;    sint32 UpperThresholdFatal;
       [Description (       [Description (
         "An array representing the thresholds supported by this Sensor."),         "An array representing the thresholds supported by this Sensor."),
        Values {"LowerThresholdNonCritical", "UpperThresholdNonCritical",        Values {"LowerThresholdNonCritical", "UpperThresholdNonCritical",
              "LowerThresholdCritical", "UpperThresholdCritical",              "LowerThresholdCritical", "UpperThresholdCritical",
              "LowerThresholdFatal", "UpperThresholdFatal"}                 "LowerThresholdFatal", "UpperThresholdFatal"} ]
       ]  
    uint16 SupportedThresholds[];    uint16 SupportedThresholds[];
       [Description (       [Description (
         "An array representing the thresholds that are currently enabled "         "An array representing the thresholds that are currently enabled "
         "for this Sensor."),         "for this Sensor."),
        Values {"LowerThresholdNonCritical", "UpperThresholdNonCritical",        Values {"LowerThresholdNonCritical", "UpperThresholdNonCritical",
              "LowerThresholdCritical", "UpperThresholdCritical",              "LowerThresholdCritical", "UpperThresholdCritical",
              "LowerThresholdFatal", "UpperThresholdFatal"}                 "LowerThresholdFatal", "UpperThresholdFatal"} ]
       ]  
    uint16 EnabledThresholds[];    uint16 EnabledThresholds[];
       [Description (       [Description (
         "An array representing the writable thresholds supported by "         "An array representing the writable thresholds supported by "
         "Sensor."),         "Sensor."),
        Values {"LowerThresholdNonCritical", "UpperThresholdNonCritical",        Values {"LowerThresholdNonCritical", "UpperThresholdNonCritical",
              "LowerThresholdCritical", "UpperThresholdCritical",              "LowerThresholdCritical", "UpperThresholdCritical",
              "LowerThresholdFatal", "UpperThresholdFatal"}                 "LowerThresholdFatal", "UpperThresholdFatal"} ]
       ]  
    uint16 SettableThresholds[];    uint16 SettableThresholds[];
       [Description (       [Description (
         "This method resets the values of the thresholds to hardware "         "This method resets the values of the thresholds to hardware "
Line 2659 
Line 2093 
         "specified, using a ValueMap qualifier on the method. The "         "specified, using a ValueMap qualifier on the method. The "
         "strings to which the ValueMap contents are 'translated' "         "strings to which the ValueMap contents are 'translated' "
         "may also be specified in the subclass as a Values "         "may also be specified in the subclass as a Values "
         "array qualifier.")          "array qualifier.") ]
       ]  
    uint32 RestoreDefaultThresholds();    uint32 RestoreDefaultThresholds();
       [Description (       [Description (
         "For a non-linear Sensor, the resolution, accuracy, tolerance "         "For a non-linear Sensor, the resolution, accuracy, tolerance "
Line 2671 
Line 2104 
         "possible return codes could be specified, using a ValueMap "         "possible return codes could be specified, using a ValueMap "
         "qualifier on the method. The strings to which the ValueMap "         "qualifier on the method. The strings to which the ValueMap "
         "contents are 'translated' may also be specified in the "         "contents are 'translated' may also be specified in the "
         "subclass as a Values array qualifier.")          "subclass as a Values array qualifier.") ]
       ]     uint32 GetNonLinearFactors(
    uint32 GetNonLinearFactors([IN]sint32 SensorReading,         [IN]sint32 SensorReading,
     [OUT]sint32 Accuracy, [OUT]uint32 Resolution,         [OUT]sint32 Accuracy,
     [OUT]sint32 Tolerance, [OUT]uint32 Hysteresis);         [OUT]uint32 Resolution,
          [OUT]sint32 Tolerance,
          [OUT]uint32 Hysteresis);
 }; };
  
   
 // =================================================================== // ===================================================================
 // TemperatureSensor // TemperatureSensor
 // =================================================================== // ===================================================================
Line 2688 
Line 2124 
        "can be defined by setting the SensorType property, inherited "        "can be defined by setting the SensorType property, inherited "
        "from Sensor, to 2 (\"Temperature\"). Other properties of this "        "from Sensor, to 2 (\"Temperature\"). Other properties of this "
        "class are hard-coded to constant values to correspond to "        "class are hard-coded to constant values to correspond to "
        "definitions in the Sensor hierarchy.")       "definitions in the Sensor hierarchy.") ]
    ]  class CIM_TemperatureSensor : CIM_NumericSensor   {
 class CIM_TemperatureSensor : CIM_NumericSensor  
 {  
       [Override("SensorType") ]       [Override("SensorType") ]
    uint16 SensorType = 2;    uint16 SensorType = 2;
       [Override("BaseUnits") ]       [Override("BaseUnits") ]
Line 2700 
Line 2134 
    sint32 UnitModifier = -1;    sint32 UnitModifier = -1;
       [Override("RateUnits") ]       [Override("RateUnits") ]
    uint16 RateUnits = 0;    uint16 RateUnits = 0;
       [Override ("CurrentReading"),  
 // Override is used to define the MappingString qualifier // Override is used to define the MappingString qualifier
        MappingStrings {"MIF.DMTF|Temperature Probe|002.5"}        [Override ("CurrentReading"),
       ]         MappingStrings {"MIF.DMTF|Temperature Probe|002.5"} ]
    sint32 CurrentReading;    sint32 CurrentReading;
       [Override ("NominalReading"),       [Override ("NominalReading"),
        MappingStrings {"MIF.DMTF|Temperature Probe|002.6"}         MappingStrings {"MIF.DMTF|Temperature Probe|002.6"} ]
       ]  
    sint32 NominalReading;    sint32 NominalReading;
       [Override ("NormalMax"),       [Override ("NormalMax"),
        MappingStrings {"MIF.DMTF|Temperature Probe|002.7"}         MappingStrings {"MIF.DMTF|Temperature Probe|002.7"} ]
       ]  
    sint32 NormalMax;    sint32 NormalMax;
       [Override ("NormalMin"),       [Override ("NormalMin"),
        MappingStrings {"MIF.DMTF|Temperature Probe|002.8"}         MappingStrings {"MIF.DMTF|Temperature Probe|002.8"} ]
       ]  
    sint32 NormalMin;    sint32 NormalMin;
       [Override ("MaxReadable"),       [Override ("MaxReadable"),
        MappingStrings {"MIF.DMTF|Temperature Probe|002.9"}         MappingStrings {"MIF.DMTF|Temperature Probe|002.9"} ]
       ]  
    sint32 MaxReadable;    sint32 MaxReadable;
       [Override ("MinReadable"),       [Override ("MinReadable"),
        MappingStrings {"MIF.DMTF|Temperature Probe|002.10"}         MappingStrings {"MIF.DMTF|Temperature Probe|002.10"} ]
       ]  
    sint32 MinReadable;    sint32 MinReadable;
       [Override ("Resolution"),       [Override ("Resolution"),
        Units ("Hundredths of Degrees C"),        Units ("Hundredths of Degrees C"),
        MappingStrings {"MIF.DMTF|Temperature Probe|002.17"}         MappingStrings {"MIF.DMTF|Temperature Probe|002.17"} ]
       ]  
    uint32 Resolution;    uint32 Resolution;
       [Override ("Tolerance"),       [Override ("Tolerance"),
        MappingStrings {"MIF.DMTF|Temperature Probe|002.18"}         MappingStrings {"MIF.DMTF|Temperature Probe|002.18"} ]
       ]  
    sint32 Tolerance;    sint32 Tolerance;
       [Override ("Accuracy"),       [Override ("Accuracy"),
        MappingStrings {"MIF.DMTF|Temperature Probe|002.19"}         MappingStrings {"MIF.DMTF|Temperature Probe|002.19"} ]
       ]  
    sint32 Accuracy;    sint32 Accuracy;
       [Override ("LowerThresholdNonCritical"),       [Override ("LowerThresholdNonCritical"),
        MappingStrings {"MIF.DMTF|Temperature Probe|002.11"}         MappingStrings {"MIF.DMTF|Temperature Probe|002.11"} ]
       ]  
    sint32 LowerThresholdNonCritical;    sint32 LowerThresholdNonCritical;
       [Override ("UpperThresholdNonCritical"),       [Override ("UpperThresholdNonCritical"),
        MappingStrings {"MIF.DMTF|Temperature Probe|002.12"}         MappingStrings {"MIF.DMTF|Temperature Probe|002.12"} ]
       ]  
    sint32 UpperThresholdNonCritical;    sint32 UpperThresholdNonCritical;
       [Override ("LowerThresholdCritical"),       [Override ("LowerThresholdCritical"),
        MappingStrings {"MIF.DMTF|Temperature Probe|002.13"}         MappingStrings {"MIF.DMTF|Temperature Probe|002.13"} ]
       ]  
    sint32 LowerThresholdCritical;    sint32 LowerThresholdCritical;
       [Override ("UpperThresholdCritical"),       [Override ("UpperThresholdCritical"),
        MappingStrings {"MIF.DMTF|Temperature Probe|002.14"}         MappingStrings {"MIF.DMTF|Temperature Probe|002.14"} ]
       ]  
    sint32 UpperThresholdCritical;    sint32 UpperThresholdCritical;
       [Override ("LowerThresholdFatal"),       [Override ("LowerThresholdFatal"),
        MappingStrings {"MIF.DMTF|Temperature Probe|002.15"}         MappingStrings {"MIF.DMTF|Temperature Probe|002.15"} ]
       ]  
    sint32 LowerThresholdFatal;    sint32 LowerThresholdFatal;
       [Override ("UpperThresholdFatal"),       [Override ("UpperThresholdFatal"),
        MappingStrings {"MIF.DMTF|Temperature Probe|002.16"}         MappingStrings {"MIF.DMTF|Temperature Probe|002.16"} ]
       ]  
    sint32 UpperThresholdFatal;    sint32 UpperThresholdFatal;
 }; };
  
   
 // =================================================================== // ===================================================================
 // CurrentSensor // CurrentSensor
 // =================================================================== // ===================================================================
Line 2774 
Line 2194 
        "be defined by setting the SensorType property, inherited from "        "be defined by setting the SensorType property, inherited from "
        "Sensor, to 4 (\"Current\"). Other properties of this class are "        "Sensor, to 4 (\"Current\"). Other properties of this class are "
        "hard-coded to constant values to correspond to definitions in "        "hard-coded to constant values to correspond to definitions in "
        "the Sensor hierarchy.")       "the Sensor hierarchy.") ]
    ]  class CIM_CurrentSensor : CIM_NumericSensor   {
 class CIM_CurrentSensor : CIM_NumericSensor  
 {  
       [Override("SensorType") ]       [Override("SensorType") ]
    uint16 SensorType = 4;    uint16 SensorType = 4;
       [Override("BaseUnits") ]       [Override("BaseUnits") ]
Line 2786 
Line 2204 
    sint32 UnitModifier = -3;    sint32 UnitModifier = -3;
       [Override("RateUnits") ]       [Override("RateUnits") ]
    uint16 RateUnits = 0;    uint16 RateUnits = 0;
       [Override ("CurrentReading"),  
 // Override is used to define the MappingString qualifier // Override is used to define the MappingString qualifier
        MappingStrings {"MIF.DMTF|Electrical Current Probe|001.5"}        [Override ("CurrentReading"),
       ]         MappingStrings {"MIF.DMTF|Electrical Current Probe|001.5"} ]
    sint32 CurrentReading;    sint32 CurrentReading;
       [Override ("NominalReading"),       [Override ("NominalReading"),
        MappingStrings {"MIF.DMTF|Electrical Current Probe|001.6"}         MappingStrings {"MIF.DMTF|Electrical Current Probe|001.6"} ]
       ]  
    sint32 NominalReading;    sint32 NominalReading;
       [Override ("NormalMax"),       [Override ("NormalMax"),
        MappingStrings {"MIF.DMTF|Electrical Current Probe|001.7"}         MappingStrings {"MIF.DMTF|Electrical Current Probe|001.7"} ]
       ]  
    sint32 NormalMax;    sint32 NormalMax;
       [Override ("NormalMin"),       [Override ("NormalMin"),
        MappingStrings {"MIF.DMTF|Electrical Current Probe|001.8"}         MappingStrings {"MIF.DMTF|Electrical Current Probe|001.8"} ]
       ]  
    sint32 NormalMin;    sint32 NormalMin;
       [Override ("MaxReadable"),       [Override ("MaxReadable"),
        MappingStrings {"MIF.DMTF|Electrical Current Probe|001.9"}         MappingStrings {"MIF.DMTF|Electrical Current Probe|001.9"} ]
       ]  
    sint32 MaxReadable;    sint32 MaxReadable;
       [Override ("MinReadable"),       [Override ("MinReadable"),
        MappingStrings {"MIF.DMTF|Electrical Current Probe|001.10"}         MappingStrings {"MIF.DMTF|Electrical Current Probe|001.10"} ]
       ]  
    sint32 MinReadable;    sint32 MinReadable;
       [Override ("Resolution"),       [Override ("Resolution"),
        Units ("Tenths of MilliAmps"),        Units ("Tenths of MilliAmps"),
        MappingStrings {"MIF.DMTF|Electrical Current Probe|001.17"}         MappingStrings {"MIF.DMTF|Electrical Current Probe|001.17"} ]
       ]  
    uint32 Resolution;    uint32 Resolution;
       [Override ("Tolerance"),       [Override ("Tolerance"),
        MappingStrings {"MIF.DMTF|Electrical Current Probe|001.18"}         MappingStrings {"MIF.DMTF|Electrical Current Probe|001.18"} ]
       ]  
    sint32 Tolerance;    sint32 Tolerance;
       [Override ("Accuracy"),       [Override ("Accuracy"),
        MappingStrings {"MIF.DMTF|Electrical Current Probe|001.19"}         MappingStrings {"MIF.DMTF|Electrical Current Probe|001.19"} ]
       ]  
    sint32 Accuracy;    sint32 Accuracy;
       [Override ("LowerThresholdNonCritical"),       [Override ("LowerThresholdNonCritical"),
        MappingStrings {"MIF.DMTF|Electrical Current Probe|001.11"}         MappingStrings {"MIF.DMTF|Electrical Current Probe|001.11"} ]
       ]  
    sint32 LowerThresholdNonCritical;    sint32 LowerThresholdNonCritical;
       [Override ("UpperThresholdNonCritical"),       [Override ("UpperThresholdNonCritical"),
        MappingStrings {"MIF.DMTF|Electrical Current Probe|001.12"}         MappingStrings {"MIF.DMTF|Electrical Current Probe|001.12"} ]
       ]  
    sint32 UpperThresholdNonCritical;    sint32 UpperThresholdNonCritical;
       [Override ("LowerThresholdCritical"),       [Override ("LowerThresholdCritical"),
        MappingStrings {"MIF.DMTF|Electrical Current Probe|001.13"}         MappingStrings {"MIF.DMTF|Electrical Current Probe|001.13"} ]
       ]  
    sint32 LowerThresholdCritical;    sint32 LowerThresholdCritical;
       [Override ("UpperThresholdCritical"),       [Override ("UpperThresholdCritical"),
        MappingStrings {"MIF.DMTF|Electrical Current Probe|001.14"}         MappingStrings {"MIF.DMTF|Electrical Current Probe|001.14"} ]
       ]  
    sint32 UpperThresholdCritical;    sint32 UpperThresholdCritical;
       [Override ("LowerThresholdFatal"),       [Override ("LowerThresholdFatal"),
        MappingStrings {"MIF.DMTF|Electrical Current Probe|001.15"}         MappingStrings {"MIF.DMTF|Electrical Current Probe|001.15"} ]
       ]  
    sint32 LowerThresholdFatal;    sint32 LowerThresholdFatal;
       [Override ("UpperThresholdFatal"),       [Override ("UpperThresholdFatal"),
        MappingStrings {"MIF.DMTF|Electrical Current Probe|001.16"}         MappingStrings {"MIF.DMTF|Electrical Current Probe|001.16"} ]
       ]  
    sint32 UpperThresholdFatal;    sint32 UpperThresholdFatal;
 }; };
  
   
 // =================================================================== // ===================================================================
 // VoltageSensor // VoltageSensor
 // =================================================================== // ===================================================================
Line 2860 
Line 2264 
        "be defined by setting the SensorType property, inherited from "        "be defined by setting the SensorType property, inherited from "
        "Sensor, to 3 (\"Voltage\"). Other properties of this class are "        "Sensor, to 3 (\"Voltage\"). Other properties of this class are "
        "hard-coded to constant values to correspond to definitions in "        "hard-coded to constant values to correspond to definitions in "
        "the Sensor hierarchy.")       "the Sensor hierarchy.") ]
    ]  class CIM_VoltageSensor : CIM_NumericSensor   {
 class CIM_VoltageSensor : CIM_NumericSensor  
 {  
       [Override("SensorType") ]       [Override("SensorType") ]
    uint16 SensorType = 3;    uint16 SensorType = 3;
       [Override("BaseUnits") ]       [Override("BaseUnits") ]
Line 2872 
Line 2274 
    sint32 UnitModifier = -3;    sint32 UnitModifier = -3;
       [Override("RateUnits") ]       [Override("RateUnits") ]
    uint16 RateUnits = 0;    uint16 RateUnits = 0;
       [Override ("CurrentReading"),  
 // Override is used to define the MappingString qualifier // Override is used to define the MappingString qualifier
        MappingStrings {"MIF.DMTF|Voltage Probe|001.5"}        [Override ("CurrentReading"),
       ]         MappingStrings {"MIF.DMTF|Voltage Probe|001.5"} ]
    sint32 CurrentReading;    sint32 CurrentReading;
       [Override ("NominalReading"),       [Override ("NominalReading"),
        MappingStrings {"MIF.DMTF|Voltage Probe|001.6"}         MappingStrings {"MIF.DMTF|Voltage Probe|001.6"} ]
       ]  
    sint32 NominalReading;    sint32 NominalReading;
       [Override ("NormalMax"),       [Override ("NormalMax"),
        MappingStrings {"MIF.DMTF|Voltage Probe|001.7"}         MappingStrings {"MIF.DMTF|Voltage Probe|001.7"} ]
       ]  
    sint32 NormalMax;    sint32 NormalMax;
       [Override ("NormalMin"),       [Override ("NormalMin"),
        MappingStrings {"MIF.DMTF|Voltage Probe|001.8"}         MappingStrings {"MIF.DMTF|Voltage Probe|001.8"} ]
       ]  
    sint32 NormalMin;    sint32 NormalMin;
       [Override ("MaxReadable"),       [Override ("MaxReadable"),
        MappingStrings {"MIF.DMTF|Voltage Probe|001.9"}         MappingStrings {"MIF.DMTF|Voltage Probe|001.9"} ]
       ]  
    sint32 MaxReadable;    sint32 MaxReadable;
       [Override ("MinReadable"),       [Override ("MinReadable"),
        MappingStrings {"MIF.DMTF|Voltage Probe|001.10"}         MappingStrings {"MIF.DMTF|Voltage Probe|001.10"} ]
       ]  
    sint32 MinReadable;    sint32 MinReadable;
       [Override ("Resolution"),       [Override ("Resolution"),
        Units ("Tenths of MilliVolts"),        Units ("Tenths of MilliVolts"),
        MappingStrings {"MIF.DMTF|Voltage Probe|001.17"}         MappingStrings {"MIF.DMTF|Voltage Probe|001.17"} ]
       ]  
    uint32 Resolution;    uint32 Resolution;
       [Override ("Tolerance"),       [Override ("Tolerance"),
        MappingStrings {"MIF.DMTF|Voltage Probe|001.18"}         MappingStrings {"MIF.DMTF|Voltage Probe|001.18"} ]
       ]  
    sint32 Tolerance;    sint32 Tolerance;
       [Override ("Accuracy"),       [Override ("Accuracy"),
        MappingStrings {"MIF.DMTF|Voltage Probe|001.19"}         MappingStrings {"MIF.DMTF|Voltage Probe|001.19"} ]
       ]  
    sint32 Accuracy;    sint32 Accuracy;
       [Override ("LowerThresholdNonCritical"),       [Override ("LowerThresholdNonCritical"),
        MappingStrings {"MIF.DMTF|Voltage Probe|001.11"}         MappingStrings {"MIF.DMTF|Voltage Probe|001.11"} ]
       ]  
    sint32 LowerThresholdNonCritical;    sint32 LowerThresholdNonCritical;
       [Override ("UpperThresholdNonCritical"),       [Override ("UpperThresholdNonCritical"),
        MappingStrings {"MIF.DMTF|Voltage Probe|001.12"}         MappingStrings {"MIF.DMTF|Voltage Probe|001.12"} ]
       ]  
    sint32 UpperThresholdNonCritical;    sint32 UpperThresholdNonCritical;
       [Override ("LowerThresholdCritical"),       [Override ("LowerThresholdCritical"),
        MappingStrings {"MIF.DMTF|Voltage Probe|001.13"}         MappingStrings {"MIF.DMTF|Voltage Probe|001.13"} ]
       ]  
    sint32 LowerThresholdCritical;    sint32 LowerThresholdCritical;
       [Override ("UpperThresholdCritical"),       [Override ("UpperThresholdCritical"),
        MappingStrings {"MIF.DMTF|Voltage Probe|001.14"}         MappingStrings {"MIF.DMTF|Voltage Probe|001.14"} ]
       ]  
    sint32 UpperThresholdCritical;    sint32 UpperThresholdCritical;
       [Override ("LowerThresholdFatal"),       [Override ("LowerThresholdFatal"),
        MappingStrings {"MIF.DMTF|Voltage Probe|001.15"}         MappingStrings {"MIF.DMTF|Voltage Probe|001.15"} ]
       ]  
    sint32 LowerThresholdFatal;    sint32 LowerThresholdFatal;
       [Override ("UpperThresholdFatal"),       [Override ("UpperThresholdFatal"),
        MappingStrings {"MIF.DMTF|Voltage Probe|001.16"}         MappingStrings {"MIF.DMTF|Voltage Probe|001.16"} ]
       ]  
    sint32 UpperThresholdFatal;    sint32 UpperThresholdFatal;
 }; };
  
   
 // =================================================================== // ===================================================================
 // Tachometer // Tachometer
 // =================================================================== // ===================================================================
Line 2946 
Line 2334 
        "be defined by setting the SensorType property. inherited from "        "be defined by setting the SensorType property. inherited from "
        "Sensor, to 5 (\"Tachometer\"). Other properties of this class "        "Sensor, to 5 (\"Tachometer\"). Other properties of this class "
        "are hard-coded to constant values to correspond to definitions "        "are hard-coded to constant values to correspond to definitions "
        "in the Sensor hierarchy.")       "in the Sensor hierarchy.") ]
    ]  class CIM_Tachometer : CIM_NumericSensor   {
 class CIM_Tachometer : CIM_NumericSensor  
 {  
       [Override("SensorType") ]       [Override("SensorType") ]
    uint16 SensorType = 5;    uint16 SensorType = 5;
       [Override("BaseUnits") ]       [Override("BaseUnits") ]
Line 2959 
Line 2345 
       [Override("RateUnits") ]       [Override("RateUnits") ]
    uint16 RateUnits = 4;    uint16 RateUnits = 4;
       [Override ("Resolution"),       [Override ("Resolution"),
        Units ("Tenths of Revolutions per Minute")         Units ("Tenths of Revolutions per Minute") ]
       ]  
    uint32 Resolution;    uint32 Resolution;
 }; };
  
   
 // =================================================================== // ===================================================================
 // WatchDog  // AssociatedSupplyVoltageSensor
 // =================================================================== // ===================================================================
      [Association, Description (
        "A PowerSupply may have an associated VoltageSensor, monitoring "
        "its input voltage. This is described by this association.") ]
   class CIM_AssociatedSupplyVoltageSensor : CIM_AssociatedSensor {
         [Override ("Antecedent"),
          Description ("The VoltageSensor.") ]
      CIM_VoltageSensor REF Antecedent;
         [Override ("Dependent"),
          Description (
           "The PowerSupply associated with the VoltageSensor.") ]
      CIM_PowerSupply REF Dependent;
    [Description (    [Description (
        "CIM_Watchdog is a timer implemented in system hardware. It "          "Indicates the PowerSupply's input voltage range measured "
        "allows the hardware to monitor the state of the Operating"          "by the associated sensor. Range 1, 2 or both can be specified "
        "System, BIOS or a software component installed on the "          "using the values 2, 3 or 4, respectively."),
        "System. If the monitored component fails to re-arm the timer "         Values {"Unknown", "Other", "Range 1", "Range 2",
        "before its expiration, the hardware assumes that the System is "                 "Both Range 1 and 2"} ]
        "in a critical state, and could reset the ComputerSystem. This "     uint16 MonitoringRange;
        "feature can also be used as an application watchdog timer for "  };
        "a mission-critical application. In this case, the application "  
        "would assume responsibility for re-arming the timer before "  
        "expiration.")  // ===================================================================
    ]  // AssociatedSupplyCurrentSensor
 class CIM_Watchdog : CIM_LogicalDevice  // ===================================================================
 {     [Association, Description (
        "A PowerSupply may have an associated CurrentSensor, monitoring "
        "its input frequency. This is described by this association.") ]
   class CIM_AssociatedSupplyCurrentSensor : CIM_AssociatedSensor {
         [Override ("Antecedent"),
          Description ("The CurrentSensor.") ]
      CIM_CurrentSensor REF Antecedent;
         [Override ("Dependent"),
          Description (
           "The PowerSupply associated with the CurrentSensor.") ]
      CIM_PowerSupply REF Dependent;
       [Description (       [Description (
         "The entity that is currently being monitored by the WatchDog. "          "Indicates the PowerSupply's input frequency range measured "
         "This property is used to identify the module that is responsible "          "by the associated sensor. Range 1, 2 or both can be specified "
         "for re-arming the watchdog at periodic intervals."),          "using the values 2, 3 or 4, respectively."),
        Values {"Unknown", "Other", "Operating System",         Values {"Unknown", "Other", "Range 1", "Range 2",
              "Operating System Boot Process",                 "Both Range 1 and 2"} ]
              "Operating System Shutdown Process",     uint16 MonitoringRange;
              "Firmware Boot Process", "BIOS Boot Process", "Application",  };
                          "Service Processor"}  
       ]  
    uint16 MonitoredEntity;  // ==================================================================
   // FCAdapterEventCounters
   // ==================================================================
       [Description (       [Description (
         "A string describing more textual information about the "         "Error and event counters specific to a Fibre Channel Adapter.") ]
         "monitored entity "),  class CIM_FCAdapterEventCounters : CIM_DeviceStatisticalInformation {
        MaxLen (256)        [Description ("The number of Abort sequence frames received."),
       ]         Counter ]
    string MonitoredEntityDescription;     uint64 ABTSFramesReceived;
         [Description ("The number of Abort sequence frames sent."),
          Counter ]
      uint64 ABTSFramesSent;
         [Description ("The number of frames busied by the Fabric."),
          Counter ]
      uint64 FBSYsReceived;
         [Description (
           "The number of frames busied by the receiving Node."),
          Counter ]
      uint64 PBSYsReceived;
         [Description (
           "The number of frames busied by the Adapter itself."),
          Counter ]
      uint64 PBSYsSent;
         [Description ("The number of frames rejected by the Fabric."),
          Counter ]
      uint64 FRJTsReceived;
         [Description (
           "The number of frames rejected by the receiving Node."),
          Counter ]
      uint64 PRJTsReceived;
         [Description (
           "The number of frames rejected by the Adapter itself."),
          Counter ]
      uint64 PRJTsSent;
         [Description (
           "The number of PRLI frames sent where the response was "
           "LS_RJT."),
          Counter ]
      uint64 PRLIsRejected;
         [Description (
           "The number of PRLO frames sent where the response was "
           "LS_RJT."),
          Counter ]
      uint64 PRLOsRejected;
         [Description (
           "The number of Abort sequence frames sent where the response "
           "was BA_RJT."),
          Counter ]
      uint64 ABTSFramesRejected;
       [Description (
         "Method to reset the Adapter event counters. The method "
         "takes one parameter as input - an integer indicating which "
         "counter to reset. For this input parameter, 0 indicates all, "
         "1 through 11 indicate a reset of the individual counters. "
         "The method returns 0 if successful, 1 if not supported, and "
         "any other value if an error occurred. A method is specified "
         "so that the Device's instrumentation, which tabulates "
         "the errors and warnings, can also reset its internal "
         "processing and counters.\n"
           "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.") ]
      uint32 ResetCounter (
          [IN, Values {"All", "ABTSFramesReceived", "ABTSFramesSent",
              "FBSYReceived", "PBSYReceived", "PBSYSent", "FRJTReceived",
              "PRJTReceived", "PRJTSent", "PRLIRejected", "PRLORejected",
              "ABTSFramesRejected"}]
          uint16 SelectedCounter);
   };
   
   
   // ==================================================================
   // FibrePortEventCounters
   // ==================================================================
      [Description (
          "Error and event counters specific to a Fibre Channel Port "
          "(connection point).") ]
   class CIM_FibrePortEventCounters : CIM_DeviceStatisticalInformation {
         [Description ("The number of login frames received."),
          Counter ]
      uint64 PLOGIsReceived;
         [Description ("The number of login frames sent."),
          Counter ]
      uint64 PLOGIsSent;
         [Description (
           "Number of frames received containing 'EOF Abort'."),
          Counter ]
      uint64 EOFAbortsReceived;
         [Description (
           "Number of frames transmitted containing 'EOF Abort'."),
          Counter ]
      uint64 EOFAbortsTransmitted;
         [Description (
           "The number of logouts received from various targets."),
          Counter ]
      uint64 PLOGOsReceived;
         [Description ("The number of logout frames sent."),
          Counter ]
      uint64 PLOGOsSent;
         [Description (
           "The number of PLOGI frames sent where the response was "
           "LS_RJT."),
          Counter ]
      uint64 PLOGIsRejected;
         [Description (
           "The number of PLOGO frames sent where the response was "
           "LS_RJT."),
          Counter ]
      uint64 PLOGOsRejected;
       [Description (
         "Method to reset the Port event counters. The method "
         "takes one parameter as input - an integer indicating which "
         "counter to reset. For this input parameter, 0 indicates all, "
         "1 through 8 indicate a reset of the individual counters. "
         "The method returns 0 if successful, 1 if not supported, and "
         "any other value if an error occurred. A method is specified "
         "so that the Device's instrumentation, which tabulates "
         "the errors and warnings, can also reset its internal "
         "processing and counters.\n"
           "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.") ]
      uint32 ResetCounter (
          [IN, Values {"All", "PLOGIsReceived", "PLOGIsSent",
               "EOFAbortsReceived", "EOFAbortsTransmitted", "PLOGOsReceived",
               "PLOGOsSent", "PLOGIsRejected", "PLOGOsRejected"}]
           uint16 SelectedCounter);
   };
   
   
   // ===================================================================
   // ComputerSystemProcessor
   // ===================================================================
      [Association, Aggregation, Description (
        "Association indicating the processor(s) of a Unitary"
        "ComputerSystem. At least one processor is required. Note "
        "that this relationship inherits from the SystemDevice "
        "association, and therefore, the System Processor is weak to "
        "the aggregating UnitaryComputerSystem.") ]
   class CIM_ComputerSystemProcessor : CIM_SystemDevice {
         [Override ("GroupComponent"), Aggregate,
          Description ("The UnitaryComputerSystem.") ]
      CIM_UnitaryComputerSystem REF GroupComponent;
         [Override ("PartComponent"), Weak,
          Description (
           "The Processor which is part of the UnitaryComputerSystem.") ]
      CIM_Processor REF PartComponent;
   };
   
   
   // ===================================================================
   // LabelReaderStatInfo
   // ===================================================================
      [Description (
        "Statistics for a LabelReader, related to read successes, "
        "failures and retries.") ]
   class CIM_LabelReaderStatInfo : CIM_DeviceStatisticalInformation {
         [Description (
           "The number of successful physical label scans."),
          Counter ]
      uint64 ScanSuccesses;
         [Description ("The number of failed physical label scans."),
          Counter ]
      uint64 ScanFailures;
         [Description ("The number of retried physical label scans."),
          Counter ]
      uint64 ScanRetries;
         [Description (
           "Method to reset the statistical counters. The method "
           "takes one parameter as input - an integer indicating which "
           "counter to reset. For this input parameter, 0 indicates all, "
           "1 resets the \"Scan Successes\" counter, 2 resets the "
           "\"Scan Failures\" counter, and 3 resets the \"Scan Retries\" "
           "counter. The method returns 0 if successful, 1 if not supported, "
           "and any other value if an error occurred. A method is specified "
           "so that the Device's instrumentation can also reset its "
           "internal processing and counters.\n"
           "In a subclass, the set of possible return codes should be "
           "specified in a ValueMap qualifier on the method. The strings "
           "to which the ValueMap contents are 'translated' can be "
           "specified as a Values array qualifier.") ]
      uint32 ResetCounter (
         [IN, Values {"All", "Scan Successes", "Scan Failures",
              "Scan Retries"}]
          uint16 SelectedCounter);
   };
   
   
   // ===================================================================
   // MediaAccessStatInfo
   // ===================================================================
      [Description (
        "Statistics related to reading and writing at a specific "
        "MediaAccessDevice, or for a specific StorageExtent. Although "
        "the same class is used to represent this data, at the instance "
        "level the object holds information for the MediaAccessDevice "
        "(independent of the StorageExtent), OR for the Extent "
        "(independent of its AccessDevice).") ]
   class CIM_MediaAccessStatInfo : CIM_DeviceStatisticalInformation {
         [Description ("The number of attempted read operations."),
          Counter ]
      uint64 ReadOperations;
         [Description ("The number of unrecoverable read operations."),
          Counter ]
      uint64 UnrecoverableReadOperations;
         [Description ("The number of attempted write operations."),
          Counter ]
      uint64 WriteOperations;
         [Description ("The number of unrecoverable write operations."),
          Counter ]
      uint64 UnrecoverableWriteOperations;
         [Description ("The number of recovered read operations."),
          Counter ]
      uint64 RecoveredReadOperations;
         [Description ("The number of recovered write operations."),
          Counter ]
      uint64 RecoveredWriteOperations;
         [Description ("The number of recovered seek operations."),
          Counter ]
      uint64 RecoveredSeekOperations;
         [Description ("The number of unrecoverable seek operations."),
          Counter ]
      uint64 UnrecoverableSeekOperations;
         [Description (
           "Method to reset the statistical counters. The method takes one "
           "parameter as input - an integer indicating which counter to "
           "reset. For this input parameter, 0 indicates all, 1-2 and 5 "
           "reset the 'read operation'-related counters, 3-4 and 6 reset "
           "the 'write operation'-related counters, and 7-8 reset the "
           "seek-related counters. The method returns 0 if "
           "successful, 1 if not supported, and any other value if an "
           "error occurred. A method is specified so that the Device's "
           "instrumentation can also reset its internal processing and "
           "counters.\n"
           "In a subclass, the set of possible return codes should be "
           "specified in a ValueMap qualifier on the method. The strings "
           "to which the ValueMap contents are 'translated' can be "
           "specified as a Values array qualifier.") ]
      uint32 ResetCounter (
         [IN, Values {"All", "Read Operations",
              "Unrecoverable Read Operations", "Write Operations",
              "Unrecoverable Write Operations", "Recovered Read Operations",
              "Recovered Write Operations", "Recovered Seeks",
              "Unrecoverable Seeks"} ]
          uint16 SelectedCounter);
   };
   
   
   // ===================================================================
   // PickerStatInfo
   // ===================================================================
      [Description (
        "Statistics for a PickerElement, related to pick/put successes, "
        "retries and failures.") ]
   class CIM_PickerStatInfo : CIM_DeviceStatisticalInformation {
         [Description ("The number of successful picks."),
          Counter ]
      uint64 PickSuccesses;
         [Description ("The number of failed picks."),
          Counter ]
      uint64 PickFailures;
         [Description ("The number of retried picks."),
          Counter ]
      uint64 PickRetries;
         [Description ("The number of successful puts."),
          Counter ]
      uint64 PutSuccesses;
         [Description ("The number of failed puts."),
          Counter ]
      uint64 PutFailures;
         [Description ("The number of retried puts."),
          Counter ]
      uint64 PutRetries;
         [Description (
           "Method to reset the statistical counters. The method takes one "
           "parameter as input - an integer indicating which counter to "
           "reset. For this input parameter, 0 indicates all, 1-3 reset "
           "the 'pick'-related counters, and 4-6 reset the 'put'-related "
           "counters. The method returns 0 if successful, 1 if not "
           "supported, and any other value if an error occurred. A "
           "method is specified so that the Device's instrumentation can "
           "also reset its internal pocessing and counters.\n"
           "In a subclass, the set of possible return codes should be "
           "specified in a ValueMap qualifier on the method. The strings "
           "to which the ValueMap contents are 'translated' can be "
           "specified as a Values array qualifier.") ]
      uint32 ResetCounter (
         [IN, Values {"All", "Pick Successes", "Pick Failures", "Pick Retries",
              "Put Successes", "Put Failures", "Put Retries"} ]
          uint16 SelectedCounter);
   };
   
   
   // ===================================================================
   //
   //    Controllers, Adapters, and Ports
   //
   // ===================================================================
   
   
   // ===================================================================
   // LogicalPort
   // ===================================================================
      [Description (
        "The abstraction of a port or connection point of a Device. "
        "This object should be instantiated when the Port has "
        "independent management characteristics from the Device that "
        "includes it. Examples are a Fibre Channel Port and a USB Port. "
        "This class would not be instantiated for an Ethernet Port which "
        "is not managed independently of the EthernetAdapter.") ]
   class CIM_LogicalPort : CIM_LogicalDevice {
         [Description ("The speed of the Port in Bits per Second."),
          Units ("Bits per Second") ]
      uint64 Speed;
         [Description (
           "The max speed of the Port in Bits per Second."),
          Units ("Bits per Second") ]
      uint64 MaxSpeed;
   };
   
   
   // ===================================================================
   // PortOnDevice
   // ===================================================================
      [Association, Description (
        "PortOnDevice associates a Port or connection point with its "
        "Device.") ]
   class CIM_PortOnDevice : CIM_Dependency {
         [Override ("Antecedent"),
          Description ("The Device that includes the Port.") ]
      CIM_LogicalDevice REF Antecedent;
         [Override ("Dependent"),
          Description ("The Port on the Device.") ]
      CIM_LogicalPort REF Dependent;
   };
   
   
   // ===================================================================
   // NetworkAdapter
   // ===================================================================
      [Abstract, Description (
        "NetworkAdapter is an Abstract class defining general "
        "networking hardware concepts (for example, PermanentAddress or "
        "Speed of operation). NetworkAdapters are Devices with the "
        "ability to support multiple, higher level protocols and provide "
        "the implementation behind the Network Model's ProtocolEndpoint "
        "class. (This information is conveyed using the DeviceSAP"
        "Implementation association, defined in the Core Model.) "
        "NetworkAdapters and their Endpoints represent the potential for "
        "connectivity among peers.\n"
        "The 'potential for connectivity' is very different than the "
        "master-slave/controller-controlled by relationships of CIM_"
        "Controller. Sometimes, however, a single Device is both a kind "
        "of NetworkAdapter and a Controller - for example, when a Fibre"
        "ChannelAdapater is operating as a ComputerSystem's SCSIController. "
        "In this case, there are aspects of the Device that are network "
        "oriented and others that are Controller oriented - and, both the "
        "Controller and Adapter classes should be instantiated. A Device"
        "Identity relationship would also be created to tie together these "
        "differing aspects/abstractions of the Device.") ]
   class CIM_NetworkAdapter : CIM_LogicalDevice {
         [MaxLen (64), Description (
           "PermanentAddress defines the network address hardcoded into "
           "an adapter.  This 'hardcoded' address may be changed via "
           "firmware upgrade or software configuration. If so, this field "
           "should be updated when the change is made.  PermanentAddress "
           "should be left blank if no 'hardcoded' address exists for the "
           "NetworkAdapter."),
          MappingStrings {"MIF.DMTF|Network Adapter 802 Port|001.2"} ]
       string PermanentAddress;
         [MaxLen (64), Description (
           "An array of strings indicating the network addresses for an "
           "adapter."),
          ArrayType ("Indexed"),
          MappingStrings {"MIF.DMTF|Network Adapter 802 Port|001.3"} ]
       string NetworkAddresses[];
         [Description (
           "An estimate of the current bandwidth in Bits per Second. "
           "For Adapters which vary in bandwidth or for those where "
           "no accurate estimation can be made, this property should "
           "contain the nominal bandwidth."),
          Units ("Bits per Second"),
          MappingStrings {"MIB.IETF|RFC1213-MIB.ifSpeed",
           "MIF.DMTF|Network Adapter 802 Port|001.5"} ]
       uint64 Speed;
         [Description (
           "The maximum speed, in Bits per Second, for the Network"
           "Adapter."),
          Units ("Bits per Second")  ]
       uint64 MaxSpeed;
         [Description (
           "Boolean indicating that the Adapter is operating in "
           "full duplex mode.") ]
      boolean FullDuplex;
         [Description (
           "A boolean indicating whether the NetworkAdapter is capable "
           "of automatically determining the speed or other communications "
           "characteristics of the attached network media.")  ]
       boolean AutoSense;
         [Description (
           "The total number of octets transmitted, including framing "
           "characters."),
          Mappingstrings {"MIB.IETF|RFC1213-MIB.ifOutOctets",
           "MIF.DMTF|Network Adapter 802 Port|001.7"},
          Counter ]
       uint64 OctetsTransmitted;
         [Description (
           "The total number of octets received, including framing "
           "characters."),
          Mappingstrings {"MIB.IETF|RFC1213-MIB.ifInOctets",
           "MIF.DMTF|Network Adapter 802 Port|001.9"},
          Counter ]
       uint64 OctetsReceived;
   };
   
   
   // ===================================================================
   // EthernetAdapter
   // ===================================================================
      [Description ("Capabilities and management of an EthernetAdapter.") ]
   class CIM_EthernetAdapter : CIM_NetworkAdapter {
         [Override ("NetworkAddresses"),
          Description (
           "Ethernet/802.3 MAC addresses formatted as twelve hexadecimal "
           "digits (e.g. \"010203040506\"), with each pair representing "
           "one of the six octets of the MAC address in \"canonical\" bit "
           "order.  (Thus, the Group address bit is found in the low "
           "order bit of the first character of the string.)"),
          ArrayType ("Indexed") ]
       string NetworkAddresses[];
         [Description (
           "The maximum size of the INFO (non-MAC) field that will be "
           "received or transmitted."),
          Mappingstrings {"MIB.IETF|BRIDGE-MIB.dot1dTpPortMaxInfo"} ]
       uint32 MaxDataSize;
         [Description (
           "Capabilities of the EthernetAdapter. For example, the "
           "Device may support AlertOnLan, WakeOnLan, Load Balancing "
           "and/or FailOver. If failover or load balancing "
           "capabilities are listed, a SpareGroup (failover) or "
           "ExtraCapacityGroup (load balancing) should also be defined "
           "to completely describe the capability."),
          ArrayType ("Indexed"),
          Values {"Unknown", "Other", "AlertOnLan", "WakeOnLan",
                  "FailOver", "LoadBalancing"},
          ModelCorrespondence {
           "CIM_EthernetAdapter.CapabilityDescriptions"} ]
      uint16 Capabilities[];
         [Description (
           "An array of free-form strings providing more detailed "
           "explanations for any of the EthernetAdapter features "
           "indicated in the Capabilities array. Note, each entry of "
           "this array is related to the entry in the Capabilities "
           "array that is located at the same index."),
          ArrayType ("Indexed"),
          ModelCorrespondence {"CIM_EthernetAdapter.Capabilities"} ]
      string CapabilityDescriptions[];
         [Description (
           "Specifies which capabilities are enabled from the list "
           "of all supported ones, defined in the Capabilities array."),
          Values {"Unknown", "Other", "AlertOnLan", "WakeOnLan",
                  "FailOver", "LoadBalancing"},
          ModelCorrespondence {"CIM_EthernetAdapter.Capabilities"} ]
      uint16 EnabledCapabilities[];
         [Description (
           "The number of times there was an invalid data symbol when "
           "a valid carrier was present. The count is incremented at "
           "most once per carrier event, even if multiple symbol "
           "errors occur during the carrier event."),
          MappingStrings {"MIB.IETF|EtherLike-MIB.dot3StatsSymbolErrors"},
          Counter ]
      uint32 SymbolErrors;
         [Description ("The total number of packets transmitted."),
          MappingStrings {"MIF.DMTF|Network Adapter 802 Port|001.6"},
          Counter ]
      uint64 TotalPacketsTransmitted;
         [Description ("The total number of packets received."),
          MappingStrings {"MIF.DMTF|Network Adapter 802 Port|001.8"},
          Counter ]
      uint64 TotalPacketsReceived;
         [Description (
           "A count of frames received on a particular interface "
           "that are not an integral number of octets in length and do "
           "not pass the FCS check. The count represented by an "
           "instance of this object is incremented when the alignment"
           "Error status is returned by the MAC layer to the LLC (or "
           "other MAC user). Received frames for which multiple error "
           "conditions obtain are, according to the conventions of IEEE "
           "802.3 Layer Management, counted exclusively according to "
           "the error status presented to the LLC."),
          Mappingstrings {
           "MIB.IETF|EtherLike-MIB.dot3StatsAlignmentErrors"},
          Counter ]
       uint32 AlignmentErrors;
         [Description (
           "A count of frames received on a particular interface "
           "that are an integral number of octets in length but do "
           "not pass the FCS check. The count represented by an "
           "instance of this object is incremented when the frame"
           "CheckError status is returned by the MAC layer to the "
           "LLC (or other MAC user). Received frames for which "
           "multiple error conditions obtain are, according to the "
           "conventions of IEEE 802.3 Layer Management, counted "
           "exclusively according to the error status presented to "
           "the LLC."),
          Mappingstrings {
           "MIB.IETF|EtherLike-MIB.dot3StatsFCSErrors"},
          Counter ]
       uint32 FCSErrors;
         [Description (
           "A count of successfully transmitted frames on a particular "
           "interface for which transmission is inhibited by exactly "
           "one collision. A frame that is counted by an instance of "
           "this object is not counted by the corresponding instance "
           "of the MultipleCollisionFrames property."),
          Mappingstrings {
           "MIB.IETF|EtherLike-MIB.dot3StatsSingleCollisionFrames"},
          Counter ]
       uint32 SingleCollisionFrames;
         [Description (
           "A count of successfully transmitted frames on a particular "
           "interface for which transmission is inhibited by more than "
           "one collision. A frame that is counted by an instance of "
           "this object is not counted by the corresponding instance "
           "of the SingleCollisionFrames property."),
          Mappingstrings {
           "MIB.IETF|EtherLike-MIB.dot3StatsMultipleCollisionFrames"},
          Counter ]
       uint32 MultipleCollisionFrames;
         [Description (
           "A count of times that the SQE TEST ERROR message is "
           "generated by the PLS sublayer for a particular interface. "
           "The SQE TEST ERROR message is defined in section "
           "7.2.2.2.4 of ANSI/IEEE 802.3-1985 and its generation is "
           "described in section 7.2.4.6 of the same document."),
          Mappingstrings {
           "MIB.IETF|EtherLike-MIB.dot3StatsSQETestErrors"},
          Counter ]
       uint32 SQETestErrors;
         [Description (
           "A count of frames for which the first transmission "
           "attempt on a particular interface is delayed because the "
           "medium is busy. The count represented by an instance of "
           "this object does not include frames involved in collisions."),
          Mappingstrings {
           "MIB.IETF|EtherLike-MIB.dot3StatsDeferredTransmissions"},
          Counter ]
       uint32 DeferredTransmissions;
         [Description (
           "The number of times that a collision is detected on a "
           "particular interface later than 512 bit-times into the "
           "transmission of a packet. Five hundred and twelve bit-"
           "times corresponds to 51.2 microseconds on a 10 Mbit/s "
           "system. A (late) collision included in a count "
           "represented by an instance of this object is also "
           "considered as a (generic) collision for purposes of "
           "other collision-related statistics."),
          Mappingstrings {
           "MIB.IETF|EtherLike-MIB.dot3StatsLateCollisions"},
          Counter ]
       uint32 LateCollisions;
         [Description (
           "A count of frames for which transmission on a particular "
           "interface fails due to excessive collisions."),
          Mappingstrings {
           "MIB.IETF|EtherLike-MIB.dot3StatsExcessiveCollisions"},
          Counter ]
       uint32 ExcessiveCollisions;
         [Description (
           "A count of frames for which transmission on a particular "
           "interface fails due to an internal MAC sublayer transmit "
           "error. A frame is only counted by an instance of this "
           "object if it is not counted by the corresponding instance "
           "of either the LateCollisions property, the Excessive"
           "Collisions property, or the CarrierSenseErrors property. "
           "The precise meaning of the count represented by an instance "
           "of this object is implementation-specific.  In particular, "
           "an instance of this object may represent a count of "
           "transmission errors on a particular interface that are "
           "not otherwise counted."),
          Mappingstrings {
           "MIB.IETF|EtherLike-MIB.dot3StatsInternalMacTransmitErrors"},
          Counter ]
       uint32 InternalMACTransmitErrors;
         [Description (
           "A count of frames for which reception on a particular "
           "interface fails due to an internal MAC sublayer receive "
           "error. A frame is only counted by an instance of this "
           "object if it is not counted by the corresponding instance "
           "of either the FrameTooLongs property, the AlignmentErrors "
           "property, or the FCSErrors property. The precise meaning "
           "of the count represented by an instance of this object is "
           "implementation-specific.  In particular, an instance of "
           "this object may represent a count of receive errors on a "
           "particular interface that are not otherwise counted."),
          Mappingstrings {
           "MIB.IETF|EtherLike-MIB.dot3StatsInternalMacReceiveErrors"},
          Counter ]
       uint32 InternalMACReceiveErrors;
         [Description (
           "The number of times that the carrier sense condition was "
           "lost or never asserted when attempting to transmit a frame "
           "on a particular interface. The count represented by an "
           "instance of this object is incremented at most once per "
           "transmission attempt, even if the carrier sense condition "
           "fluctuates during a transmission attempt."),
          Mappingstrings {
           "MIB.IETF|EtherLike-MIB.dot3StatsCarrierSenseErrors"},
          Counter ]
       uint32 CarrierSenseErrors;
         [Description (
           "A count of frames received on a particular interface that "
           "exceed the maximum permitted frame size. The count "
           "represented by an instance of this object is incremented "
           "when the FrameTooLong status is returned by the MAC layer "
           "to the LLC (or other MAC user). Received frames for which "
           "multiple error conditions obtain are, according to the "
           "conventions of IEEE 802.3 Layer Management, counted "
           "exclusively according to the error status presented to "
           "the LLC."),
          Mappingstrings {
          "MIB.IETF|EtherLike-MIB.dot3StatsFrameTooLongs"},
          Counter ]
       uint32 FrameTooLongs;
   };
   
   
   // ===================================================================
   // TokenRingAdapter
   // ===================================================================
      [Description ("Capabilities and management of a TokenRingAdapter.") ]
   class CIM_TokenRingAdapter : CIM_NetworkAdapter {
         [Override ("NetworkAddresses"), Description (
           "Token Ring/802.5 MAC addresses formatted as twelve "
           "hexadecimal digits (e.g. \"010203040506\"), with each pair "
           "representing one of the six octets of the MAC address in "
           "\"canonical\" bit order.  (Thus, the Group address bit is "
           "found in the low order bit of the first character of the "
           "string.)"),
          ArrayType ("Indexed") ]
       string NetworkAddresses[];
         [Description (
           "The maximum size of the INFO (non-MAC) field that will be "
           "received or transmitted."),
          Mappingstrings {"MIB.IETF|BRIDGE-MIB.dot1dTpPortMaxInfo"} ]
       uint32 MaxDataSize;
         [Description (
           "Capabilities of the TokenRingAdapter. For example, the Device "
           "may support AlertOnLan, WakeOnLan, Load Balancing and/or "
           "Failover. If failover or load balancing capabilities are "
           "listed, a SpareGroup (failover) or ExtraCapacityGroup (load "
           "balancing) should also be defined to completely describe the "
           "capability."),
          ArrayType ("Indexed"),
          Values {"Unknown", "Other", "AlertOnLan", "WakeOnLan",
                  "FailOver", "LoadBalancing"},
          ModelCorrespondence {
           "CIM_TokenRingAdapter.CapabilityDescriptions"} ]
      uint16 Capabilities[];
         [Description (
           "An array of free-form strings providing more detailed "
           "explanations for any of the TokenRingAdapter features "
           "indicated in the Capabilities array. Note, each entry of "
           "this array is related to the entry in the Capabilities array "
           "that is located at the same index."),
          ArrayType ("Indexed"),
          ModelCorrespondence {"CIM_TokenRingAdapter.Capabilities"} ]
      string CapabilityDescriptions[];
         [Description (
           "Specifies which of the capabilities from the \"Capabilities\" "
           "property are currently enabled."),
          Values {"Unknown", "Other", "AlertOnLan", "WakeOnLan",
                  "FailOver", "LoadBalancing"},
          ModelCorrespondence {"CIM_TokenRingAdapter.Capabilities"} ]
      uint16 EnabledCapabilities[];
         [Description (
           "The current status which can be used to diagnose fluctuating "
           "problems that can occur on token rings, after a station has "
           "successfully been added to the ring. Before an open is completed, "
           "this object contains the value indicating \"no status\" (131072). "
           "(The RingState and RingOpenStatus properties are also provided "
           "for debugging problems when the station can not even enter the "
           "ring.) The property's value is a sum of values, one for each "
           "currently applicable condition. The following values are defined "
           "for various conditions:\n"
           "0 = No Problems Detected, 32 = Ring Recovery, "
           "64 = Single Station, 256 = Remove Received, 512 = Reserved, "
           "1024 = Auto-Removal Error, 2048 = Lobe Wire Fault, "
           "4096 = Transmit Beacon, 8192 = Soft Error, 16384 = Hard Error, "
           "32768 = Signal Loss, 131072 = No Status, Open Not Completed."),
          MappingStrings {
           "MIB.IETF|IEEE 802.5 Token Ring MIB.dot5RingStatus"} ]
      uint32 RingStatus;
         [Description (
           "The current Device state with respect to entering or leaving "
           "the ring." ),
          Values {"Opened", "Closed", "Opening", "Closing", "Open Failure",
                  "Ring Failure"},
          MappingStrings {"MIB.IETF|IEEE 802.5 Token Ring MIB.dot5RingState"} ]
      uint16 RingState;
         [Description (
           "This property indicates the success, or the reason for failure, "
           "of the station's most recent attempt to enter the ring." ),
          Values {"No Open Attempted", "Bad Parameter", "Lobe Failed",
                  "Signal Loss", "Insertion Timeout", "Ring Failed", "Beaconing",
                  "Duplicate MAC", "Request Failed", "Remove Received",
                  "Last Open Successful"},
          MappingStrings {
           "MIB.IETF|IEEE 802.5 Token Ring MIB.dot5RingOpenStatus"} ]
      uint16 RingOpenStatus;
         [Description ("The ring's bandwidth."),
          Values {"Unknown", "Other", "One Megabit", "Four Megabit",
                  "Sixteen Megabit"},
          MappingStrings {"MIB.IETF|IEEE 802.5 Token Ring MIB.dot5RingSpeed"} ]
      uint16 RingSpeed;
         [Description (
           "This counter is incremented when a station detects the absence "
           "of transitions for five half-bit timers (burst-five errors)."),
          MappingStrings {
           "MIB.IETF|IEEE 802.5 Token Ring MIB.dot5StatsBurstErrors"},
          Counter ]
      uint32 BurstErrors;
         [Description (
           "This counter is incremented when a station receives an AMP or "
           "SMP frame in which A is equal to C is equal to 0, and then "
           "receives another SMP frame with A equal to C equal to 0 without "
           "first receiving an AMP frame. It denotes a station that cannot "
           "set the AC bits properly."),
          MappingStrings {
           "MIB.IETF|IEEE 802.5 Token Ring MIB.dot5StatsACErrors"},
          Counter ]
      uint32 ACErrors;
         [Description (
           "This counter is incremented when a station transmits an abort "
           "delimiter while transmitting data."),
          MappingStrings {
           "MIB.IETF|IEEE 802.5 Token Ring MIB.dot5StatsAbortTransErrors"},
          Counter ]
      uint32 AbortTransErrors;
         [Description (
           "This counter is incremented when a station recognizes an "
           "internal error."),
          MappingStrings {
           "MIB.IETF|IEEE 802.5 Token Ring MIB.dot5StatsInternalErrors"},
          Counter ]
      uint32 InternalErrors;
         [Description (
           "This counter is incremented when a station is transmitting "
           "and its TRR timer expires. This denotes a condition where a "
           "transmitting station in strip mode does not receive the "
           "trailer of the frame before the TRR timer goes off."),
          MappingStrings {
           "MIB.IETF|IEEE 802.5 Token Ring MIB.dot5StatsLostFrameErrors"},
          Counter ]
      uint32 LostFrameErrors;
         [Description (
           "This counter is incremented when a station recognizes a frame "
           "addressed to its specific address, but has no available buffer "
           "space - indicating that the station is congested."),
         MappingStrings {
          "MIB.IETF|IEEE 802.5 Token Ring MIB.dot5StatsReceiveCongestions"},
          Counter ]
      uint32 ReceiveCongestions;
         [Description (
           "This counter is incremented when a station recognizes a frame "
           "addressed to its specific address and detects that the FS field "
           "A bits are set to 1 indicating a possible line hit or duplicate "
           "address."),
          MappingStrings {
           "MIB.IETF|IEEE 802.5 Token Ring MIB.dot5StatsFrameCopiedErrors"},
          Counter ]
      uint32 FrameCopiedErrors;
         [Description (
           "This counter is incremented when a station acting as the active "
           "monitor recognizes an error condition that needs a token "
           "transmitted."),
          MappingStrings {
          "MIB.IETF|IEEE 802.5 Token Ring MIB.dot5StatsTokenErrors"},
          Counter ]
      uint32 TokenErrors;
         [Description (
           "The number of Soft Errors that the Device has detected. It "
           "directly corresponds to the number of Report Error MAC frames "
           "that this Device has transmitted. Soft Errors are those which "
           "are recoverable by the MAC layer protocols."),
          MappingStrings {
           "MIB.IETF|IEEE 802.5 Token Ring MIB.dot5StatsSoftErrors"},
          Counter ]
      uint32 SoftErrors;
         [Description (
           "The number of times this Device has detected an immediately "
           "recoverable fatal error. It denotes the number of times this "
           "Device is either transmitting or receiving beacon MAC frames. "),
          MappingStrings {
           "MIB.IETF|IEEE 802.5 Token Ring MIB.dot5StatsHardErrors"},
          Counter ]
      uint32 HardErrors;
         [Description (
           "The number of times this Device has detected the loss of "
           "signal condition from the ring."),
          MappingStrings {
           "MIB.IETF|IEEE 802.5 Token Ring MIB.dot5StatsSignalLoss"},
          Counter ]
      uint32 SignalLossCount;
         [Description (
           "The number of times this Device has transmitted a beacon "
           "frame."),
          MappingStrings {
           "MIB.IETF|IEEE 802.5 Token Ring MIB.dot5StatsTransmitBeacons"},
          Counter ]
      uint32 TransmittedBeacons;
         [Description (
           "The number of Claim Token MAC frames received or transmitted "
           "after the Device has received a Ring Purge MAC frame. This "
           "counter signifies the number of times the ring has been purged "
           "and is being recovered back into a normal operating state."),
          MappingStrings {
           "MIB.IETF|IEEE 802.5 Token Ring MIB.dot5StatsRecoverys"},
          Counter ]
      uint32 Recoverys;
         [Description (
           "The number of times the Device has detected an open or short "
           "circuit in the lobe data path. The adapter will be closed and "
           "RingState will signify this condition."),
          MappingStrings {
           "MIB.IETF|IEEE 802.5 Token Ring MIB.dot5StatsLobeWires"},
          Counter ]
      uint32 LobeWires;
         [Description (
           "The number of times the Device has received a Remove Ring "
           "Station MAC frame request. When this frame is received, the "
           "Device will enter the close state and RingState will "
           "signify this condition."),
          MappingStrings {
           "MIB.IETF|IEEE 802.5 Token Ring MIB.dot5StatsRemoves"},
          Counter ]
      uint32 Removes;
         [Description (
           "The number of times the Device has sensed that it is the "
           "only station on the ring. This will happen if the Device "
           "is the first one up on a ring, or if there is a hardware "
           "problem."),
         MappingStrings {
          "MIB.IETF|IEEE 802.5 Token Ring MIB.dot5StatsSingles"},
          Counter ]
      uint32 Singles;
         [Description (
           "The number of times the Device has detected that the "
           "frequency of the incoming signal differs from the expected "
           "frequency by more than that specified by the IEEE 802.5 "
           "standard."),
          MappingStrings {
           "MIB.IETF|IEEE 802.5 Token Ring MIB.dot5StatsFreqErrors"},
          Counter ]
      uint32 FrequencyErrors;
   };
   
   // ==================================================================
   // FibreChannelAdapter
   // ==================================================================
      [Description (
        "Capabilities and management of a Fibre Channel Adapter.") ]
   class CIM_FibreChannelAdapter : CIM_NetworkAdapter {
         [Description (
           "The maximum frame size, in bytes, supported by the Adapter."),
          Units ("Bytes") ]
      uint64 MaxFrameSize;
         [Description (
           "The Fibre Channel Classes of Service that are supported by "
           "the Adapter, on its Ports. The currently negotiated COS for a "
           "connection is a property (NegotiatedCOS) on the FibrePort"
           "ActiveLogin association."),
          Values {"Unknown", "1", "2", "3", "4", "6", "F"} ]
      uint16 SupportedCOS[];
         [Description (
           "An array of integers indicating the Fibre Channel FC-4 "
           "protocols supported by the Adapter. The protocols that are "
           "active and running are indicated in the CurrentFC4Types "
           "property. The values used in this array are taken from the "
           "FC-GS2 (bitmapped) field defined in Table 11 of the standard. "
           "Also, FC-SB-2 codes are included from the T11 document, "
           "236V0. If the FC4 Type is \"Vendor Unique\" (value=255), "
           "then the specific vendor values (in the range, 0xE0 to 0xFF) "
           "should be listed in the FC4VendorUniqueTypes property."),
          ValueMap {"0", "1", "4", "5", "8", "9", "17", "18", "19", "21",
                    "22", "23", "25", "26", "27", "28", "32", "34", "36",
                    "64", "80", "81", "82", "88", "96", "255"},
          Values {"Unknown", "Other", "ISO/IEC 8802 - 2 LLC",
                  "IP over FC", "SCSI - FCP", "SCSI - GPP",
                  "IPI - 3 Master", "IPI - 3 Slave", "IPI - 3 Peer",
                  "CP IPI - 3 Master", "CP IPI - 3 Slave",
                  "CP IPI - 3 Peer", "SBCCS Channel",
                  "SBCCS Control Unit", "FC-SB-2 Channel",
                  "FC-SB-2 Control Unit",
                  "Fibre Channel Services (FC-GS, FC-GS-2, FC-GS-3)",
                  "FC-SW", "FC - SNMP", "HIPPI - FP", "BBL Control",
                  "BBL FDDI Encapsulated LAN PDU",
                  "BBL 802.3 Encapsulated LAN PDU", "FC - VI", "FC - AV",
                  "Vendor Unique"},
          ModelCorrespondence {
           "CIM_FibreChannelAdapter.FC4VendorUniqueTypes"} ]
      uint16 FC4TypesSupported[];
         [MinValue (240), MaxValue (255), Description (
           "When the FC4TypesSupported array contains the value 255 "
           "(\"Vendor Unique\"), then the property, FC4VendorUniqueTypes, "
           "lists of all the vendor specific protocols supported by the "
           "Adapter. These values are in the range, 0xE0 to 0xFF.") ]
      uint16 FC4VendorUniqueTypes[];
         [Description (
           "An array of integers indicating the Fibre Channel FC-4 "
           "protocols currently running on the Adapter. A list of all "
           "protocols supported by the Adapter is indicated in the "
           "FC4TypesSupported property. The values used in this array "
           "are taken from the FC-GS2 (bitmapped) field defined in "
           "Table 11 of the standard. Also, FC-SB-2 codes are included "
           "from the T11 document, 236V0. If the FC4 Type is \"Vendor "
           "Unique\" (value=255), then the specific vendor values "
           "(in the range, 0xE0 to 0xFF) that are currently running "
           "should be listed in the CurrentFC4VendorTypes property."),
          ValueMap {"0", "1", "4", "5", "8", "9", "17", "18", "19", "21",
                    "22", "23", "25", "26", "27", "28", "32", "34", "36",
                    "64", "80", "81", "82", "88", "96", "255"},
          Values {"Unknown", "Other", "ISO/IEC 8802 - 2 LLC",
                  "IP over FC", "SCSI - FCP", "SCSI - GPP",
                  "IPI - 3 Master", "IPI - 3 Slave", "IPI - 3 Peer",
                  "CP IPI - 3 Master", "CP IPI - 3 Slave",
                  "CP IPI - 3 Peer", "SBCCS Channel",
                  "SBCCS Control Unit", "FC-SB-2 Channel",
                  "FC-SB-2 Control Unit",
                  "Fibre Channel Services (FC-GS, FC-GS-2, FC-GS-3)",
                  "FC-SW", "FC - SNMP", "HIPPI - FP", "BBL Control",
                  "BBL FDDI Encapsulated LAN PDU",
                  "BBL 802.3 Encapsulated LAN PDU", "FC - VI", "FC - AV",
                  "Vendor Unique"},
          ModelCorrespondence {
           "CIM_FibreChannelAdapter.FC4TypesSupported",
           "CIM_FibreChannelAdapter.CurrentFC4VendorTypes"} ]
      uint16 CurrentFC4Types[];
         [MinValue (240), MaxValue (255), Description (
           "When the CurrentFC4Types array contains the value 255 "
           "(\"Vendor Unique\"), then the property, CurrentFC4VendorTypes, "
           "lists all the vendor specific protocols running on the "
           "Adapter. These values are in the range, 0xE0 to 0xFF."),
          ModelCorrespondence {
           "CIM_FibreChannelAdapter.FC4VendorUniqueTypes"} ]
      uint16 CurrentFC4VendorTypes[];
         [Description (
           "A list of the Capabilities of the Fibre Channel Adapter. "
           "For example, that the Adapter utilizes the Directory Server, "
           "or that it generates State Change Notifications can be "
           "indicated using the values 2 and 12, respectively."),
          ArrayType ("Indexed"),
          Values {"Unknown", "Other", "Utilizes the Directory Server",
                  "Utilizes the Time Server",
                  "Utilizes the Management Server",
                  "Utilizes the Alias Server",
                  "Utilizes the Security Key Distribution Server",
                  "Utilizes the Clock Synchronization Server",
                  "Utilizes the Multicast Server",
                  "Utilizes QoS Facilitator",
                  "Utilizes Broadcast Services",
                  "Supports Fabric Login Server",
                  "Generates State Change Notifications",
                  "Registers for State Change Notifications",
                  "Responds to Read Connection Status",
                  "Supports Third Party Process Logout"} ]
      uint16 Capabilities[];
         [Description (
           "An array of free-form strings providing more detailed "
           "explanations for any of the Adapter features indicated in "
           "the Capabilities array. Note, each entry of this array "
           "is related to the entry in the Capabilities array that "
           "is located at the same index."),
          ArrayType ("Indexed"),
          ModelCorrespondence {"CIM_FibreChannelAdapter.Capabilities"} ]
      string CapabilityDescriptions[];
         [Description (
           "The number of times that a frame was received but no "
           "buffer was available."),
          Counter ]
      uint64 ReceiveBufferErrors;
         [Description (
           "The number of times that a frame was received but no "
           "end-to-end credit was available."),
          Counter ]
      uint64 ReceiveEndErrors;
       [Description (       [Description (
         "The timeout interval used by the watchdog, in MicroSeconds."),          "A 'long' timeout value (in milliseconds) for determining "
        Units ("MicroSeconds")          "when to reinstate a Recovery_Qualifier. The default value "
       ]          "is 120 seconds (120000 milliseconds). It is typically set "
    uint32 TimeoutInterval;          "to the ErrorDetectTimeout value + 2*(fabric delay time)."),
          Units ("MilliSeconds") ]
      uint64 ResourceAllocationTimeout;
       [Description (       [Description (
         "Resolution of the timer. For example, if this value is 100, "          "A 'short' timeout value (in milliseconds) for determining "
         "then the timer can expire anytime between (TimeoutInterval-"          "that an error has occurred. The default value is 10 "
         "100) microseconds or (TimeoutInterval+100) microseconds."),          "seconds (10000 milliseconds)."),
        Units ("MicroSeconds")         Units ("MilliSeconds") ]
       ]     uint64 ErrorDetectTimeout;
    uint32 TimerResolution;  
       [Description ("The time of the last timer expiry.") ]  
    datetime TimeOfLastExpiration;  
       [Description (       [Description (
         "Monitored entity at the time of last timer expiry."),          "Number of Class 1 sequences sent since last reset of the "
        Values {"Unknown", "Other", "Operating System",          "Device."),
              "Operating System Boot Process",         Counter ]
              "Operating System Shutdown Process",     uint64 Class1SequencesSent;
              "Firmware Boot Process", "BIOS Boot Process", "Application",  
                          "Service Processor"}  
       ]  
    uint16 MonitoredEntityOnLastExpiration;  
       [Description (       [Description (
         "The action that should happen upon the expiry of the watchdog."),          "Number of Class 2 sequences sent since last reset of the "
        Values {"None - Status Only", "System Reset", "System Power Off",          "Device."),
              "System Power Off, then On",         Counter ]
              "Generate System NonMaskableInterrupt (NMI)",     uint64 Class2SequencesSent;
              "Generate System Management Interrupt (SMI)"}  
       ]  
    uint16 ActionOnExpiration;  
       [Description (       [Description (
         "A method to re-arm the timer. This method is only used if "          "Number of Class 3 sequences sent since last reset of the "
         "the MonitoredEntity is \"Application\". It returns 0 if "          "Device."),
         "successful, 1 if unsupported, and any other value if an "         Counter ]
         "error occurred. In a subclass, the set of possible return "     uint64 Class3SequencesSent;
         "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.")  
       ]  
    uint32 KeepAlive();  
 };  
   
 // ===================================================================  
 // CoolingDevice  
 // ===================================================================  
    [Description ("Capabilities and management of CoolingDevices.")]  
 class CIM_CoolingDevice : CIM_LogicalDevice  
 {  
       [Description (       [Description (
           "ActiveCooling is a boolean indicating that the Cooling"          "Number of Class 4 sequences sent since last reset of the "
           "Device provides active (as opposed to passive) cooling.")          "Device."),
       ]         Counter ]
    boolean ActiveCooling;     uint64 Class4SequencesSent;
 };  
   
 // ===================================================================  
 // Refrigeration  
 // ===================================================================  
    [Description (    [Description (
        "Capabilities and management of a Refrigeration CoolingDevice.")          "Number of octets received by the Adapter when running "
    ]          "Class 2 service."),
 class CIM_Refrigeration : CIM_CoolingDevice         Counter ]
 {     uint64 Class2OctetsReceived;
 };  
   
 // ===================================================================  
 // HeatPipe  
 // ===================================================================  
    [Description (    [Description (
        "Capabilities and management of a HeatPipe CoolingDevice.")          "Number of octets transmitted by the Adapter when running "
    ]          "Class 2 service."),
 class CIM_HeatPipe : CIM_CoolingDevice         Counter ]
 {     uint64 Class2OctetsTransmitted;
 };  
   
 // ===================================================================  
 // Fan  
 // ===================================================================  
    [Description (    [Description (
        "Capabilities and management of a Fan CoolingDevice.")          "Number of frames received by the Adapter when running "
    ]          "Class 2 service."),
 class CIM_Fan : CIM_CoolingDevice         Counter ]
 {     uint64 Class2FramesReceived;
       [Description (       [Description (
           "Indication of whether the fan supports variable speeds.")]          "Number of frames transmitted by the Adapter when running "
    boolean VariableSpeed;          "Class 2 service."),
          Counter ]
      uint64 Class2FramesTransmitted;
         [Description (         [Description (
           "DesiredSpeed is the currently requested fan speed, "          "Number of frames discarded by the Adapter when running "
           "defined in Revolutions per Minute, when a variable speed fan "          "Class 2 service."),
           "is supported (VariableSpeed boolean = TRUE). The current "         Counter ]
           "speed is determined via a sensor (CIM_Tachometer) that is "     uint64 Class2DiscardFrames;
           "associated with the Fan using the CIM_AssociatedSensor "  
           "relationship."),  
          Units ("Revolutions per Minute")  
         ]  
    uint64 DesiredSpeed;  
         [Description (         [Description (
           "Requests that the Fan speed be set to the "          "Number of octets received by the Adapter when running "
           "value specified in the method's input parameter. The return "          "Class 3 service."),
           "value should be 0 if the request was successfully executed, "         Counter ]
           "1 if the request is not supported and some other value if an "     uint64 Class3OctetsReceived;
           "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.")  
         ]  
    uint32 SetSpeed ([IN] uint64 DesiredSpeed);  
 };  
   
 // ===================================================================  
 // AssociatedCooling  
 // ===================================================================  
    [Association,  
     Description (  
        "Many Devices, such as processors or power supplies, require "  
        "their own cooling devices.  This association indicates where "  
        "fans or other CoolingDevices are specific to a Device, "  
        "versus providing enclosure or cabinet cooling.")  
    ]  
 class CIM_AssociatedCooling : CIM_Dependency  
 {  
       [Override ("Antecedent"),  
        Description ("The CoolingDevice.")  
       ]  
    CIM_CoolingDevice REF Antecedent;  
       [Override ("Dependent"),  
        Description ("The LogicalDevice being cooled.")  
       ]  
    CIM_LogicalDevice REF Dependent;  
 };  
   
 // ===================================================================  
 // UserDevice  
 // ===================================================================  
    [Abstract,  
     Description (  
        "UserDevices are LogicalDevices that allow a ComputerSystem's "  
        "users to input, view or hear data.  It is a superclass from "  
        "which other classes, such as Keyboard or DesktopMonitor, "  
        "descend.")  
    ]  
 class CIM_UserDevice : CIM_LogicalDevice  
 {  
       [Description (       [Description (
           "An indication of whether the Device is locked, preventing "          "Number of octets transmitted by the Adapter when running "
           "user input or output.")          "Class 3 service."),
       ]         Counter ]
    boolean IsLocked;     uint64 Class3OctetsTransmitted;
 };  
   
 // ===================================================================  
 // PointingDevice  
 // ===================================================================  
    [Description (    [Description (
        "PointingDevice represents those Devices used to 'point' to "          "Number of frames received by the Adapter when running "
        "regions of a Display.")          "Class 3 service."),
    ]         Counter ]
 class CIM_PointingDevice : CIM_UserDevice     uint64 Class3FramesReceived;
 {  
       [Description ("The type of the pointing device."),  
          ValueMap {"1", "2", "3", "4", "5", "6", "7", "8", "9"},  
        Values {"Other", "Unknown", "Mouse", "Track Ball", "Track Point",  
                "Glide Point", "Touch Pad", "Touch Screen",  
              "Mouse - Optical Sensor"},  
        MappingStrings {"MIF.DMTF|Pointing Device|003"}  
       ]  
    uint16 PointingType;  
       [Description (       [Description (
           "Number of buttons. If the PointingDevice has no buttons, "          "Number of frames transmitted by the Adapter when running "
           "enter 0."),          "Class 3 service."),
        MappingStrings {"MIF.DMTF|Pointing Device|003"}         Counter ]
       ]     uint64 Class3FramesTransmitted;
    uint8 NumberOfButtons;  
       [Description (       [Description (
           "Integer indicating whether the PointingDevice is configured "          "Number of frames discarded by the Adapter when running "
           "for right (value=2) or left handed operation (value=3). "          "Class 3 service."),
           "Also, the values, \"Unknown\" (0) and \"Not Applicable\" (1), "         Counter ]
           "can be defined."),     uint64 Class3DiscardFrames;
        Values {"Unknown", "Not Applicable", "Right Handed Operation",  
                "Left Handed Operation"}  
       ]  
    uint16 Handedness;  
       [Description (       [Description (
           "Tracking resolution of the PointingDevice in Counts per "          "Number of parity errors detected somewhere in the "
           "Inch."),          "data path."),
        Units ("Counts per Inch")         Counter ]
       ]     uint64 ParityErrors;
    uint32 Resolution;  
 };  
   
 // ===================================================================  
 // Keyboard  
 // ===================================================================  
    [Description (    [Description (
        "Capabilities and management of the Keyboard LogicalDevice.")          "Number of Class 1 or 2 frames that are not ACKed "
    ]          "within the time indicated by ErrorDetectTimeout."),
 class CIM_Keyboard : CIM_UserDevice         Counter ]
 {     uint64 FrameTimeouts;
       [Description ("Number of function keys on the Keyboard.")]  
    uint16 NumberOfFunctionKeys;  
       [Description (       [Description (
           "A free-form string indicating the format and layout of the "          "Number of times that the Device has been without a "
           "Keyboard."),          "buffer credit for a time longer than ErrorDetectTimeout."),
        MappingStrings {"MIF.DMTF|Keyboard|004"}         Counter ]
       ]     uint64 BufferCreditErrors;
    string Layout;  
       [Description (       [Description (
           "An integer indicating whether a hardware-level password is "          "Number of times that the Device has been without an end "
           "enabled at the keyboard (value=4), preventing local input. "          "credit for a time longer than ErrorDetectTimeout."),
           "Other values are:  \"Disabled\" (3), \"Not Implemented\" (5), "         Counter ]
           "\"Other\" (1) and \"Unknown\" (2)."),     uint64 EndCreditErrors;
          ValueMap {"1", "2", "3", "4", "5"},        [Description ("Number of frames received out of order."),
        Values {"Other", "Unknown", "Disabled", "Enabled",         Counter ]
                "Not Implemented"},     uint64 OutOfOrderFramesReceived;
        MappingStrings {"MIF.DMTF|System Hardware Security|001.2"}  
       ]  
    uint16 Password;  
 }; };
  
 // ===================================================================  
 // Display  
 // ===================================================================  
    [Abstract,  
     Description (  
        "Display is a superclass for grouping the miscellaneous display "  
        "devices that exist.")  
    ]  
 class CIM_Display : CIM_UserDevice  
 {  
 };  
  
 // ===================================================================  // ==================================================================
 // DesktopMonitor  // FibrePort
 // ===================================================================  // ==================================================================
    [Description (    [Description (
        "Capabilities and management of the DesktopMonitor (CRT) "       "Capabilities and management of a Fibre Channel Port Device.") ]
        "LogicalDevice.")  class CIM_FibrePort : CIM_LogicalPort {
    ]        [Description (
 class CIM_DesktopMonitor : CIM_Display          "An address value used to identify the source (S_ID) or "
 {          "destination (D_ID) of a frame. The FC-SW standard includes a "
           "table of special address identifier values and their "
           "meanings. Consult the FC-SW documentation for additional "
           "information.") ]
      uint32 AddressIdentifier;
         [Description (
           "An array indicating the modes in which the Port can operate. "
           "PortType values describe the role and behavior of the Fibre "
           "Channel entity: \"N\" = Node Port, \"NL\" = Node Port "
           "supporting FC arbitrated loop, \"E\" = Expansion Port "
           "connecting fabric elements (for example, FC switches), "
           "\"F\" = Fabric (element) Port, \"FL\" = Fabric (element) "
           "Port supporting FC arbitrated loop, and \"B\" = Bridge "
           "Port. PortTypes are defined in the ANSI X3 standards.\n\n"
           "A particular mode may be listed multiple times in the "
           "SupportedPortTypes array in order to define that multiple, "
           "unique version levels are supported. Version information is "
           "defined in the PortTypeVersions property. Note that each "
           "entry of the SupportedPortTypes array is related to the entry "
           "in PortTypeVersions that is located at the same index."),
          ArrayType ("Indexed"),
          Values {"Unknown", "N", "NL-Private", "NL-Public", "E", "F",
                  "FL", "B"},
          ModelCorrespondence {"CIM_FibrePort.PortTypeVersions"} ]
      uint16 SupportedPortTypes[];
         [Description (
           "Version information for each of the SupportedPortTypes. A "
           "particular PortType (mode) may be listed multiple times in "
           "the SupportedPortTypes array in order to define multiple, "
           "unique version levels. Note that each entry of this array "
           "is related to the entry in SupportedPortTypes that is "
           "located at the same index."),
          ArrayType ("Indexed"),
          ModelCorrespondence {"CIM_FibrePort.SupportedPortTypes"} ]
      string PortTypeVersions[];
         [Description (
           "The specific modes currently enabled for the Port. The "
           "values are equal to, or a subset of the values in the Supported"
           "PortTypes array."),
          Values {"Unknown", "N", "NL-Private", "NL-Public", "E", "F",
                  "FL", "B"},
          ModelCorrespondence {"CIM_FibrePort.SupportedPortTypes",
           "CIM_FibrePort.EnabledVersions"} ]
      uint16 EnabledPortTypes[];
         [Description (
           "Version information for each of the EnabledPortTypes. A "
           "particular PortType (mode) may be listed multiple times in "
           "the EnabledPortTypes array in order to define multiple, "
           "unique version levels. Note that each entry of this array "
           "is related to the entry in EnabledPortTypes that is located "
           "at the same index."),
          ArrayType ("Indexed"),
          ModelCorrespondence {"CIM_FibrePort.EnabledPortTypes"} ]
      string EnabledVersions[];
       [Description (       [Description (
           "The type of DesktopMonitor or CRT. For example, "          "The specific mode in which the Port is currently running. The "
           "multiscan color or monochrome monitors (values 2 or 3, "          "value is one of the entries in the EnabledPortTypes array. The "
           "respectively) can be indicated in this property."),          "current port type/mode is dependent on the fibre technology. "
        Values {"Unknown", "Other", "Multiscan Color",          "For example, in a public loop network, you might indicate a "
                "Multiscan Monochrome", "Fixed Frequency Color",          "port type of \"FL\" (value=6) or \"NL\" (value=2)."),
                "Fixed Frequency Monochrome"}         Values {"Unknown", "N", "NL-Private", "NL-Public", "E", "F",
       ]                 "FL", "B"},
    uint16 DisplayType;         ModelCorrespondence {"CIM_FibrePort.EnabledPortTypes",
           "CIM_FibrePort.CurrentVersion"} ]
      uint16 CurrentPortType;
       [Description (       [Description (
           "Monitor's bandwidth in MHertz. If unknown, enter 0."),          "Version information for the CurrentPortType that is active."),
        Units ("MegaHertz")         ModelCorrespondence {"CIM_FibrePort.CurrentPortType"} ]
       ]     string CurrentVersion;
    uint32 Bandwidth;  
       [Description (       [Description (
         "The logical height of the Display in screen coordinates.") ]          "One or more address identifiers that may be recognized by "
    uint32 ScreenHeight;          "the Port, in addition to its port-specific identifier. "
           "Multicast or hunt group addresses that are recognized by "
           "the Port would be identified in this array.") ]
      uint32 AliasAddresses[];
       [Description (       [Description (
         "The logical width of the Display in screen coordinates.") ]          "Number of times that signal is lost on the Port since last "
    uint32 ScreenWidth;          "reset of the Device."),
 };         Counter ]
      uint64 LossOfSignalCounter;
 // ===================================================================  
 // MonitorResolution  
 // ===================================================================  
    [Description (    [Description (
        "MonitorResolution describes the relationship between "          "Number of times that synchronization is lost on the Port "
        "horizontal and vertical resolutions, refresh rate and scan "          "since last reset of the Device. Synchronization is assumed "
        "mode for a DesktopMonitor. The actual resolutions, etc. that "          "lost after a timeout period identified by the Receiver"
        "are in use, are the values specified in the VideoController "          "TransmitterTimeout property."),
        "object.")         Counter ]
    ]     uint64 LossOfSyncCounter;
 class CIM_MonitorResolution : CIM_Setting  
 {  
       [Override ("SettingID"),  
        Key, MaxLen (256),  
        Description (  
           "The inherited SettingID serves as part of the key for a "  
           "MonitorResolution instance.")  
       ]  
    string SettingID;  
       [Description ("Monitor's horizontal resolution in Pixels."),  
        Units ("Pixels"),  
          ModelCorrespondence {  
                "CIM_VideoController.CurrentHorizontalResolution"},  
        MappingStrings {"MIF.DMTF|Monitor Resolutions|002.2"}  
       ]  
    uint32 HorizontalResolution;  
       [Description ("Monitor's vertical resolution in Pixels."),  
        Units ("Pixels"),  
          ModelCorrespondence {  
                "CIM_VideoController.CurrentVerticalResolution"},  
        MappingStrings {"MIF.DMTF|Monitor Resolutions|002.3"}  
       ]  
    uint32 VerticalResolution;  
       [Description (       [Description (
           "Monitor's refresh rate in Hertz. If a range of rates is "          "Number of times that the CRC in a frame does not match the "
           "supported, use the MinRefreshRate and MaxRefreshRate "          "CRC computed by the receiver."),
           "properties, and set RefreshRate (this property) to 0."),         Counter ]
        Units ("Hertz"),     uint64 CRCErrors;
          ModelCorrespondence {  
                "CIM_VideoController.CurrentRefreshRate"},  
        MappingStrings {"MIF.DMTF|Monitor Resolutions|002.4"}  
       ]  
    uint32 RefreshRate;  
       [Description (       [Description (
           "Monitor's minimum refresh rate in Hertz, when a range of "          "The number of transmission words that had an 8b10b code "
           "rates is supported at the specified resolutions."),          "violation in one or more of its characters, had a "
        Units ("Hertz"),          "K28.5 in its second, third or fourth character positions, "
          ModelCorrespondence {          "and/or was an ordered set that had an incorrect Beginning "
                "CIM_VideoController.MinRefreshRate"},          "Running Disparity."),
        MappingStrings {"MIF.DMTF|Monitor Resolutions|002.6"}         Counter ]
       ]     uint64 InvalidTransmissionWords;
    uint32 MinRefreshRate;  
       [Description (       [Description (
           "Monitor's maximum refresh rate in Hertz, when a range of "          "The number of frames received that were shorter than 28 "
           "rates is supported at the specified resolutions."),          "octets. The value of 28 is calculated based on an "
        Units ("Hertz"),          "assumption of 24 header bytes plus 4 CRC bytes. The "
          ModelCorrespondence {          "count does not include SOF/EOF bytes which are not data."),
                "CIM_VideoController.MaxRefreshRate"},         Counter ]
        MappingStrings {"MIF.DMTF|Monitor Resolutions|002.7"}     uint64 FramesTooShort;
       ]  
    uint32 MaxRefreshRate;  
       [Description (       [Description (
           "Integer indicating whether the monitor operates in "          "The number of frames received that were longer than 2140 "
           "interlaced (value=5) or non-interlaced (4) mode."),          "octets. The value of 2140 is calculated based on an "
          ValueMap {"1", "2", "3", "4", "5"},          "assumption of 24 header bytes plus 4 CRC bytes and 2112 "
        Values {"Other", "Unknown", "Not Supported",          "bytes of payload."),
                "Non-Interlaced Operation", "Interlaced Operation"},         Counter ]
          ModelCorrespondence {     uint64 FramesTooLong;
                "CIM_VideoController.CurrentScanMode"},  
        MappingStrings {"MIF.DMTF|Monitor Resolutions|002.5"}  
       ]  
    uint16 ScanMode;  
 };  
   
 // ===================================================================  
 // MonitorSetting  
 // ===================================================================  
    [Association,  
     Description (  
        "MonitorSetting associates the MonitorResolution Setting object "  
        "with the DesktopMonitor to which it applies.")  
    ]  
 class CIM_MonitorSetting : CIM_ElementSetting  
 {  
       [Override ("Element"),  
        Description ("The DesktopMonitor.")  
       ]  
    CIM_DesktopMonitor REF Element;  
       [Override ("Setting"),  
        Description (  
           "The MonitorResolution associated with the DesktopMonitor.")  
       ]  
    CIM_MonitorResolution REF Setting;  
 };  
   
 // ===================================================================  
 // FlatPanel  
 // ===================================================================  
    [Description (    [Description (
        "Capabilities and management of the FlatPanel LogicalDevice.")          "The number of times that a fill word could not be "
    ]          "inserted, when required. The Elasticity Buffer is defined "
 class CIM_FlatPanel : CIM_Display          "in FC-AL. This event might cause data corruption and may "
 {          "indicate a configuration error or a device out of spec."),
       [Description ("FlatPanel's horizontal resolution in Pixels."),         Counter ]
        Units ("Pixels")     uint64 ElasticityBufferUnderruns;
       ]  
    uint32 HorizontalResolution;  
       [Description ("FlatPanel's vertical resolution in Pixels."),  
        Units ("Pixels")  
       ]  
    uint32 VerticalResolution;  
       [Description (       [Description (
           "A FlatPanel's scan mode indicating either single "          "The number of times that a fill word could not be deleted, "
           "(value=2) or dual scan (3)."),          "when required. The Elasticity Buffer is defined in FC-AL. "
        Values {"Unknown", "Other", "Single Scan", "Dual Scan"}          "This event might cause data corruption and may indicate a "
       ]          "configuration error or a device out of spec."),
    uint16 ScanMode;         Counter ]
      uint64 ElasticityBufferOverruns;
       [Description (       [Description (
           "An integer enumeration describing the type of flat panel "          "Timeout value in milliseconds used to determine when "
           "display."),          "loss of synchronization has occurred. The typical default "
        Values {"Unknown", "Other", "Passive Matrix LCD",          "is 100 msec."),
                "Active Matrix LCD", "Cholesteric LCD",        Units ("Milliseconds") ]
                "Field Emission Display",     uint64 ReceiverTransmitterTimeout;
                  "Electro Luminescent Display", "Gas Plasma", "LED"}  
       ]  
    uint16 DisplayType;  
       [Description (       [Description (
           "A description of the display illumination type. For example, "          "Indication of whether the Port is currently bypassed "
           "backlit (value=2) or reflective (4) can be specified."),          "(value=2) or not (value=1). A value of 3 (\"Forced Insert\") "
        Values {"Unknown", "Other", "Backlit", "Edgelit", "Reflective"}          "describes that the Port is forced active, when it would "
       ]          "otherwise be \"Bypassed\"."),
    uint16 LightSource;         Values {"Unknown", "Not Bypassed", "Bypassed",
                  "Forced Insert"} ]
      uint16 BypassedState;
       [Description (       [Description (
          "Boolean indicating whether the FlatPanel supports color "           "The type of cabling as sensed by the Port. Not all FibrePorts "
          "display.")           "are capable of providing this information. In this case, a "
       ]           "value of 0, \"Unknown\", will be returned. Also, when single or "
    boolean SupportsColor;           "multi-mode fiber cabling can not be distinguished, the more "
            "general value - 4, \"Fiber-optic\" - can be specified."),
          Values {"Unknown", "Other", "No Media", "Copper/Twinaxial",
                  "Fiber-optic", "Fiber Single Mode", "Fiber Multimode"}]
      uint16 ConnectedMedia;
 }; };
  
   
 // =================================================================== // ===================================================================
 // Scanner  // FibrePortOnFCAdapter
 // =================================================================== // ===================================================================
    [Description (     [Association, Description (
        "Capabilities and management of the Scanner LogicalDevice.")       "FibrePortOnFCAdapter associates a FibrePort with a FibreChannel"
    ]       "Adapter. Cardinalities are defined as Max(1) to indicate the "
 class CIM_Scanner : CIM_LogicalDevice       "intent and usage of the model - that an Adapter is synonymous "
 {       "with its Port (connection point). Where you have a multi-Port "
        "Adapter and more than one Port may be active at a time, "
        "individual Adapters with individual operating data and "
        "characteristics really exist. If you have multiple connection "
        "points, but they exist only to provide multiple physical form "
        "factors (only one connection may be active at a time), then one "
        "FibreChannelAdapter and one FibrePort (the active one) exist. "
        "On the hardware side, the realizations of these entities "
        "in PhysicalElements may be as a CIM_Card (for example) with "
        "multiple CIM_PhysicalConnectors.") ]
   class CIM_FibrePortOnFCAdapter : CIM_PortOnDevice {
         [Override ("Antecedent"), Max (1),
          Description (
           "The FibreChannelAdapter that includes the Port.") ]
      CIM_FibreChannelAdapter REF Antecedent;
         [Override ("Dependent"), Max (1),
          Description ("The FibrePort on the Adapter.") ]
      CIM_FibrePort REF Dependent;
 }; };
  
 // ===================================================================  
 // CIM_OOBAlertService  // ==================================================================
 // ===================================================================  // FibrePortActiveLogin
    [Description (  // ==================================================================
        "This Service is implemented by a LogicalDevice (e.g. a "     [Association, Description (
        "NetworkAdapter or Modem) that is capable of sending alert "       "FibrePortActiveLogin indicates that two FibrePorts are "
        "messages to a remote destination. The alert messages reflect "       "connected via a login and have negotiated their Class Of "
        "the state of one or more ManagedSystemElements. The Elements "       "Service, frame size and other link characteristics, as "
        "for which alert messages are forwarded, are defined by "       "specified by an instance of this class.\n"
        "enumerating the ProvidesServiceToElement association for the "       "The class' key is composed of the login originator's and "
        "Service. Out of Band (OOB) refers to the mechanisms in use when "       "responder's keys plus the Class Of Service. This combination "
        "normal OS-based management mechanisms are not possible. This "       "is unique and prevents subclassing FibrePortActiveLogin "
        "occurs when the OS is down or not functioning properly.")       "from its reasonable superclass, DeviceConnection.") ]
    ]  class CIM_FibrePortActiveLogin  {
 class CIM_OOBAlertService : CIM_Service        [Key, Description ("The originator of the login.") ]
 {     CIM_FibrePort REF LoginOriginator;
       [Description (        [Key, Description ("The responder to the login.") ]
         "The type of the alert destination. For example, the alert "     CIM_FibrePort REF LoginResponder;
         "may be received by an application listening on a UDP Port on "        [Key, Description (
         "a remote destination, or could be sent to a pager (values "          "The Fibre Channel Class of Service that is currently running "
         "4 or 2, respectively)."),          "between the Ports. Since two Ports can be simultaneously "
        Values {"Unknown", "Other", "Pager", "TCP Port", "UDP Port"},          "connected at different Classes of Service, this property had "
        ModelCorrespondence {          "to be part of the object's key and therefore, an instance's "
              "CIM_OOBAlertService.OtherDestinationTypeDescription"}          "identity."),
       ]         Values {"Unknown", "1", "2", "3", "4", "6", "F"},
    uint16 DestinationType;         ModelCorrespondence {"CIM_FibreChannelAdapter.SupportedCOS"},
       [Description (         MappingStrings {"MIF.DMTF|Fibre Channel Bus Port Extensions|001.5"}  ]
         "The description of the alert DestinationType. This is used "     uint16 NegotiatedCOS;
         "when the DestinationType is set to \"Other\" (value=1)."),  
        ModelCorrespondence {"CIM_OOBAlertService.DestinationType"}  
       ]  
    string OtherDestinationTypeDescription;  
       [Description (  
         "The address where this Service sends the alerts. The "  
         "format of this address depends on the DestinationType. For "  
         "example, if the DestinationType is a UDP Port (value=4), "  
         "then this property contains a string identifying the IP "  
         "address of the Port (for example, 111.222.333.444:4567). "  
         "If DestinationType is a pager (value=2), then the "  
         "address is a Pager number (for example, 18002257654).")  
       ]  
    string DestinationAddress;  
       [Description (       [Description (
         "The format of the Alert Message sent by the Service."),          "The Fibre Channel frame size, in bytes, that is currently "
        Values {"Unknown", "Other", "Numeric", "AlphaNumeric",          "negotiated between the two Ports."),
              "Free Form Text", "Platform Event Trap"},         Units ("Bytes") ]
        ModelCorrespondence {     uint64 NegotiatedFrameSize;
              "CIM_OOBAlertService.OtherMessageFormatDescription"}  
       ]  
    uint16 MessageFormat;  
       [Description (       [Description (
         "The description of the format of the alert message used "          "The speed for communications that is currently negotiated "
         "by the Service when the AlertMessageFormat property is "          "between the two Ports. Speed is specified in bits per second. "
         "set to \"Other\" (value=1)."),          "If this information is not available, the property should be "
        ModelCorrespondence {"CIM_OOBAlertService.MessageFormat"}          "set to 0."),
       ]         Units ("Bits per Second") ]
    string OtherMessageFormatDescription;     uint64 NegotiatedSpeed;
       [Description (       [Description (
         "If the AlertService only uses a fixed message to send "          "Acknowledgement model negotiated during Port login. For "
         "an alert, then this flag should be set to TRUE.")          "example, ACK-1 indicates that each frame should be "
       ]          "acknowledged."),
    boolean OnlySendsFixedMessage;         Values {"Unknown", "ACK-0", "ACK-1", "ACK-N"},
          MappingStrings {"MIF.DMTF|Fibre Channel Bus Port Extensions|001.6"} ]
      uint16 ACKModel;
       [Description (       [Description (
         "The AlertService may require some fixed data to send as "          "The buffer-to-buffer model negotiated during Port login. "
         "part of the message. This may include things like the "          "Either the model defined by the FC-PH standard is used "
         "address or name of the System. This string contains the "          "(value=1, \"Regular\"), or an \"Alternate\" model is "
         "complete message when the property, OnlySendsFixedMessage, "          "negotiated."),
         "is set to TRUE.")         Values {"Unknown", "Regular", "Alternate"} ]
       ]     uint16 BufferToBufferModel;
    string FixedPartOfMessage;  
       [Description (       [Description (
         "If the destination is capable of sending an acknowledgement "          "OriginatorBufferCredit reflects the buffer credit of the "
         "to the alert, then this flag is set to TRUE. The format of "          "Port defined as the LoginOriginator. It is the number of "
         "the acknowledgement is determined by the DestinationType "          "frame buffers made available BY the originating Port, TO "
         "and the MessageFormat.")          "the responder Port. Buffer credits are used in point to "
       ]          "point connections, when an NL-Local Port is logged into "
    boolean DestinationIsAckCapable;          "another NL-Local Port, and when Nx Ports are logged into "
           "Fx Ports. In other scenarios, this value is undefined."),
           MappingStrings {"MIF.DMTF|Fibre Channel Bus Port Extensions|001.3"}  ]
      uint64 OriginatorBufferCredit;
       [Description (       [Description (
         "The AlertService may retry and send an alert more than "          "ResponderBufferCredit reflects the buffer credit of the "
         "once. The RetryCount identifies how often the operation will "          "Port defined as the LoginResponder. It is the number of "
         "be repeated. If DestinationIsAckCapable is set to TRUE, then "          "frame buffers made available BY the responder Port, TO "
         "the retry will only be done if an Ack is not received. "          "the originating Port. Buffer credits are used in point to "
         "Otherwise, the retries are done unconditionally.")          "point connections, when an NL-Local Port is logged into "
       ]          "another NL-Local Port, and when Nx Ports are logged into "
    uint16 RetryCount;          "Fx Ports. In other scenarios, this value is undefined."),
           MappingStrings {"MIF.DMTF|Fibre Channel Bus Port Extensions|001.3"}  ]
      uint64 ResponderBufferCredit;
       [Description (       [Description (
         "The interval between each successive retry, in seconds. "          "OriginatorEndCredit reflects the end credit of the Port "
         "If DestinationIsAckCapable is set to TRUE, then this "          "defined as the LoginOriginator. It is the number of frame "
         "interval is used as a timeout interval, before the next "          "buffers made available BY the originating Port, TO the "
         "retry is done."),          "responder Port. End credits are used in point to point "
        Units ("Seconds")          "connections, when an NL-Local Port is logged into another "
       ]          "NL-Local Port, and when Nx Ports are logged into remote "
    uint16 RetryInterval;          "Nx Ports. In other scenarios, this value is undefined."),
           MappingStrings {"MIF.DMTF|Fibre Channel Bus Port Extensions|001.2"}  ]
      uint64 OriginatorEndCredit;
         [Description (
           "ResponderEndCredit reflects the end credit of the Port "
           "defined as the LoginResponder. It is the number of frame "
           "buffers made available BY the responder Port, TO the "
           "originating Port. End credits are used in point to point "
           "connections, when an NL-Local Port is logged into another "
           "NL-Local Port, and when Nx Ports are logged into remote "
           "Nx Ports. In other scenarios, this value is undefined."),
           MappingStrings {"MIF.DMTF|Fibre Channel Bus Port Extensions|001.2"}  ]
      uint64 ResponderEndCredit;
 }; };
  
   
 // =================================================================== // ===================================================================
 // WakeUpService  // Controller
 // =================================================================== // ===================================================================
      [Abstract, Description (
        "Controller is a superclass for grouping the miscellaneous "
        "control-related Devices that exist. Examples of Controllers "
        "are SCSIControllers, USBControllers, SerialControllers, ... "
        "The Controller class is an abstraction for Devices with a "
        "single protocol stack, which exist primarily for communication "
        "to, and control or reset of downstream (ControlledBy) Devices.") ]
   class CIM_Controller : CIM_LogicalDevice {
         [Description ("Time of last reset of the Controller.") ]
      datetime TimeOfLastReset;
    [Description (    [Description (
        "WakeUpService allows a UnitaryComputerSystem to be woken up "          "The protocol used by the Controller to access 'controlled' "
        "from a low power sleep state. This Service is implemented "          "Devices."),
        "by a LogicalDevice (e.g. NetworkAdapter or Modem) that is "         ValueMap {"1", "2", "3", "4", "5", "6", "7", "8", "9", "10",
        "capable of receiving wakeup messages, and notifying the "                   "11", "12", "13", "14", "15", "16", "17", "18", "19",
        "System.")                   "20", "21", "22", "23", "24", "25", "26", "27", "28",
    ]                   "29", "30", "31", "32", "33", "34", "35", "36", "37",
 class CIM_WakeUpService : CIM_Service                   "38", "39", "40", "41", "42", "43", "44", "45", "46",
 {                   "47"},
       [Description ("The Type of the WakeUp Service."),         Values {"Other", "Unknown", "EISA", "ISA", "PCI", "ATA/ATAPI",
        Values {"Unknown", "Other", "Wake On LAN - Magic Packet",                 "Flexible Diskette", "1496", "SCSI Parallel Interface",
              "Wake on LAN - Packet Filtering", "Wake On Ring"},                 "SCSI Fibre Channel Protocol", "SCSI Serial Bus Protocol",
        ModelCorrespondence {                 "SCSI Serial Bus Protocol-2 (1394)",
              "CIM_WakeUpServcice.OtherWakeUpTypeDescription"}                 "SCSI Serial Storage Architecture", "VESA", "PCMCIA",
       ]                 "Universal Serial Bus", "Parallel Protocol", "ESCON",
    uint16 WakeUpType;                 "Diagnostic", "I2C", "Power", "HIPPI", "MultiBus", "VME",
       [Description (                 "IPI", "IEEE-488", "RS232", "IEEE 802.3 10BASE5",
         "A description of the type of WakeUpService used when "                 "IEEE 802.3 10BASE2", "IEEE 802.3 1BASE5",
         "WakeUpType is set to \"Other\" (value=1)."),                 "IEEE 802.3 10BROAD36", "IEEE 802.3 100BASEVG",
        ModelCorrespondence {"CIM_WakeUpService.WakeUpType"}                 "IEEE 802.5 Token-Ring", "ANSI X3T9.5 FDDI", "MCA",
       ]                 "ESDI", "IDE", "CMD", "ST506", "DSSI", "QIC2",
    string OtherWakeUpTypeDescription;                 "Enhanced ATA/IDE", "AGP", "TWIRP (two-way infrared)",
                  "FIR (fast infrared)", "SIR (serial infrared)",
                  "IrBus"},
          MappingStrings {"MIF.DMTF|Bus Port|003",
           "MIF.DMTF|Disks|003.3"},
          ModelCorrespondence {"CIM_Controller.ProtocolDescription"} ]
      uint16 ProtocolSupported;
       [Description (       [Description (
         "The filter type on the packets/messages that trigger "          "Maximum number of directly addressable entities supported "
         "the WakeUpService. This field is only used when the WakeUp"          "by this Controller.  A value of 0 should be used if the "
         "Type is set to \"Wake On LAN - Packet Filtering\" (value"          "number is unknown or unlimited."),
         "=3)."),         MappingStrings {"MIF.DMTF|Bus Port|003"} ]
        Values {"Unknown", "Other", "ARP Broadcast",     uint32 MaxNumberControlled;
              "Neighbor Discovery Multicast",  
              "IP Packet with Directed MAC Address",  
              "IPX Diagnostic Responder", "NBT Name Query",  
              "Binary Match"},  
        ModelCorrespondence {  
              "CIM_WakeUpService.OtherFilterTypeDescription"}  
       ]  
    uint16 FilterType;  
       [OctetString, Description (  
         "The binary data that is used to compare the contents "  
         "of the received packet. This is used when the FilterType is "  
         "set to \"Binary Match\" (value=7). This could also be used "  
         "when the FilterType is set to \"Other\" (value=1).")  
       ]  
    uint8 FilterData[];  
       [Description (       [Description (
         "The description of the format of the FilterType used by "          "A free form string providing more information related "
         "the Service when the FilterType is set to \"Other\" "          "to the ProtocolSupported by the Controller."),
         "(value=1)."),         ModelCorrespondence {"CIM_Controller.ProtocolSupported"},
        ModelCorrespondence {"CIM_WakeUpService.FilterType"}         MappingStrings {"MIF.DMTF|Bus Port|003"} ]
       ]      string ProtocolDescription;
    string OtherFilterTypeDescription;  
 }; };
  
 // ===================================================================  
 // Modem  
 // ===================================================================  
    [Abstract,  
     Description (  
        "CIM_Modem is the superclass for grouping the numerous types "  
        "of Modems.")  
    ]  
 class CIM_Modem : CIM_LogicalDevice  
 {  
 };  
  
 // =================================================================== // ===================================================================
 // OOBAlertServiceOnModem  // ControlledBy
 // =================================================================== // ===================================================================
    [Association,     [Association, Description (
     Description (       "The ControlledBy relationship indicates which Devices are "
        "OOBAlertServiceOnModem defines where the out of band alerting "       "commanded by or accessed through the Controller LogicalDevice.") ]
        "Service is implemented. The Service can either employ a Modem "  class CIM_ControlledBy : CIM_DeviceConnection {
        "or NetworkAdapter to send alerts.")  
    ]  
 class CIM_OOBAlertServiceOnModem : CIM_DeviceServiceImplementation  
 {  
       [Override ("Antecedent"),       [Override ("Antecedent"),
        Description ("The Modem which implements the alerting Service."),         Description ("The Controller.") ]
        Max (1)     CIM_Controller REF Antecedent;
       ]  
    CIM_Modem REF Antecedent;  
       [Override ("Dependent"),       [Override ("Dependent"),
        Description ("The alerting Service provided on the Modem.")         Description ("The controlled Device.") ]
       ]     CIM_LogicalDevice REF Dependent;
    CIM_OOBAlertService REF Dependent;        [Description (
           "The State property indicates whether the Controller is "
           "actively commanding or accessing the Device (value=1) or "
           "not (value=2).  Also, the value, \"Unknown\" (0), can be "
           "defined. This information is necessary when a LogicalDevice "
           "can be commanded by, or accessed through, multiple "
           "Controllers."),
          Values {"Unknown", "Active", "Inactive"} ]
      uint16 AccessState;
         [Description (
           "The time that the downstream Device was last reset by "
           "the Controller.") ]
      datetime TimeOfDeviceReset;
         [Description (
           "Number of hard resets issued by the Controller. A hard reset "
           "returns the Device to its initialization or 'boot-up' state. "
           "All internal Device state information and data are lost."),
          Counter ]
      uint32 NumberOfHardResets;
         [Description (
           "Number of soft resets issued by the Controller. A soft "
           "reset does not completely clear current Device state and/or "
           "data. Exact semantics are dependent on the Device, and on "
           "the protocols and mechanisms used to communicate to it."),
          Counter ]
      uint32 NumberOfSoftResets;
 }; };
  
 // ===================================================================  
 // WakeUpServiceOnModem  
 // ===================================================================  
    [Association,  
     Description (  
        "WakeUpServiceOnModem defines where the WakeUpService is "  
        "implemented. The Service can either employ a Modem or "  
        "NetworkAdapter to receive a wakeup signal.")  
    ]  
 class CIM_WakeUpServiceOnModem : CIM_DeviceServiceImplementation  
 {  
       [Override ("Antecedent"),  
        Description ("The Modem which implements the WakeUpService."),  
        Max (1)  
       ]  
    CIM_Modem REF Antecedent;  
       [Override ("Dependent"),  
        Description ("The wakeup Service provided on the Modem.")  
       ]  
    CIM_WakeUpService REF Dependent;  
 };  
  
 // =================================================================== // ===================================================================
 // ConnectionBasedModem  // SerialController
 // =================================================================== // ===================================================================
    [Abstract,  
     Description (  
        "CIM_ConnectionBasedModem is the superclass for grouping the "  
        "numerous types of connection-based Modems. A CableModem is a "  
        "type of connection-based Modem.")  
    ]  
 class CIM_ConnectionBasedModem : CIM_Modem  
 {  
       [Description (       [Description (
         "VendorID information is reported via Modem-specific requests. "       "Capabilities and management of the SerialController.") ]
         "For example, for ADSLModem Devices the VendorID is assigned by "  class CIM_SerialController : CIM_Controller {
         "T1E1.4 according to T1.413, Appendix D. The correct place in "        [Description (
         "the CIM Schema for this information is in PhysicalElement "          "The Capabilities property defines chip level compatibility "
         "(the Manufacturer property) for hardware and Product (the "          "for the SerialController.  Therefore, this property describes "
         "Vendor property) if the information is related to Product "          "the buffering and other capabilities of the SerialController, "
         "acquisition. This data is also reported here since it is part "          "that may be inherent in the chip hardware. The property is "
         "of the standard output from the Device, and as an "          "an enumerated integer."),
         "optimization.")         ArrayType ("Indexed"),
       ]         ValueMap {"1", "2", "3", "4", "5", "6", "160", "161"},
    string VendorID;         Values {"Other", "Unknown", "XT/AT Compatible",
                  "16450 Compatible", "16550 Compatible",
                  "16550A Compatible", "8251 Compatible",
                  "8251FIFO Compatible"},
          MappingStrings {"MIF.DMTF|Serial Ports|004.7"},
          ModelCorrespondence {
           "CIM_SerialController.CapabilityDescriptions"} ]
      uint16 Capabilities[];
         [Description (
           "An array of free-form strings providing more detailed "
           "explanations for any of the SerialController features "
           "indicated in the Capabilities array. Note, each entry of "
           "this array is related to the entry in the Capabilities "
           "array that is located at the same index."),
          ArrayType ("Indexed"),
          ModelCorrespondence {"CIM_SerialController.Capabilities"} ]
      string CapabilityDescriptions[];
         [Description (
           "Maximum baud rate in Bits per Second supported by the "
           "SerialController."),
          Units ("Bits per Second"),
          MappingStrings {"MIF.DMTF|Serial Ports|004.6"} ]
      uint32 MaxBaudRate;
         [Description (
           "An enumeration indicating the operational security for the "
           "Controller. For example, information that the Device's "
           "external interface is locked out (value=4) or \"Boot "
           "Bypass\" (value=6) can be described using this property."),
          ValueMap {"1", "2", "3", "4", "5", "6"},
          Values {"Other", "Unknown", "None",
                  "External Interface Locked Out",
                  "External Interface Enabled", "Boot Bypass"},
          MappingStrings {"MIF.DMTF|Serial Ports|004.9"} ]
      uint16 Security;
 }; };
  
 // ===================================================================  
 // DSLModem  
 // ===================================================================  
    [Description (  
        "The DSLModem class represents the superclass for Digital "  
        "Subscriber Line (DSL) Devices. Properties "  
        "will be defined in a future release of the model.")  
    ]  
 class CIM_DSLModem : CIM_ConnectionBasedModem  
 {  
 };  
  
 // =================================================================== // ===================================================================
 // VDSLModem  // SerialInterface
 // =================================================================== // ===================================================================
      [Association, Description (
        "SerialInterface is a ControlledBy relationship indicating "
        "which Devices are accessed through the SerialController and "
        "the characteristics of this access.") ]
   class CIM_SerialInterface : CIM_ControlledBy {
         [Override ("Antecedent"),  Description (
           "The SerialController.") ]
      CIM_SerialController REF Antecedent;
         [Override ("NegotiatedDataWidth"), Description (
           "For the SerialInterface, NegotiatedDataWidth is the number "
           "of data bits to be transmitted, without stop bits or parity."),
          Units ("Bits") ]
      uint32 NegotiatedDataWidth;
         [Description ("Number of stop bits to be transmitted."),
          Units ("Bits") ]
      uint16 NumberOfStopBits;
    [Description (    [Description (
        "The VDSLmodem class represents Modems of the DSL type = "          "Information on the parity setting for transmitted data. "
        "VDSL, Very high data rate Digital Subscriber Line. Properties "          "No parity (value=1), even (2) or odd (3) can be specified."),
        "will be defined in a future release of the model.")         Values {"Unknown", "None", "Even", "Odd"} ]
    ]     uint16 ParityInfo;
 class CIM_VDSLModem : CIM_DSLModem  
 {  
 };  
   
 // ===================================================================  
 // HDSLModem  
 // ===================================================================  
    [Description (    [Description (
        "The HDSLModem class represents Modems of the DSL type = "          "An integer enumeration indicating the flow control "
        "HDSL, High data rate Digital Subscribe Line, capable of "          "(Xon-Xoff and/or RTS/CTS) for transmitted data."),
        "delivering T1 or E1 speeds. Properties will be defined in a "         Values {"Unknown", "Not Supported", "None", "XonXoff",
        "future release of the model.")                 "RTS/CTS", "Both XonXoff and RTS/CTS"} ]
      uint16 FlowControlInfo;
    ]  
 class CIM_HDSLModem : CIM_DSLModem  
 {  
 }; };
  
 // ===================================================================  
 // SDSLModem  
 // ===================================================================  
    [Description (  
        "The SDSLModem class represents Modems of the DSL type = "  
        "SDSL, Symmetric Digital Subscriber Line. Properties "  
        "will be defined in a future release of the model.")  
    ]  
 class CIM_SDSLModem : CIM_DSLModem  
 {  
 };  
  
 // =================================================================== // ===================================================================
 // ADSLModem  // SCSIController
 // =================================================================== // ===================================================================
    [Description (    [Description (
        "The ADSLModem class represents Modems of the DSL type = ADSL, "       "Capabilities and management of the SCSIController.") ]
        "Asymmetric Digital Subscriber Line.")  class CIM_SCSIController : CIM_Controller   {
    ]  
 class CIM_ADSLModem : CIM_DSLModem  
 {  
       [Description (       [Description (
         "Noise Margin of this Modem with respect to its received signal, "          "An integer enumeration indicating whether or not the "
         "in tenths of dB."),          "SCSIController provides redundancy or protection against "
       Units ("Tenths of Decibels")          "device failures."),
       ]         ValueMap {"1", "2", "3", "4", "5", "6"},
    uint32 NoiseMargin;         Values {"Other", "Unknown", "Unprotected", "Protected",
       [Gauge, Description (                 "Protected through SCC (SCSI-3 Controller Command)",
         "Measured difference in the total power transmitted by the peer "                 "Protected through SCC-2 (SCSI-3 Controller Command)"},
         "Modem and the total power received by this Modem. This is "         MappingStrings {"MIF.DMTF|Storage Controller|001.3"} ]
         "measured in tenths of dB."),     uint16 ProtectionManagement;
        Units ("Tenths of Decibels")  
       ]  
    uint32 LineAttenuation;  
       [Description (       [Description (
         "Status indicates the current state of the connection (line). The "          "Maximum data width (in bits) supported by the SCSI"
         "property holds a bitmap describing the possible conditions. "          "Controller."),
         "For example, 1) No Defect - There no defects on the line; "         Units ("Bits"),
         "2) Loss Of Framing - ATUR failure due to not receiving valid frame; "         MappingStrings {"MIF.DMTF|Bus Port|003"} ]
         "4) Loss Of Signal - ATUR failure due to not receiving signal; "     uint32 MaxDataWidth;
         "8) Loss Of Power - ATUR failure due to loss of power; "  
         "32) Loss Of Signal Quality - Loss of Signal Quality is declared "  
         "when the NoiseMargin falls below the minimum NoiseMargin, or the "  
         "bit-error-rate exceeds 10^-7."),  
        ValueMap {"1", "2", "4", "8", "32"},  
        Values {"No Defect", "Loss Of Framing", "Loss Of Signal",  
              "Loss Of Power", "Loss Of Signal Quality"}  
       ]  
    uint32 LineState;  
       [Gauge, Description (  
         "Measured total output power (in tenths of dB) transmitted by "  
         "this Modem."),  
        Units ("Tenths of Decibels")  
       ]  
    uint32 TotalOutputPower;  
       [Description (       [Description (
         "Indicates the maximum currently attainable data rate for the Modem. "          "Maximum transfer rate (in Bits per Second) supported by the "
         "This value will be equal or greater than the current line rate."),          "SCSIController."),
        Units ("Bits per Second")         Units ("Bits per Second"),
       ]         MappingStrings {"MIF.DMTF|Bus Port|003"} ]
    uint32 MaxDataRate;     uint64 MaxTransferRate;
         [Description (
           "Number of SCSIController timeouts that have occurred since "
           "the TimeOfLastReset."),
          Counter ]
      uint32 ControllerTimeouts;
         [Description (
           "Signal capabilities that can be supported by the SCSI"
           "Controller. For example, the Controller may support "
           "\"Single Ended\" and \"Differential\". In this case, the "
           "values 3 and 4 would be written to the Signal"
           "Capabilities array."),
          ValueMap {"1", "2", "3", "4", "5", "6"},
          Values {"Other", "Unknown", "Single Ended", "Differential",
                  "Low Voltage Differential", "Optical"},
          ModelCorrespondence {"CIM_SCSIInterface.SCSISignal"} ]
      uint16 SignalCapabilities[];
 }; };
  
   
 // =================================================================== // ===================================================================
 // CableModem  // SCSIInterface
 // =================================================================== // ===================================================================
      [Association, Description (
        "SCSIInterface is a ControlledBy relationship indicating "
        "which Devices are accessed through a SCSIController and "
        "the characteristics of this access.") ]
   class CIM_SCSIInterface : CIM_ControlledBy {
         [Override ("Antecedent"),
          Description ("The SCSIController.") ]
      CIM_SCSIController REF Antecedent;
    [Description (    [Description (
        "The CableModem class represents a device for transmission "          "Number of SCSI timeouts that have occurred since last hard "
        "across a cable infrastructure.")          "or soft reset related to the controlled Device. The time of "
    ]          "last reset is indicated in the TimeOfDeviceReset property, "
 class CIM_CableModem: CIM_ConnectionBasedModem          "inherited from the ControlledBy association."),
 {         Counter ]
      uint32 SCSITimeouts;
         [Description (
           "Number of SCSI retries that have occurred since last hard "
           "or soft reset related to the controlled Device. The time of "
           "last reset is indicated in the TimeOfDeviceReset property, "
           "inherited from the ControlledBy association."),
          Counter,
          MappingStrings {"MIF.DMTF|Mass Storage Statistics|001.18"}  ]
      uint32 SCSIRetries;
         [Description ("The SCSI Initiator ID."),
          MappingStrings {"MIF.DMTF|Bus Port|003"} ]
      uint32 InitiatorId;
         [Description ("The SCSI Target ID."),
          MappingStrings {"MIF.DMTF|Bus Port|003"} ]
      uint32 TargetId;
         [Description ("The SCSI Target LUN."),
          MappingStrings {"MIF.DMTF|Storage Devices|001.4"} ]
      uint64 TargetLUN;
         [Description (
           "SCSIReservation indicates the type of SCSI reservation "
           "that currently exists between the source and destination."),
          Values {"Unknown", "None", "Simple", "Persistent"} ]
      uint16 SCSIReservation;
         [Description (
           "The SCSI signal characteristics being used for this "
           "connection. The value listed here must also be listed in "
           "the SCSIController's SignalCapabilities field."),
          ValueMap {"1", "2", "3", "4", "5", "6"},
          Values {"Other", "Unknown", "Single Ended", "Differential",
                  "Low Voltage Differential", "Optical"},
          MappingStrings {"MIF.DMTF|Bus Port|003"},
          ModelCorrespondence {"CIM_SCSIController.SignalCapabilities"} ]
      uint16 SCSISignal;
         [Description (
           "Maximum number of Command Descriptor Blocks (CDBs) that "
           "can be supported by the target. This data can not be "
           "obtained under all circumstances.") ]
      uint32 MaxQueueDepth;
         [Description (
           "The maximum number of concurrent Command Descriptor Blocks "
           "(CDBs) that the initiator will send to the target. This "
           "value should never be greater than MaxQueueDepth.") ]
      uint32 QueueDepthLimit;
 }; };
  
   
 // =================================================================== // ===================================================================
 // CallBasedModem  // VideoController
 // =================================================================== // ===================================================================
    [Abstract,  
     Description (  
        "CIM_CallBasedModem is the superclass for grouping the numerous "  
        "types of call-based modems. The POTSModem is a type of call-"  
        "based Modem.")  
    ]  
 class CIM_CallBasedModem : CIM_Modem  
 {  
       [Description (       [Description (
         "Indicates whether online fallback is enabled, to be negotiated "       "Capabilities and management of the VideoController.") ]
         "by the Modem.")  class CIM_VideoController : CIM_Controller   {
       ]  // Override is used to define the MappingString qualifier
    boolean FallbackEnabled;        [Override ("Description"),
          MappingStrings {"MIF.DMTF|Video|004.18"} ]
      string Description;
       [Description (       [Description (
         "An array enumerating all the compression protocols supported "          "A free-form string describing the video processor/Controller.") ]
         "by the Modem."),     string VideoProcessor;
        Values {"Unknown", "Other", "No Compression", "MNP 5", "V.42bis",        [Description (
              "MNP 3", "MNP 4", "V.58", "PEP", "HST"},          "An integer enumeration indicating the type of video memory."),
          ValueMap {"1", "2", "3", "4", "5", "6", "7", "8", "9", "10",
                    "11", "12", "13"},
          Values {"Other", "Unknown", "VRAM", "DRAM", "SRAM", "WRAM",
                  "EDO RAM", "Burst Synchronous DRAM",
                  "Pipelined Burst SRAM", "CDRAM", "3DRAM", "SDRAM",
                  "SGRAM"},
          MappingStrings {"MIF.DMTF|Video|004.6"} ]
      uint16 VideoMemoryType;
         [Description (
           "Number of video pages supported given the current resolutions "
           "and available memory.") ]
      uint32 NumberOfVideoPages;
         [Description ("Maximum amount of memory supported in bytes."),
          Units ("Bytes") ]
      uint32 MaxMemorySupported;
         [Description (
           "An array of integers indicating the graphics and 3D "
           "capabilities of the VideoController."),
          Values {"Unknown", "Other", "Graphics Accelerator",
                  "3D Accelerator"},
        ModelCorrespondence {        ModelCorrespondence {
              "CIM_CallBasedModem.OtherCompressionDescription"}        "CIM_VideoController.CapabilityDescriptions"} ]
       ]     uint16 AcceleratorCapabilities[];
    uint16 CompressionSupported[];  
       [Description (       [Description (
         "Description of the compression type when \"Other \" (value=1) "          "An array of free-form strings providing more detailed "
         "is defined in the CompressionSupported array. If there are "          "explanations for any of the video Accelerator features "
         "multiple \"Other\" types, then combine their descriptions into "          "indicated in the Capabilities array. Note, each entry "
         "a single string."),          "of this array is related to the entry in the Capabilities "
       ModelCorrespondence {"CIM_CallBasedModem.CompressionSupported"}          "array that is located at the same index."),
       ]         ArrayType ("Indexed"),
    string OtherCompressionDescription;         ModelCorrespondence {
           "CIM_VideoController.AcceleratorCapabilities"} ]
      string CapabilityDescriptions[];
         [Description ("The number of bits used to display each pixel."),
          Units ("Bits"),
          MappingStrings {"MIF.DMTF|Video|004.12"} ]
      uint32 CurrentBitsPerPixel;
         [Description ("Current number of horizontal pixels."),
          Units ("Pixels"),
          MappingStrings {"MIF.DMTF|Video|004.11"} ]
      uint32 CurrentHorizontalResolution;
         [Description ("Current number of vertical pixels."),
          Units ("Pixels"),
          MappingStrings {"MIF.DMTF|Video|004.10"} ]
      uint32 CurrentVerticalResolution;
       [Description (       [Description (
           "Describes the current data compression characteristics of the "          "Maximum refresh rate of the VideoController in Hertz."),
           "Modem. "),         Units ("Hertz"),
        Values {"Unknown", "Other", "No Compression", "MNP 5", "V.42bis",         MappingStrings {"MIF.DMTF|Video|004.5"} ]
              "MNP 3", "MNP 4", "V.58", "PEP", "HST"},     uint32 MaxRefreshRate;
        ModelCorrespondence {"CIM_CallBasedModem.CompressionSupported",  
              "CIM_CallBasedModem.OtherCompressionInfoDescription"}  
       ]  
    uint16 CompressionInfo;  
       [Description (       [Description (
         "Description of the current compression type when \"Other\" "          "Minimum refresh rate of the Video Controller in Hertz."),
         "(value=1) is specified in the CompressionInfo property."),         Units ("Hertz"),
        ModelCorrespondence {"CIM_CallBasedModem.CompressionInfo"}         MappingStrings {"MIF.DMTF|Video|004.4"} ]
       ]     uint32 MinRefreshRate;
    string OtherCompressionInfoDescription;        [Description ("Current refresh rate in Hertz."),
          Units ("Hertz"),
          MappingStrings {"MIF.DMTF|Video|004.15"} ]
      uint32 CurrentRefreshRate;
         [Description (
           "Current scan mode. \"Interlaced\" (value=3) or "
           "\"Non Interlaced\" (4) can be defined using this property."),
          ValueMap {"1", "2", "3", "4"},
          Values {"Other", "Unknown", "Interlaced", "Non Interlaced"},
          MappingStrings {"MIF.DMTF|Video|004.8"} ]
      uint16 CurrentScanMode;
         [Description (
           "If in character mode, number of rows for this Video"
           "Controller. Otherwise, enter 0."),
          MappingStrings {"MIF.DMTF|Video|004.13"} ]
      uint32 CurrentNumberOfRows;
         [Description (
           "If in character mode, number of columns for this "
           "VideoController. Otherwise, enter 0."),
          MappingStrings {"MIF.DMTF|Video|004.14"} ]
      uint32 CurrentNumberOfColumns;
         [Description (
           "Number of colors supported at the current resolutions.") ]
      uint64 CurrentNumberOfColors;
   };
   
   
   // ===================================================================
   // PCVideoController
   // ===================================================================
       [Description (       [Description (
         "An array enumerating all the modulation protocols supported by "       "Capabilities and management of a PCVideoController, a subtype "
         "the Modem. The beginning entries in the Values qualifier array "       "of VideoController.") ]
         "are mapped from the CIM_POTSModem ModulationScheme property."),  class CIM_PCVideoController : CIM_VideoController   {
        Values {"Unknown", "Other", "Not Supported", "Bell 103",  
              "Bell 212A", "V.22bis", "V.32", "V.32bis", "V.terbo",  
              "V.FC", "V.34", "V.34bis", "V.17 (G3 Fax Call)", "V.21",  
              "V.22", "V.23 Constant Carrier (1200/75)",  
              "V.23 Switched Carrier (Half Duplex)", "V.26bis",  
              "V.26ter", "V.27ter (G3 Fax Call)",  
              "V.29 HD (G3 Fax Call)", "V.34 HD (G3 Fax Call)",  
              "V.90 Issue 1 (Asymmetric)", "V.90 Issue 2 (Symmetric)",  
              "V.58", "X2", "K56FLEX", "V.Fast", "PEP", "HST"},  
        ModelCorrespondence {  
              "CIM_CallBasedModem.OtherModulationDescription"}  
       ]  
    uint16 ModulationSupported[];  
       [Description (       [Description (
         "Description of the current modulation type when \"Other\" "          "The video architecture.  For example, VGA (value=5) or "
         "(value=1) is specified in the ModulationSupported property. "          "PC-98 (160) may be specified."),
         "If there are multiple \"Other\" types, then combine their "         ValueMap {"1", "2", "3", "4", "5", "6", "7", "8", "9", "10",
         "descriptions into a single string."),                   "11", "12", "160"},
        ModelCorrespondence {"CIM_CallBasedModem.ModulationSupported"}         Values {"Other", "Unknown", "CGA", "EGA", "VGA", "SVGA", "MDA",
       ]                 "HGC", "MCGA", "8514A", "XGA", "Linear Frame Buffer",
    string OtherModulationDescription;                 "PC-98"},
          MappingStrings {"MIF.DMTF|Video|004.2"} ]
      uint16 VideoArchitecture;
         [Description ("Current video mode."),
          MappingStrings {"MIF.DMTF|Video|004.3"} ]
      uint16 VideoMode;
       [Description (       [Description (
         "Describes the current modulation scheme of the Modem."),          "Current number of color planes.  If this value is not "
        Values {"Unknown", "Other", "Not Supported", "Bell 103",          "applicable for the current video configuration, enter 0.") ]
              "Bell 212A", "V.22bis", "V.32", "V.32bis", "V.terbo",     uint16 NumberOfColorPlanes;
              "V.FC", "V.34", "V.34bis", "V.17 (G3 Fax Call)", "V.21",  };
              "V.22", "V.23 Constant Carrier (1200/75)",  
              "V.23 Switched Carrier (Half Duplex)", "V.26bis",  
              "V.26ter", "V.27ter (G3 Fax Call)",  // ===================================================================
              "V.29 HD (G3 Fax Call)", "V.34 HD (G3 Fax Call)",  // AGPVideoController
              "V.90 Issue 1 (Asymmetric)", "V.90 Issue 2 (Symmetric)",  // ===================================================================
              "V.58", "X2", "K56FLEX", "V.Fast", "PEP", "HST"},  
        ModelCorrespondence {"CIM_CallBasedModem.ModulationSupported",  
              "CIM_CallBasedModem.OtherSchemeDescription"}  
       ]  
    uint16 ModulationScheme;  
       [Description (       [Description (
         "Description of the current modulation type when \"Other\" "       "Capabilities and management of an AGPVideoController.") ]
         "(value=1) is specified in the ModulationScheme property."),  class CIM_AGPVideoController: CIM_VideoController {
        ModelCorrespondence {"CIM_CallBasedModem.ModulationScheme"}  
       ]  
    string OtherSchemeDescription;  
       [Description (       [Description (
         "An array enumerating the error control protocols supported "          "Capabilities of the AGP Graphics Controller. For example, "
         "by the Modem. The beginning entries in the Values qualifier "          "the Device may support multiple monitors, PCI Mastering and "
         "array are mapped from the CIM_POTSModem ErrorControlInfo "          "large memory addresses. In this case, the values 3, 4 and 6 "
         "property."),          "would be written to the Capabilities array."),
        Values {"Unknown", "Other", "No Error Correction", "MNP 4",         ArrayType("Indexed"),
              "LAPM", "V.58", "ECP Enhanced Cellular Protocol",         Values { "Unknown", "Other", "PCI Fast Write",
              "ETC Enhanced Throughput Cellular", "MNP 1", "MNP 2",                  "MultiMonitor Support", "PCI Mastering",
              "MNP 3", "MNP10", "PEP", "HST"},                  "Second Monochrome Adapter Support",
                   "Large Memory Address Support"},
        ModelCorrespondence {        ModelCorrespondence {
              "CIM_CallBasedModem.OtherErrorControlDescription"}          "CIM_AGPVideoController.CapabilityDescriptions"} ]
       ]     uint16 Capabilities[];
    uint16 ErrorControlSupported[];  
       [Description (       [Description (
         "Description of the error control type when \"Other\" (value="          "An array of free form strings providing more detailed "
         "1) is specified in the ErrorControlSupported property. If "          "explanations for any of the entries in the Capabilities "
         "there are multiple \"Other\" types, then combine their "          "array. Note, each entry of this array is related to the "
         "descriptions into a single string."),          "entry in the Capabilities array that is located at the "
        ModelCorrespondence {          "same index."),
              "CIM_CallBasedModem.ErrorControlSupported"}         ArrayType("Indexed"),
       ]         ModelCorrespondence{"CIM_AGPVideoController.Capabilities"} ]
    string OtherErrorControlDescription;     string CapabilityDescriptions[];
         [Description ("Size of the non-local video memory in KB."),
          Units ("KiloBytes") ]
      uint32 NonlocalVideoMemorySize;
       [Description (       [Description (
           "Describes the current error correction characteristics of the "          "Width of the internal bus in the graphics Controller, in bits."),
         "Modem."),         Units ("Bits") ]
        Values {"Unknown", "Other", "No Error Correction", "MNP 4",     uint32 LocalBusWidth;
              "LAPM", "V.58", "ECP Enhanced Cellular Protocol",  
              "ETC Enhanced Throughput Cellular", "MNP 1", "MNP 2",  
              "MNP 3", "MNP10", "PEP", "HST"},  
        ModelCorrespondence {"CIM_CallBasedModem.ErrorControlSupported",  
              "CIM_CallBasedModem.OtherErrorControlInfoDescription"}  
       ]  
    uint16 ErrorControlInfo;  
       [Description (       [Description (
         "Description of the error control when \"Other\" (value=1) "          "An integer enumeration indicating the usage model of the "
         "is defined as the value of the ErrorControlInfo property."),          "graphics Controller. Usage model indicates how the Controller "
        ModelCorrespondence {"CIM_CallBasedModem.ErrorControlInfo"}          "does manipulations of graphics surfaces, textures, etc. in "
       ]          "memory. DMA indicates that the graphics Controller brings "
    string OtherErrorControlInfoDescription;          "structures from the system memory to its local memory to "
       [Description ("Time of last reset of the Modem.")]          "perform needed manipulations or renderings. Execute specifies "
    datetime TimeOfLastReset;          "that the graphics Controller can directly access a specified "
           "region in main memory (called the graphics aperture) using GART "
           "- Graphics Aperture Remapping Table. It then performs "
           "manipulations in that range as if that whole graphics aperture "
           "were part of its local memory. A value of \"Both\" DMA and "
           "Execute models may also be specified."),
          Values {"Unknown", "Other", "Execute", "DMA", "Both"} ]
      uint16 UsageModel;
       [Description (       [Description (
         "The rate at which the receiver and transmitter are or were "          "An integer enumeration indicating the data transfer rate of "
         "last cooperating, on a call, before disconnection."),          "the graphics Controller."),
        Units ("Bits per Second")         Values {"Unknown", "Other", "1X", "2X", "4X"} ]
       ]     uint16 DataTransferRate;
    uint32 CallSpeed;  
       [Description (       [Description (
         "Status of the Modem. For example, information regarding "          "An integer enumeration indicating the addressing mode of the "
         "modem negotiation or whether the modem is connected (values "          "graphics Controller."),
         "8 and 9, respectively) can be conveyed in this property."),         Values {"Unknown", "Other", "Sideband", "Pipeline"} ]
        Values {"Unknown", "Other", "Offline", "On Hook", "Dialing",     uint16 AddressingMode;
              "Waiting for Answer", "Ringing", "Modem Detected",  
              "Negotiating", "Online", "Error"}  
       ]  
    uint16 CallStatus;  
       [Description (       [Description (
         "Total number of characters sent by the Device on the last "          "The maximum number of AGP Transaction requests that the master "
         "or current call. That a call is in-progress is indicated by "          "(AGP Graphics Controller) is allowed to enqueue into the target.") ]
         "the CallStatus property."),     uint32 MaximumAGPCommandQueuePath;
        Counter  
       ]  
    uint32 CharsSent;  
       [Description (       [Description (
         "Total number of characters received by the Device on the last "          "The number of AGP Transaction that the core logic (chipset) can "
         "or current call. That a call is in-progress is indicated by the "          "accept into its transaction request queue from the Controller.") ]
         "CallStatus property."),     uint32 MaxNumberOfPipelinedAGPTransactions;
        Counter        [Description ("Size of the graphics aperture in KB."),
       ]         Units ("KiloBytes") ]
    uint32 CharsReceived;     uint32 GraphicsApertureSize;
       [Description (       [Description (
         "Total number of characters lost by the Device on the last or "          "A string containing the AGP specification version to which this "
         "current call. That a call is in-progress is indicated by the "          "graphics Controller conforms.") ]
         "CallStatus property."),     string AGPSpecificationVersionConformance;
        Counter  };
       ]  
    uint32 CharsLost;  
   // ===================================================================
   // ParallelController
   // ===================================================================
       [Description (       [Description (
         "Total number of blocks sent by the Device on the last or "       "Capabilities and management of the ParallelController.") ]
         "current call. That a call is in-progress is indicated by the "  class CIM_ParallelController : CIM_Controller {
         "CallStatus property."),  
        Counter  
       ]  
    uint32 BlocksSent;  
       [Description (       [Description (
         "Total number of blocks resent by the Device on the last or "          "Set to true if the ParallelController supports DMA."),
         "current call. That a call is in-progress is indicated by the "         MappingStrings {"MIF.DMTF|Parallel Ports|003.7"} ]
         "CallStatus property."),     boolean DMASupport;
        Counter  
       ]  
    uint32 BlocksResent;  
       [Description (       [Description (
         "Total number of blocks received by the Device on the last or "          "An integer enumeration indicating the capabilities of the "
         "current call. That a call is in-progress is indicated by the "          "ParallelController."),
         "CallStatus property."),         ArrayType ("Indexed"),
        Counter         Values {"Unknown", "Other", "XT/AT Compatible",
       ]                 "PS/2 Compatible", "ECP", "EPP", "PC-98",
    uint32 BlocksReceived;                 "PC-98-Hireso", "PC-H98"},
          MappingStrings {"MIF.DMTF|Parallel Ports|003.8"},
          ModelCorrespondence {
           "CIM_ParallelController.CapabilityDescriptions"} ]
      uint16 Capabilities[];
       [Description (       [Description (
         "Total number of block errors seen by the Device on the last "          "An array of free-form strings providing more detailed "
         "or current call. That a call is in-progress is indicated by the "          "explanations for any of the ParallelController features "
         "CallStatus property."),          "indicated in the Capabilities array. Note, each entry of "
        Counter          "this array is related to the entry in the Capabilities "
       ]          "array that is located at the same index."),
    uint32 BlockErrors;         ArrayType ("Indexed"),
          ModelCorrespondence {"CIM_ParallelController.Capabilities"} ]
      string CapabilityDescriptions[];
       [Description (       [Description (
         "Length of the last or current call. That a call is in-progress "          "An enumeration indicating the operational security for the "
         "is indicated by the CallStatus property. The 'interval' "          "Controller. For example, information that the Device's "
         "format of the datetime data type should be used for the property "          "external interface is locked out (value=4) or \"Boot "
         "value.")          "Bypass\" (value=6) can be described using this property."),
       ]         ValueMap {"1", "2", "3", "4", "5", "6"},
    datetime CallLength;         Values {"Other", "Unknown", "None",
                  "External Interface Locked Out",
                  "External Interface Enabled", "Boot Bypass"},
          MappingStrings {"MIF.DMTF|Parallel Ports|003.10"} ]
      uint16 Security;
   };
   
   
   // ===================================================================
   // SSAController
   // ===================================================================
       [Description (       [Description (
         "Last or current number dialed to which the statistics apply, or "       "Capabilities and management of an SSAController (Serial "
         "NULL if the call was incoming.")       "Storage Architecture).") ]
       ]  class CIM_SSAController : CIM_Controller {
    string NumberDialed;  
 }; };
  
   
   
 // =================================================================== // ===================================================================
 // ISDNModem  // ManagementController
 // =================================================================== // ===================================================================
    [Description (    [Description (
        "The ISDNModem class, a kind of call-based Modem. Properties "       "Capabilities and managment of a ManagementController.  An I2C "
        "will be defined in a future release of the model.")       "microcontroller is a type of ManagementController.") ]
    ]  class CIM_ManagementController : CIM_Controller {
 class CIM_ISDNModem: CIM_CallBasedModem  
 {  
 }; };
  
  
 // =================================================================== // ===================================================================
 // POTSModem  // IDEController
 // =================================================================== // ===================================================================
    [Description (    [Description (
        "The POTSModem class represents a Device that translates "       "Capabilities and management of an IDEController.") ]
        "binary data into wave modulations for sound based "  class CIM_IDEController : CIM_Controller {
        "transmission.  It connects to the POTS (Plain Old Telephone "  };
        "System) network.")  
    ]  
 class CIM_POTSModem : CIM_CallBasedModem  // ===================================================================
 {  // InfraredController
   // ===================================================================
       [Description (       [Description (
         "Capabilities of the POTSModem. For example, the Device "       "Capabilities and management of an InfraredController.") ]
         "may support distinctive ring, caller ID, fax, voice, etc."),  class CIM_InfraredController : CIM_Controller {
   };
   
   
   // ===================================================================
   // PCIController
   // ===================================================================
      [Description (
        "PCIController is a superclass for the PCIBridge and PCIDevice "
        "classes. These classes model adapters and bridges on a PCI "
        "bus. The properties in PCIController and its subclasses are "
        "defined in the various PCI Specifications published by the "
        "PCI SIG.") ]
   class CIM_PCIController : CIM_Controller {
         [Description (
           "Current contents of the register that provides basic "
           "control over the device's ability to respond "
           "to, and/or perform PCI accesses.") ]
      uint16 CommandRegister;
         [Description (
           "An array of integers indicating controller capabilities. "
           "Information such as \"Supports 66MHz\" (value=2) is "
           "specified in this property. The data in the Capabilities array "
           "is gathered from the PCI Status Register and the PCI "
           "Capabilities List as defined in the PCI Specification."),
        ArrayType ("Indexed"),        ArrayType ("Indexed"),
        Values {"Unknown", "Other", "Distinctive Ring", "Caller ID",         Values {"Unknown", "Other", "Supports 66MHz",
              "Voice", "Fax Class 1", "Fax Class 2", "WakeOnRing",                 "Supports User Definable Features",
              "Fax Group 3", "GSM Support", "AMPS Support",                 "Supports Fast Back-to-Back Transactions",
              "OOB Alerting", "Worldwide Country Support"},                 "PCI-X Capable", "PCI Power Management Supported",
        ModelCorrespondence {"CIM_POTSModem.CapabilityDescriptions"}                 "Message Signaled Interrupts Supported",
       ]                 "Parity Error Recovery Capable",
                  "AGP Supported", "Vital Product Data Supported",
                  "Provides Slot Identification", "Hot Swap Supported"},
          ModelCorrespondence {"CIM_PCIController.CapabilityDescriptions"} ]
    uint16 Capabilities[];    uint16 Capabilities[];
       [Description (       [Description (
         "An array of free-form strings providing more detailed "         "An array of free-form strings providing more detailed "
         "explanations for any of the POTSModem features indicated "          "explanations for any of the PCIController features indicated "
         "in the Capabilities array. Note, each entry of this array "         "in the Capabilities array. Note, each entry of this array "
         "is related to the entry in the Capabilities array that "         "is related to the entry in the Capabilities array that "
         "is located at the same index."),         "is located at the same index."),
        ArrayType ("Indexed"),        ArrayType ("Indexed"),
        ModelCorrespondence {"CIM_POTSModem.Capabilities"}         ModelCorrespondence {"CIM_PCIController.Capabilities"} ]
       ]  
    string CapabilityDescriptions[];    string CapabilityDescriptions[];
       [Description (       [Description (
         "Specifies which capabilities are enabled from the list of "          "The slowest device select timing for a target device."),
         "ones supported, defined in the Capabilities array."),         Values {"Unknown", "Other", "Fast", "Medium", "Slow",
        Values {"Unknown", "Other", "Distinctive Ring", "Caller ID",                 "Reserved"} ]
              "Voice", "Fax Class 1", "Fax Class 2", "WakeOnRing",     uint16 DeviceSelectTiming;
              "Fax Group 3", "GSM Support", "AMPS Support",  
              "OOB Alerting", "Worldwide Country Support"},  
        ModelCorrespondence {"CIM_POTSModem.Capabilities"}  
       ]  
    uint16 EnabledCapabilities[];  
       [Description (  
           "Defines the maximum settable communication speed "  
           "to the COM Port for an external modem.  Enter 0 if "  
           "not applicable."),  
        Units ("Bits per Second")  
       ]  
    uint32 MaxBaudRateToSerialPort;  
       [Description (  
           "Defines the maximum settable communication speed "  
           "for accessing the phone system."),  
        Units ("Bits per Second")  
       ]  
    uint32 MaxBaudRateToPhone;  
       [Description (  
           "Boolean indicating that synchronous, as well as "  
           "asynchronous, communication is supported.")  
       ]  
    boolean SupportsSynchronousConnect;  
       [Description (  
           "DialType is an integer indicating whether tone (value=1) or "  
           "pulse dialing (value=2) is used. \"Unknown\" (0) can also be "  
           "defined."),  
        Values {"Unknown", "Tone", "Pulse"}  
       ]  
    uint16 DialType;  
       [Description (       [Description (
           "InactivityTimeout defines the time limit (in seconds) "          "Register of 8 bits that identifies the basic function of the "
           "for automatic disconnection of the phone line, if no data "          "PCI device. This is only the upper byte (offset 0Bh) of the "
           "is exchanged.  A value of 0 indicates that this "          "3 byte ClassCode field. Note that the property's ValueMap "
           "feature is present but not enabled."),          "array specifies the decimal representation of this "
        Units ("Seconds")          "information."),
       ]         ValueMap {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9",
    uint32 InactivityTimeout;                   "10", "11", "12", "13", "14", "15", "16", "17",
                    "255"},
                    // values 18-254 reserved for expansion by PCI
          Values {"Pre 2.0", "Mass Storage", "Network", "Display",
                  "Multimedia", "Memory", "Bridge", "Simple Communications",
                  "Base Peripheral", "Input", "Docking Station", "Processor",
                  "Serial Bus", "Wireless", "Intelligent I/O",
                  "Satellite Communication", "Encryption/Decryption",
                  "Data Acquisition and Signal Processing", "Other"} ]
      uint8 ClassCode;
       [Description (       [Description (
           "Describes the volume level of the audible tones from the "          "Specifies the system cache line size in doubleword increments "
           "Modem. For example, high, medium or low volume can be "          "(e.g., a 486-based system would store the value 04h, "
           "reported (values 3, 4 or 5, respectively)."),          "indicating a cache line size of four doublewords."),
        Values {"Unknown", "Other", "Not Supported", "High",         Units ("DoubleWords") ]
                "Medium", "Low", "Off", "Auto"}     uint8 CacheLineSize;
       ]  
    uint16 SpeakerVolumeInfo;  
       [MaxLen (64), Description (  
           "CountriesSupported is an array of strings defining the "  
           "countries in which the POTSModem operates.")  
       ]  
    string CountriesSupported[];  
       [MaxLen (64), Description (  
           "CountrySelected is a string value defining the country "  
           "for which the Modem is currently programmed. When multiple "  
           "countries are supported, this property defines which one "  
           "is currently selected for use.")  
       ]  
    string CountrySelected;  
       [Description (       [Description (
           "Number of rings before the Modem answers an incoming call.")          "Defines the minimum amount of time, in PCI clock cycles, that "
       ]          "the bus master can retain ownership of the bus."),
    uint8 RingsBeforeAnswer;         Units ("PCI clock cycles") ]
      uint8 LatencyTimer;
       [Description (       [Description (
           "MaxNumberOfPasswords specifies the number of passwords "          "Defines the PCI interrupt request pin (INTA# to "
           "definable in the Modem itself.  If this feature is not "          "INTD#) to which a PCI functional device is connected."),
           "supported, enter 0.")         Values {"None", "INTA#", "INTB#", "INTC#", "INTD#", "Unknown"} ]
       ]     uint16 InterruptPin;
    uint16 MaxNumberOfPasswords;  
       [MaxLen (24), Description (  
           "CurrentPasswords is an array containing the currently defined "  
           "passwords for the Modem.  This array may be left blank for "  
           "security reasons.")  
       ]  
    string CurrentPasswords[];  
       [Description (       [Description (
           "Indication of whether the Modem supports call-back.")]          "Doubleword Expansion ROM base memory address."),
    boolean SupportsCallback;         Units ("DoubleWords") ]
      uint32 ExpansionROMBaseAddress;
       [Description (       [Description (
           "AnswerMode defines the current auto-answer/call-back "          "Reports if the PCI device can perform the self test "
           "setting for the Modem."),          "function. Returns bit 7 of the BIST register as a boolean.") ]
        Values {"Unknown", "Other", "Disabled", "Manual Answer",     boolean SelfTestEnabled;
                "Auto Answer", "Auto Answer with Call-Back"}  
       ]  
    uint16 AnswerMode;  
       [Description (       [Description (
         "The current equalization setting for the Modem."),          "Method to invoke PCI device self-test. This method sets bit "
        Values {"Unknown", "Other", "Long", "Short"}          "6 of the BIST register. The return result is the lower "
       ]          "four bits of the BIST register where 0 indicates success and "
    uint16 Equalization;          "non-zero is a device dependent failure. Support for this "
       [Description ("List of black-listed numbers for the Modem.") ]          "method is optional in the PCI Specification.") ]
    string BlackListedNumbers[];     uint8 BISTExecution( );
 }; };
  
   
 // =================================================================== // ===================================================================
 // Unimodem  // PCIDevice
 // =================================================================== // ===================================================================
    [Description (    [Description (
        "Unimodem is a POTSModem that supports the Unimodem 1.0 "       "Capabilities and management of a PCI device controller "
        "Specification.")       "on an adapter card.") ]
    ]  class CIM_PCIDevice : CIM_PCIController {
 class CIM_Unimodem : CIM_POTSModem        [Description ("Array of doubleword base memory addresses.") ]
 {     uint32 BaseAddress[6];
       [Description ("Current call setup result code."),        [Description ("Subsystem identifier code.") ]
        Values {"No Previous Call", "No Dial Tone Detected",     uint16 SubsystemID;
              "Reorder Signal Detected, Network Busy",  
              "Busy Signal Detected", "No Recognized Signal Detected",  
              "Voice Detected", "Text Telephone Detected",  
              "Data Answering Signal Detected",  
              "Data Calling Signal Detected",  
              "Fax Answering Signal Detected",  
              "Fax Calling Signal Detected", "V.8bis Signal Detected"}  
       ]  
    uint16 CallSetupResultCode;  
       [Description ("Current multi-media mode of the Unimodem."),  
        Values {"Data Only", "Fax Only", "Voice Only", "Voice View",  
              "ASVD V.61", "ASVD V.34Q", "DSVD Multi-Tech", "DSVD 1.2",  
              "DSVD V.70", "Video Telephony H.324", "Other V.80 Call"}  
       ]  
    uint16 MultiMediaMode;  
       [Description (  
         "Current DTE-DCE interface mode of the Unimodem, such as "  
         "asynchronous, v.80 transparent or framed synchronous modes."),  
        Values {"Async Data", "V.80 Transparent Synchronous Mode",  
              "V.80 Framed Synchronous Mode"}  
       ]  
    uint16 DTEDCEInterfaceMode;  
       [Description ("The active transmit modulation scheme."),  
        Values {"V.17 (G3 Fax Call)", "V.21", "V.22", "V.22bis",  
              "V.23 Constant Carrier (1200/75)",  
              "V.23 Switched Carrier (Half Duplex)", "V.26bis",  
              "V.26ter", "V.27ter (G3 Fax Call)",  
              "V.29 HD (G3 Fax Call)", "V.32", "V.32bis", "V.34",  
              "V.34 HD (G3 Fax Call)", "V.90 Issue 1 (Asymmetric)",  
              "V.90 Issue 2 (Symmetric)", "Reserved (V.58)", "X2",  
              "K56FLEX", "V.FC", "V.32terbo", "Bell 212A",  
              "Bell 103", "Reserved for Mfgs"}  
       ]  
    uint16 TransmitCarrierNegotiation;  
       [Description ("The active receive modulation scheme."),  
        Values {"V.17 (G3 Fax Call)", "V.21", "V.22", "V.22bis",  
              "V.23 Constant Carrier (1200/75)",  
              "V.23 Switched Carrier (Half Duplex)", "V.26bis",  
              "V.26ter", "V.27ter (G3 Fax Call)",  
              "V.29 HD (G3 Fax Call)", "V.32", "V.32bis", "V.34",  
              "V.34 HD (G3 Fax Call)", "V.90 Issue 1 (Asymmetric)",  
              "V.90 Issue 2 (Symmetric)", "Reserved (V.58)", "X2",  
              "K56FLEX", "V.FC", "V.32terbo", "Bell 212A",  
              "Bell 103", "Reserved for Mfgs"}  
       ]  
    uint16 ReceiveCarrierNegotiation;  
       [Description (  
         "Initial transmit carrier data rate for the current or "  
         "last call, in bits per second."),  
        Units ("Bits per Second")  
       ]  
    uint32 InitialTransmitCarrierDataRate;  
       [Description (  
         "Initial receive carrier data rate for the current or last "  
         "call, in bits per second."),  
        Units ("Bits per Second")  
       ]  
    uint32 InitialReceiveCarrierDataRate;  
       [Description (       [Description (
         "The number of carrier retrains requested during the current "          "Subsystem vendor ID. ID information is reported from a "
         "or last call."),          "PCIDevice via protocol-specific requests. The correct place "
        Counter          "in the CIM Schema for this information is in CIM_Physical"
       ]          "Element (the Manufacturer property) for hardware, and "
    uint8 CarrierRetrainsRequested;          "CIM_Product (the Vendor property) if the information is "
           "related to Product acquisition. This data is also reported "
           "here since it is part of the standard output from the "
           "Device, and as an optimization.") ]
      uint16 SubsystemVendorID;
       [Description (       [Description (
         "The number of carrier retrains granted during the current "          "Register indiating how long the master would like to "
         "or last call."),          "retain PCI bus ownership whenever it initiates a "
        Counter          "transaction. A zero value indicates no requirement."),
       ]         Units ("250 nanoseconds") ]
    uint8 CarrierRetrainsGranted;     uint8 MinGrantTime;
       [Description (       [Description (
         "Final transmit carrier data rate of the current or last "          "Register specifying how often the device needs access to "
         "call, in bits per second."),          "the PCI bus in 250ns. A zero value indicates no "
        Units ("Bits per Second")          "requirement."),
       ]         Units ("250 nanoseconds") ]
    uint32 FinalTransmitCarrierDataRate;     uint8 MaxLatency;
   };
   
   
   // ===================================================================
   // PCIBridge
   // ===================================================================
       [Description (       [Description (
         "Final receive carrier data rate of the current or last "       "Capabilities and management of a PCI controller providing "
         "call, in bits per second."),       "bridge to bridge capability.") ]
        Units ("Bits per Second")  class CIM_PCIBridge : CIM_PCIController {
       ]        [Description ("Array of doubleword base memory addresses.") ]
    uint32 FinalReceiveCarrierDataRate;     uint32 BaseAddress[2];
       [Description ("Cause of last call termination."),  
        Values {"Cause Unidentified", "No Previous Call",  
              "Call Is Still in Progress", "Call Waiting Signal Detected",  
              "Delayed", "NMS Initiated Dial Call",  
              "NMS Initiated Leased Line Restoral", "NMS Initiated Redial",  
              "NMS Initiated Dial Disconnect", "Power Loss",  
              "Equipment Failure", "Front Panel Disconnect Requested",  
              "Front Panel Leased Line Restoral",  
              "Automatic Leased Line Restoral", "Inactivity Timer Expired",  
              "cct116 Restoral Request", "cct108 Is Off Inhibits Dial",  
              "cct108 Turned Off", "No Number Provided", "Blacklisted Number",  
              "Call Attempts Limit Exceeded", "Extension Phone Off Hook",  
              "Call Setup Fail Timer Expired", "Incoming Call Detected",  
              "Loop Current Interrupted", "No Dial Tone", "Voice Detected",  
              "Reorder Tone", "Sit Tone", "Engaged Tone",  
              "Long Space Disconnect", "Carrier Lost", "Training Failed",  
              "No Modulation in Common", "Retrain Failed",  
              "Retrain Attempt Count Exceeded", "GSTN Cleardown Received",  
              "Fax Detected", "In Test Mode",  
              "Intrusive Self Test Initiated", "Any Key Abort",  
              "DTE Hangup Command", "DTE Reset Command", "Frame Reject",  
              "No Error Control Established", "Protocol Violation",  
              "n400 Exceeded", "Negotiation Failed",  
              "Disconnect Frame Received", "Sabme Frame Received",  
              "Loss Of Synchronization"}  
       ]  
    uint16 TerminationCause;  
       [Description (       [Description (
         "Diagnostic Command Specification, Unimodem revision number.")          "The type of bridge. Except for \"Host\" (value=0), the type "
       ]          "of bridge is PCI to <value>. For type \"Host\", the device is "
    string UnimodemRevision;          "a Host to PCI bridge."),
       [Gauge, Description (         ValueMap {"0", "1", "2", "3", "4", "5", "6", "7", "8", "128"},
         "Estimated noise level for the last or current call in "         Values {"Host", "ISA", "EISA", "Micro Channel", "PCI",
         "-dBm. Values are in the range of 0-100."),                 "PCMCIA", "NuBus", "CardBus", "RACEway", "Other"} ]
        Units ("-dBm")     uint16 BridgeType;
       ]  
    uint32 EstimatedNoiseLevel;  
       [Description (       [Description (
         "Normalized mean squared error for the last or current call.")          "The timeslice for the secondary interface when the bridge "
       ]          "is acting as an initiator. A zero value indicates no "
    uint32 NormalizedMeanSquaredError;          "requirement."),
          Units ("PCI clock cycles") ]
      uint8 SecondaryLatencyTimer;
       [Description (       [Description (
         "Temporary carrier loss event count for the last or current "          "The number of the highest numbered bus that exists behind "
         "call."),          "the bridge.") ]
        Counter     uint8 SubordinateBusNumber;
       ]  
    uint8 TemporaryCarrierLossEventCount;  
       [Description (       [Description (
         "Carrier Rate re-negotiation event count for the last or "          "The number of the PCI bus segment to which the secondary "
         "current call."),          "interface of the bridge is connected.") ]
        Counter     uint8 SecondayBusNumber;
       ]  
    uint8 CarrierRenegotiationEventCount;  
       [Description (       [Description (
         "Error Control frame size in bytes for the last or current call."),          "The number of the PCI bus segment to which the primary "
        Units ("Bytes")          "interface of the bridge is connected.") ]
       ]     uint8 PrimaryBusNumber;
    uint16 ErrorControlFrameSize;  
       [Description (       [Description (
         "Error control link timeouts in transmission for the last or "          "The contents of the Bridge's SecondaryStatusRegister. "
         "current call."),          "For more information on the contents of this register, refer "
        Counter          "to the PCI-to-PCI Bridge Architecture Specification.") ]
       ]     uint16 SecondaryStatusRegister;
    uint8 ErrorControlLinkTimeouts;  
       [Description (       [Description (
         "Error control link NAKs received for the last or current call."),          "The slowest device select timing for a target device on the "
        Counter          "secondary bus."),
       ]         Values {"Unknown", "Other", "Fast", "Medium", "Slow",
    uint8 ErrorControlLinkNAKs;                 "Reserved"} ]
      uint16 SecondaryBusDeviceSelectTiming;
       [Description (       [Description (
         "The flow control mechanism used in transmitting data."),          "End address of the I/O addresses supported by the bus. The "
        Values {"Unknown", "Off", "DC1/DC3", "V.24 ckt 106/133"}          "upper four bits of this property specify the address bits, "
       ]          "AD[15::12], of the I/O address. The remaining 12 bits of "
    uint16 TransmitFlowControl;          "the I/O address are assumed to be all 1's.") ]
      uint8 IOLimit;
       [Description (       [Description (
         "The flow control mechanism used in receiving data."),          "Base address of I/O addresses supported by the bus. The "
        Values {"Unknown", "Off", "DC1/DC3", "V.24 ckt 106/133"}          "upper four bits of this property specify the address bits, "
       ]          "AD[15::12], of the I/O address. The remaining 12 bits of "
    uint16 ReceiveFlowControl;          "the I/O address are assumed to be 0.") ]
      uint8 IOBase;
       [Description (       [Description (
         "Number of transmit chars sent from the DTE for the last "          "End address of the memory supported by the bus. The "
         "or current call. A continuous connection may exceed this value, "          "upper twelve bits of this property specify the address bits, "
         "given enough time. Typically these counters are implemented "          "AD[31::20], of a 32-bit memory address. The remaining 20 "
         "as 32 bit counters, but additional bits may be provided and "          "bits of the address are assumed to be all 1's.") ]
         "are accounted for in this property. If these counters hit "     uint16 MemoryLimit;
         "maximum value, the DCE manufacturer may roll over to 0."),  
        Counter  
       ]  
    uint64 TransmitCharsSentFromDTE;  
       [Description (       [Description (
         "Number of receive chars sent to the DTE for the last or "          "Base address of the memory supported by the bus. The "
         "current call. A continuous connection may exceed this value, "          "upper twelve bits of this property specify the address bits, "
         "given enough time. Typically these counters are implemented "          "AD[31::20], of a 32-bit memory address. The remaining 20 "
         "as 32 bit counters, but additional bits may be provided and "          "bits of the address are assumed to be 0.") ]
         "are accounted for in this property. If these counters hit "     uint16 MemoryBase;
         "maximum value, the DCE manufacturer may roll over to 0."),  
        Counter  
       ]  
    uint64 ReceiveCharsSentToDTE;  
       [Description (       [Description (
         "Number of transmit characters lost for the last or current "          "End address of the memory that can be prefetched by the bus. "
         "call. A DCE may limit this counter to 16 bits, but additional "          "The upper twelve bits of this property specify the address "
         "bits may be provided and are accounted for in this property."),          "bits, AD[31::20], of a 32-bit memory address. The remaining "
        Counter          "20 bits of the address are assumed to be all 1's.") ]
       ]     uint16 PrefetchMemoryLimit;
    uint64 TransmitCharsLost;  
       [Description (       [Description (
         "Number of receive characters lost for the last or current "          "Base address of the memory that can be prefetched by the bus. "
         "call. A DCE may limit this counter to 16 bits, but additional "          "The upper twelve bits of this property specify the address "
         "bits may be provided and are accounted for in this property."),          "bits, AD[31::20], of a 32-bit memory address. The remaining "
        Counter          "20 bits of the address are assumed to be 0.") ]
       ]     uint16 PrefetchMemoryBase;
    uint64 ReceiveCharsLost;  
       [Description (       [Description (
         "Number of I-Frames transmitted for the last or current call. "          "Upper 32 bits of the supported prefetch end address when "
         "A continuous connection may exceed this value, given enough "          "64-bit addressing is used. The lower 32 bits are assumed to "
         "time. Typically these counters are implemented as 32 bit "          "be all 1's.") ]
         "counters, but additional bits may be provided and are accounted "     uint32 PrefetchLimitUpper32;
         "for in this property. If these counters hit maximum value, the "  
         "DCE manufacturer may roll over to 0."),  
        Counter  
       ]  
    uint64 TransmitIFrameCount;  
       [Description (       [Description (
         "Number of I-Frames received for the last or current call. "          "Upper 32 bits of the supported prefetch base address when "
         "A continuous connection may exceed this value, given enough "          "64-bit addressing is used. The lower 32 bits are assumed "
         "time. Typically these counters are implemented as 32 bit "          "to be 0.") ]
         "counters, but additional bits may be provided and are "     uint32 PrefetchBaseUpper32;
         "accounted for in this property. If these counters hit maximum "  
         "value, the DCE manufacturer may roll over to 0."),  
        Counter  
       ]  
    uint64 ReceiveIFrameCount;  
       [Description (       [Description (
         "Number of I-Frame errors detected for the last or current "          "Upper 16 bits of the supported I/O end address when 32-bit "
         "call, if error control protocol is running. A DCE may limit "          "I/O addressing is used. The lower 16 bits are assumed to be "
         "this counter to 16 bits, but additional bits may be provided "          "all 1's.") ]
         "and are accounted for in this property."),     uint16 IOLimitUpper16;
        Counter  
       ]  
    uint64 TransmitIFrameErrorCount;  
       [Description (       [Description (
         "Number of I-Frame errors detected for the last or current "          "Upper 16 bits of the supported I/O base address when 32-bit "
         "call, if error control protocol is running. A DCE may limit "          "I/O addressing is used. The lower 16 bits are assumed to be "
         "this counter to 16 bits, but additional bits may be provided "          "0.") ]
         "and are accounted for in this property."),     uint16 IOBaseUpper16;
        Counter  };
       ]  
    uint64 ReceivedIFrameErrorCount;  
   // ===================================================================
   // PCMCIAController
   // ===================================================================
       [Description (       [Description (
         "Number of Call waiting events detected for the last or "       "Capabilities and management of a PCMCIAController.") ]
         "current call."),  class CIM_PCMCIAController : CIM_Controller {
        Counter  
       ]  
    uint8 CallWaitingEventCount;  
 }; };
  
   
 // =================================================================== // ===================================================================
 // Battery  // ESCONController
 // =================================================================== // ===================================================================
    [Description (    [Description (
        "Capabilities and management of the Battery LogicalDevice. "       "Capabilities and management of an ESCONController.") ]
        "This class applies to both batteries in Laptop Systems and "  class CIM_ESCONController : CIM_Controller {
        "other internal/external batteries, such as used in, "  };
        "or as UPSs.")  
    ]  
 class CIM_Battery : CIM_LogicalDevice  // ===================================================================
 {  // USBController
   // ===================================================================
       [Description (       [Description (
           "Description of the Battery's charge status. Values such "       "Capabilities and managment of a USB Host Controller.") ]
           "as \"Fully Charged\" (value=3) or \"Partially Charged\" "  class CIM_USBController : CIM_Controller {
           "(11) can be specified. The value, 10, is "  
           "not valid in the CIM Schema since in DMI it represents "  
           "that no battery is installed. In this case, this object "  
           "should not be instantiated."),  
          ValueMap {"1", "2", "3", "4", "5", "6", "7", "8", "9", "10",  
                "11"},  
        Values {"Other", "Unknown", "Fully Charged",  
                "Low", "Critical", "Charging", "Charging and High",  
                "Charging and Low", "Charging and Critical", "Undefined",  
                "Partially Charged"},  
        MappingStrings {"MIF.DMTF|Portable Battery|003"}  
       ]  
    uint16 BatteryStatus;  
       [Description (       [Description (
           "TimeOnBattery indicates the elapsed time in seconds "          "Indicates the latest USB Version supported by the Controller. "
           "since the ComputerSystem, UPS, ... last switched to "          "The property is expressed as a Binary-Coded Decimal (BCD) "
           "battery power, or the time since the System or UPS "          "where a decimal point is implied between the 2nd and 3rd "
           "was last restarted, whichever is less. Zero shall "          "digits. For example, a value of 0x201 indicates that "
           "be returned if the Battery is 'on line'."),          "version 2.01 is supported.") ]
        Units ("Seconds")     uint16 USBVersion;
       ]  
    uint32 TimeOnBattery;  
       [Description (       [Description (
           "EstimatedRunTime is an estimate in minutes of the "          "The type of interface used between the host system software "
           "time to battery charge depletion under the present "          "and the USBController."),
           "load conditions if the utility power is off, or lost "         Values {"Unknown", "Other", "UHCI", "OHCI"},
           "and remains off, or a Laptop is disconnected from a "         ModelCorrespondence {"CIM_USBController.ControllerVersion"} ]
           "power source."),     uint16 InterfaceType;
        Units ("Minutes"),  
        MappingStrings {"MIF.DMTF|Portable Battery|003"}  
       ]  
    uint32 EstimatedRunTime;  
       [Gauge, Description (  
           "An estimate of the percentage of full charge remaining."),  
        Units ("Percent")  
       ]  
    uint16 EstimatedChargeRemaining;  
       [Description (       [Description (
           "An enumeration that describes the Battery's chemistry."),          "Indicates the version of the USB Host Controller register "
          ValueMap {"1", "2", "3", "4", "5", "6", "7", "8"},          "set, specific to the InterfaceType. The property is "
        Values {"Other", "Unknown", "Lead Acid", "Nickel Cadmium",          "expressed as a Binary-Coded Decimal (BCD) value where a "
                "Nickel Metal Hydride", "Lithium-ion", "Zinc air",          "decimal point is implied between the 2nd and 3rd digits. "
                "Lithium Polymer"},          "For example, a value of 0x103 indicates that version "
        MappingStrings {"MIF.DMTF|Portable Battery|003"}          "1.03 is supported."),
       ]         ModelCorrespondence {"CIM_USBController.InterfaceType"} ]
    uint16 Chemistry;     uint16 ControllerVersion;
   };
   
   
   // ===================================================================
   // USBDevice
   // ===================================================================
       [Description (       [Description (
           "The design capacity of the battery in mWatt-hours. "       "The management characterisitics of a USB Device. These ") ]
           "If this property is not supported, enter 0."),  class CIM_USBDevice: CIM_LogicalDevice {
        Units ("MilliWattHours"),  
        MappingStrings {"MIF.DMTF|Portable Battery|003"}  
       ]  
    uint32 DesignCapacity;  
       [Description (       [Description (
           "The full charge capacity of the battery in mWatt-hours. "          "Indicates the latest USB Version supported by the USB Device. "
           "Comparison of this value to the Battery DesignCapacity "          "The property is expressed as a Binary-Coded Decimal (BCD) "
           "determines when the Battery requires replacement.  A "          "where a decimal point is implied between the 2nd and 3rd "
           "Battery's end of life is typically when the FullCharge"          "digits. For example, a value of 0x201 indicates that "
           "Capacity falls below 80% of the DesignCapacity. "          "version 2.01 is supported.") ]
           "If this property is not supported, enter 0."),     uint16 USBVersion;
        Units ("MilliWattHours"),        [Description ("Indicates the USB class code.") ]
        MappingStrings {"MIF.DMTF|Portable Battery|003"}     uint8 ClassCode;
       ]        [Description ("Indicates the USB subclass code.") ]
    uint32 FullChargeCapacity;     uint8 SubclassCode;
         [Description ("Indicates the USB protocol code.") ]
      uint8 ProtocolCode;
       [Description (       [Description (
           "The design voltage of the battery in mVolts. If "          "Number of device configurations that are defined for the "
           "this attribute is not supported, enter 0."),          "Device.") ]
        Units ("MilliVolts"),     uint8 NumberOfConfigs;
        MappingStrings {"MIF.DMTF|Portable Battery|003"}  
       ]  
    uint64 DesignVoltage;  
       [MaxLen (64), Description (  
           "The Smart Battery Data Specification version number "  
           "supported by this Battery. If the Battery does not "  
           "support this function, the value should be left blank."),  
        MappingStrings {"MIF.DMTF|Portable Battery|003"}  
       ]  
    string SmartBatteryVersion;  
       [Description (       [Description (
           "The remaining time to charge the battery fully in minutes "          "Indicates the configuration currently selected for the "
           "at the current charging rate and usage."),          "Device. If this value is zero, the Device is "
        Units ("Minutes"),          "unconfigured."),
        MappingStrings {"MIF.DMTF|Portable Battery|003"}         ModelCorrespondence {"CIM_USBDevice.CurrentAlternateSettings"} ]
       ]     uint8 CurrentConfigValue;
    uint32 TimeToFullCharge;  
         [Description (         [Description (
           "Indicates the Battery's expected lifetime in minutes, "          "An array of USB 'alternate settings' for each interface "
           "assuming that the Battery is fully charged. This property "          "in the currently selected configuration (indicated by the "
           "represents the total expected life of the Battery, not its "          "CurrentConfigValue property). This array has one entry for "
           "current remaining life, which is indicated by the "          "each interface in the configuration. If the property, "
           "EstimatedRunTime property. "),          "CurrentConfigValue, is zero (indicating the Device is not "
          Units ("Minutes")          "configured), the array is undefined. To understand how "
         ]          "to parse this octet string, refer to the USB Specification."),
    uint32 ExpectedLife;         ModelCorrespondence {"CIM_USBDevice.CurrentConfigValue"} ]
      uint8 CurrentAlternateSettings[];
         [Description (         [Description (
           "MaxRechargeTime indicates the maximum time, in minutes, "          "This method returns the USBDevice Descriptor as specified by "
           "to fully charge the Battery. This property represents the "          "the input parameters. Each parameter is briefly described here "
           "time to recharge a fully depleted Battery, not the current "          "with more detail in its Qualifier list. RequestType is an input "
           "remaining charging time, which is indicated in the "          "parameter that defines whether the request is for standard, "
           "TimeToFullCharge property. "),          "class or vendor-specific information, as well as specifying the "
          Units ("Minutes")          "recipient. RequestValue is also an input parameter and defines "
         ]          "the USB Descriptor Type and Index. RequestIndex is an input "
    uint32 MaxRechargeTime;          "parameter which describes the language used to return a string "
           "Descriptor. RequestLength is both an input and output parameter. "
           "It specifies the length of the Descriptor that should be returned "
           "(on input) and what is actually returned in the Buffer parameter "
           "(on output). Buffer is an output parameter, containing the "
           "Descriptor data. The GetDescriptor method returns an integer "
           "value of 0 if the USB Descriptor is successfully returned, "
           "1 if the request is not supported and any other number to "
           "indicate an error.\n"
           "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.") ]
      uint32 GetDescriptor(
         [IN, Description ("RequestType is bit-mapped and identifies the "
              "type of Descriptor request and the recipient. The type of "
              "request may be 'standard', 'class' or 'vendor-specific'. "
              "The recipient may be 'device', 'interface', 'endpoint' "
              "or 'other'. Refer to the USB Specification for the "
              "appropriate values for each bit.") ]
          uint8 RequestType,
         [IN, Description ("RequestValue contains the Descriptor Type in "
              "the high byte and the Descriptor Index (for example, index "
              "or offset into the Descriptor array) in the low byte. "
              "Refer to the USB Specification for more information.") ]
          uint16 RequestValue,
         [IN, Description ("RequestIndex defines the 2 byte Language ID "
              "code used by the USBDevice when returning string Descriptor "
              "data. The parameter is typically 0 for non-string "
              "Descriptors. Refer to the USB Specification for more "
              "information.") ]
          uint16 RequestIndex,
         [IN, OUT, Description ("On input, RequestLength is the length "
              "(in octets) of the Descriptor that should be returned. "
              "If this value is less than the actual length of the "
              "Descriptor, only the requested length will be returned. "
              "If it is more than the actual length, the actual length "
              "is returned. On output, this parameter is the length, "
              "in octets, of the Buffer being returned. If the requested "
              "Descriptor does not exist, the contents of this parameter "
              "are undefined.") ]
          uint16 RequestLength,
         [OUT, Description ("Buffer returns the requested Descriptor "
               "information. If the Descriptor does not exist, the "
               "contents of the Buffer are undefined.") ]
          uint8 Buffer[]);
 }; };
  
   
 // =================================================================== // ===================================================================
 // PowerSupply  // USBHub
 // =================================================================== // ===================================================================
      [Description ("USB Hub Device.") ]
   class CIM_USBHub : CIM_USBDevice {
    [Description (    [Description (
          "Capabilities and management of the PowerSupply LogicalDevice.")          "Indicates whether power to the Hub Ports is individually or "
    ]          "gang-switched. If this value is FALSE, power is switched "
 class CIM_PowerSupply : CIM_LogicalDevice          "individually for each Port. If this value is TRUE, power is "
 {          "switched to all Ports on the Hub at once.") ]
       [Description (     boolean GangSwitched;
           "Boolean indicating that the PowerSupply is a switching "  
         "(vs linear) supply.")  
       ]  
    boolean IsSwitchingSupply;  
       [Description (  
           "The low voltage of Input Voltage Range 1 for this Power"  
         "Supply, in millivolts. A value of 0 denotes 'unknown'."),  
        Units ("MilliVolts"),  
        MappingStrings {"MIF.DMTF|Power Supply|004"}  
       ]  
    uint32 Range1InputVoltageLow;  
       [Description (  
           "The high voltage of Input Voltage Range 1 for this Power"  
         "Supply, in millivolts. A value of 0 denotes 'unknown'."),  
        Units ("MilliVolts"),  
        MappingStrings {"MIF.DMTF|Power Supply|004"}  
       ]  
    uint32 Range1InputVoltageHigh;  
       [Description (  
           "The frequency (in Hertz) at the low end of this Power"  
           "Supply's Input Frequency Range 1. A value of zero "  
           "implies DC."),  
        Units ("Hertz"),  
        MappingStrings {"MIF.DMTF|Power Supply|004"}  
       ]  
    uint32 Range1InputFrequencyLow;  
       [Description (  
           "The frequency (in Hertz) at the high end of this Power"  
           "Supply's Input Frequency Range 1. A value of zero "  
           "implies DC."),  
        Units ("Hertz"),  
        MappingStrings {"MIF.DMTF|Power Supply|004"}  
       ]  
    uint32 Range1InputFrequencyHigh;  
       [Description (  
           "The low voltage of Input Voltage Range 2 for this Power"  
           "Supply, in millivolts. A value of 0 denotes 'unknown'."),  
        Units ("MilliVolts"),  
        MappingStrings {"MIF.DMTF|Power Supply|004"}  
       ]  
    uint32 Range2InputVoltageLow;  
       [Description (  
           "The high voltage of Input Voltage Range 2 for this Power"  
           "Supply, in millivolts. A value of 0 denotes 'unknown'."),  
        Units ("MilliVolts"),  
        MappingStrings {"MIF.DMTF|Power Supply|004"}  
       ]  
    uint32 Range2InputVoltageHigh;  
       [Description (  
           "The frequency (in Hertz) at the low end of this Power"  
           "Supply's Input Frequency Range 2. A value of zero "  
           "implies DC."),  
        Units ("Hertz"),  
        MappingStrings {"MIF.DMTF|Power Supply|004"}  
       ]  
    uint32 Range2InputFrequencyLow;  
       [Description (       [Description (
           "The frequency (in Hertz) at the high end of this Power"          "Number of downstream Ports on the Hub, including those "
           "Supply's Input Frequency Range 2. A value of zero "          "embedded in the Hub's silicon. Individual USBPorts are "
           "implies DC."),          "associated with the Hub using the USBPortOnHub association.") ]
        Units ("Hertz"),     uint8 NumberOfPorts;
        MappingStrings {"MIF.DMTF|Power Supply|004"}  };
       ]  
    uint32 Range2InputFrequencyHigh;  
   // ===================================================================
   // USBPort
   // ===================================================================
      [Description ("A Port on a USBHub.") ]
   class CIM_USBPort : CIM_LogicalPort {
         [Override ("Speed"), Description (
           "USB Port Speed in bits per second. This speed is determined "
           "and set by the attached Device. The 'attached Device' is "
           "indicated using the USBConnection association. At this time, "
           "only several Port speeds are valid. These are: 1.5Mbps and "
           "12Mbps. The value 0 can also be specified to indicate that the "
           "current speed is 'unknown' or 1 to indicate that the speed is "
           "'other' than 1.5 or 12Mbps."),
          ValueMap {"0", "1", "1500000", "12000000"} ]
      uint64 Speed;
         [Override ("StatusInfo"),
          Description ("Indicates whether the Port is currently enabled."),
          ValueMap {"2", "3", "4"},
          Values {"Unknown", "Enabled", "Disabled"} ]
      uint16 StatusInfo;
         [Override ("Availability"),
          Description ("Indicates whether the Port is currently Powered."),
          ValueMap {"2", "3", "7"},
          Values {"Unknown", "Running/Full Power", "Power Off"} ]
      uint16 Availability;
       [Description (       [Description (
           "ActiveInputVoltage indicates which input voltage range is "          "The USB Port's power capability. The current specification "
           "currently in use. Range 1, 2 or both can be specified "          "defines that 1 or 5 loads can be supported (values 2 or 3 would "
           "using the values 3, 4 or 5, respectively. If the Supply "          "be specified, respectively)."),
         "is not currently drawing power, the value 6 (\"Neither\") "         Values {"Unknown", "Other", "1 Unit Load", "5 Unit Loads"} ]
         "can be specified. This information is necessary in the "     uint16 Power;
         "case of a UPS, a subclass of PowerSupply."),  
          ValueMap {"1", "2", "3", "4", "5", "6"},  
        Values {"Other", "Unknown", "Range 1", "Range 2", "Both",  
              "Neither"},  
        MappingStrings {"MIF.DMTF|Power Supply|004"}  
       ]  
    uint16 ActiveInputVoltage;  
       [Description (       [Description (
           "TypeOfRangeSwitching describes the kind of input voltage "          "Indicates whether the Port is currently Suspended.") ]
           "range switching implemented in this PowerSupply. For "     boolean Suspended;
           "example, autoswitching can be specified (value=4)."),  
          ValueMap {"1", "2", "3", "4", "5", "6"},  
        Values {"Other", "Unknown", "Manual", "Autoswitch",  
                "Wide Range", "Not Applicable"},  
        MappingStrings {"MIF.DMTF|Power Supply|004"}  
       ]  
    uint16 TypeOfRangeSwitching;  
       [Description (       [Description (
           "Represents the total output power of the PowerSupply in "          "Indicates whether the Port is disabled due to an "
           "milliWatts. 0 denotes 'unknown'."),          "overcurrent event.") ]
        Units ("MilliWatts"),     boolean Overcurrent;
        MappingStrings {"MIF.DMTF|Power Supply|004"}  
       ]  
    uint32 TotalOutputPower;  
 }; };
  
   
 // =================================================================== // ===================================================================
 // SuppliesPower  // USBPortOnHub
 // =================================================================== // ===================================================================
    [Association,    [Association,
     Description (     Description (
        "The SuppliesPower relationship indicates that a Device is in "         "USBPortOnHub associates a USBPort or connection point with the "
        "the power domain of the referenced PowerSupply or UPS. "         "USBHub that includes it.") ]
        "It indicates which Device(s) are dependent on the PowerSupply, "  class CIM_USBPortOnHub : CIM_PortOnDevice {
        "and hence, which Devices are affected if the Supply is lost.")  
    ]  
 class CIM_SuppliesPower : CIM_Dependency  
 {  
       [Override ("Antecedent"),       [Override ("Antecedent"),
        Description ("The Supply providing power.")         Min(1), Max(1),
       ]         Description ("The Hub that includes the USBPort.") ]
    CIM_PowerSupply REF Antecedent;     CIM_USBHub REF Antecedent;
       [Override ("Dependent"),       [Override ("Dependent"),
        Description (         Min(1), Description ("The Port on the USBHub.") ]
         "A LogicalDevice in the power domain of the Supply.")     CIM_USBPort REF Dependent;
       ]  
    CIM_LogicalDevice REF Dependent;  
 }; };
  
   
 // =================================================================== // ===================================================================
 // UninterruptiblePowerSupply  // USBControllerHasHub
 // =================================================================== // ===================================================================
    [Description (     [Association, Description (
        "Capabilities and management of an UninterruptiblePowerSupply. "       "USBControllerHasHub defines the Hub(s) that are downstream "
        "The properties of the UPS Device indicate when incoming power "       "of the USBController.") ]
        "is trimmed or boosted, and the aggregated information of the "  class CIM_USBControllerHasHub : CIM_ControlledBy {
        "batteries, generators, etc. that comprise the Device.  These "        [Override ("Antecedent"), Min(1), Max(1),
        "individual components (for example, multiple batteries) can "         Description ("The USBController.") ]
        "also be independently modeled and associated with the UPS.")     CIM_USBController REF Antecedent;
    ]        [Override ("Dependent"), Min(1),
 class CIM_UninterruptiblePowerSupply : CIM_PowerSupply  
 {  
       [Override ("Range1InputVoltageLow"),  
        Description (  
           "If the voltage (in millivolts) drops below the value "  
           "specified by Range1InputVoltageLow, the UPS will compensate "  
           "by boosting the voltage using its power source(s).  A value "  
           "of 0 indicates that the voltage at which boosting occurs "  
           "is 'unknown'."),  
        Units ("MilliVolts")  
       ]  
    uint32 Range1InputVoltageLow;  
       [Override ("Range1InputVoltageHigh"),  
        Description (  
           "If the voltage (in millivolts) rises above the value "  
           "specified by Range1InputVoltageHigh, the UPS will compensate "  
           "by trimming the voltage.  A value of 0 indicates that the "  
           "voltage at which trimming occurs is 'unknown'."),  
        Units ("MilliVolts")  
       ]  
    uint32 Range1InputVoltageHigh;  
       [Override ("Range2InputVoltageLow"),  
        Description (  
           "If the voltage (in millivolts) drops below the value "  
           "specified by Range2InputVoltageLow, the UPS will compensate "  
           "by boosting the voltage using its power source(s).  A value "  
           "of 0 indicates that the voltage at which boosting occurs "  
           "is 'unknown'."),  
        Units ("MilliVolts")  
       ]  
    uint32 Range2InputVoltageLow;  
       [Override ("Range2InputVoltageHigh"),  
        Description (        Description (
           "If the voltage (in millivolts) rises above the value "          "The USBHub that is associated with the Controller.") ]
           "specified by Range2InputVoltageHigh, the UPS will compensate "     CIM_USBHub REF Dependent;
           "by trimming the voltage.  A value of 0 indicates that the "  
           "voltage at which trimming occurs is 'unknown'."),  
        Units ("MilliVolts")  
       ]  
    uint32 Range2InputVoltageHigh;  
       [Description (  
           "The indication of the capacity remaining in the UPS' "  
           "batteries, generator, ...  A value of \"Normal\" (2) "  
           "indicates that the remaining estimated minutes of run-time "  
           "is greater than the UPS' defined 'low power' state "  
           "(typically two minutes). A value of \"Low\" (3) indicates "  
           "that the remaining estimated minutes of run-time is less "  
           "than or equal to the UPS' defined 'low power' state.  A "  
           "value of \"Depleted\" (4) indicates that the "  
           "UPS will be unable to sustain the present load when and if "  
           "the utility power is lost (including the possibility that "  
           "the utility power is currently absent)."),  
       ValueMap {"1", "2", "3", "4"},  
         Values {"Unknown", "Normal", "Low", "Depleted"},  
        MappingStrings {"MIF.DMTF|UPS Battery|001.1"}  
       ]  
    uint16 RemainingCapacityStatus;  
       [Description (  
           "TimeOnBackup indicates the elapsed time in seconds "  
           "since the UPS last switched to battery power, generator, ...  "  
           "Or, the time since the UPS was last restarted, whichever is "  
           "less. Zero shall be returned if the UPS is 'on line'."),  
        Units ("Seconds"),  
        MappingStrings {"MIF.DMTF|UPS Battery|001.2"}  
       ]  
    uint32 TimeOnBackup;  
       [Description (  
           "EstimatedRunTime is an estimate in minutes of the time to "  
           "battery, generator, ... depletion under the present load "  
           "conditions if the utility power is off, or lost and remains "  
           "off."),  
        Units ("Minutes"),  
        MappingStrings {"MIF.DMTF|UPS Battery|001.3"}  
       ]  
    uint32 EstimatedRunTime;  
       [Gauge, Description (  
           "An estimate of the percentage of full charge remaining for "  
           "a UPS (that uses battery technology)."),  
        Units ("Percent"),  
        MappingStrings {"MIF.DMTF|UPS Battery|001.4"}  
       ]  
    uint16 EstimatedChargeRemaining;  
 }; };
  
   
 // =================================================================== // ===================================================================
 // AssociatedSupplyVoltageSensor  // USBConnection
 // =================================================================== // ===================================================================
    [Association,     [Association, Description (
     Description (       "USBConnection associates a Device with the USBPort to which it "
        "A PowerSupply may have an associated VoltageSensor, monitoring "       "is connected.") ]
        "its input voltage. This is described by this association.")  class CIM_USBConnection: CIM_DeviceConnection {
    ]        [Override ("Antecedent"), Max(1),
 class CIM_AssociatedSupplyVoltageSensor : CIM_AssociatedSensor         Description ("The USBPort.")  ]
 {     CIM_USBPort REF Antecedent;
       [Override ("Antecedent"),        [Override ("Dependent"), Max(1),
        Description ("The VoltageSensor.")         Description ("The USBDevice that is connected to the Port.") ]
       ]     CIM_USBDevice REF Dependent;
    CIM_VoltageSensor REF Antecedent;  };
       [Override ("Dependent"),  
        Description (  
           "The PowerSupply associated with the VoltageSensor.")  // ===================================================================
       ]  //
    CIM_PowerSupply REF Dependent;  //    Modems
   //
   // ===================================================================
   
   
   // ===================================================================
   // Modem
   // ===================================================================
      [Abstract, Description (
        "CIM_Modem is the superclass for grouping the numerous types "
        "of Modems.") ]
   class CIM_Modem : CIM_LogicalDevice {
   };
   
   
   // ===================================================================
   // ConnectionBasedModem
   // ===================================================================
      [Abstract, Description (
        "CIM_ConnectionBasedModem is the superclass for grouping the "
        "numerous types of connection-based Modems. A CableModem is a "
        "type of connection-based Modem.") ]
   class CIM_ConnectionBasedModem : CIM_Modem {
       [Description (       [Description (
           "Indicates the PowerSupply's input voltage range measured "          "VendorID information is reported via Modem-specific requests. "
           "by the associated sensor. Range 1, 2 or both can be specified "          "For example, for ADSLModem Devices the VendorID is assigned by "
           "using the values 2, 3 or 4, respectively."),          "T1E1.4 according to T1.413, Appendix D. The correct place in "
        Values {"Unknown", "Other", "Range 1", "Range 2",          "the CIM Schema for this information is in PhysicalElement "
                "Both Range 1 and 2"}          "(the Manufacturer property) for hardware and Product (the "
       ]          "Vendor property) if the information is related to Product "
    uint16 MonitoringRange;          "acquisition. This data is also reported here since it is part "
           "of the standard output from the Device, and as an "
           "optimization.") ]
      string VendorID;
   };
   
   
   // ===================================================================
   // DSLModem
   // ===================================================================
      [Description (
        "The DSLModem class represents the superclass for Digital "
        "Subscriber Line (DSL) Devices. Properties "
        "will be defined in a future release of the model.")  ]
   class CIM_DSLModem : CIM_ConnectionBasedModem {
 }; };
  
   
 // =================================================================== // ===================================================================
 // AssociatedSupplyCurrentSensor  // VDSLModem
 // =================================================================== // ===================================================================
    [Association,  
     Description (  
        "A PowerSupply may have an associated CurrentSensor, monitoring "  
        "its input frequency. This is described by this association.")  
    ]  
 class CIM_AssociatedSupplyCurrentSensor : CIM_AssociatedSensor  
 {  
       [Override ("Antecedent"),  
        Description ("The CurrentSensor.")  
       ]  
    CIM_CurrentSensor REF Antecedent;  
       [Override ("Dependent"),  
        Description (  
           "The PowerSupply associated with the CurrentSensor.")  
       ]  
    CIM_PowerSupply REF Dependent;  
       [Description (       [Description (
           "Indicates the PowerSupply's input frequency range measured "       "The VDSLmodem class represents Modems of the DSL type = "
           "by the associated sensor. Range 1, 2 or both can be specified "       "VDSL, Very high data rate Digital Subscriber Line. Properties "
           "using the values 2, 3 or 4, respectively."),       "will be defined in a future release of the model.") ]
        Values {"Unknown", "Other", "Range 1", "Range 2",  class CIM_VDSLModem : CIM_DSLModem {
                "Both Range 1 and 2"}  
       ]  
    uint16 MonitoringRange;  
 }; };
  
   
 // =================================================================== // ===================================================================
 // AssociatedBattery  // HDSLModem
 // =================================================================== // ===================================================================
    [Association,     [Description (
     Description (       "The HDSLModem class represents Modems of the DSL type = "
        "A LogicalDevice may use or require one or more Batteries. This "       "HDSL, High data rate Digital Subscribe Line, capable of "
        "relationship is described by the AssociatedBattery dependency. "       "delivering T1 or E1 speeds. Properties will be defined in a "
        "It is also possible to model the individual Batteries that "       "future release of the model.") ]
        "comprise a UPS, using this association.")  class CIM_HDSLModem : CIM_DSLModem {
    ]  
 class CIM_AssociatedBattery : CIM_Dependency  
 {  
       [Override ("Antecedent"),  
        Description ("The Battery.")  
       ]  
    CIM_Battery REF Antecedent;  
       [Override ("Dependent"),  
        Description (  
           "The LogicalDevice needing or associated with the Battery.")  
       ]  
    CIM_LogicalDevice REF Dependent;  
 }; };
  
   
 // =================================================================== // ===================================================================
 // NetworkAdapter  // SDSLModem
 // =================================================================== // ===================================================================
    [Abstract,  
     Description (  
        "NetworkAdapter is an Abstract class defining general "  
        "networking hardware concepts (for example, PermanentAddress or "  
        "Speed of operation). NetworkAdapters are Devices with the "  
        "ability to support multiple, higher level protocols and provide "  
        "the implementation behind the Network Model's ProtocolEndpoint "  
        "class. (This information is conveyed using the DeviceSAP"  
        "Implementation association, defined in the Core Model.) "  
        "NetworkAdapters and their Endpoints represent the potential for "  
        "connectivity among peers.\n"  
        "The 'potential for connectivity' is very different than the "  
        "master-slave/controller-controlled by relationships of CIM_"  
        "Controller. Sometimes, however, a single Device is both a kind "  
        "of NetworkAdapter and a Controller - for example, when a Fibre"  
        "ChannelAdapater is operating as a ComputerSystem's SCSIController. "  
        "In this case, there are aspects of the Device that are network "  
        "oriented and others that are Controller oriented - and, both the "  
        "Controller and Adapter classes should be instantiated. A Device"  
        "Identity relationship would also be created to tie together these "  
        "differing aspects/abstractions of the Device.")  
    ]  
 class CIM_NetworkAdapter : CIM_LogicalDevice  
 {  
       [MaxLen (64), Description (  
           "PermanentAddress defines the network address hardcoded into "  
           "an adapter.  This 'hardcoded' address may be changed via "  
           "firmware upgrade or software configuration. If so, this field "  
           "should be updated when the change is made.  PermanentAddress "  
           "should be left blank if no 'hardcoded' address exists for the "  
           "NetworkAdapter."),  
        MappingStrings {"MIF.DMTF|Network Adapter 802 Port|001.2"}  
         ]  
     string PermanentAddress;  
         [MaxLen (64),  
          Description (  
           "An array of strings indicating the network addresses for an "  
           "adapter."),  
          ArrayType ("Indexed"),  
          MappingStrings {"MIF.DMTF|Network Adapter 802 Port|001.3"}  
       ]  
     string NetworkAddresses[];  
         [Description (  
           "An estimate of the current bandwidth in Bits per Second. "  
           "For Adapters which vary in bandwidth or for those where "  
           "no accurate estimation can be made, this property should "  
           "contain the nominal bandwidth."),  
          Units ("Bits per Second"),  
          MappingStrings {"MIB.IETF|RFC1213-MIB.ifSpeed",  
                "MIF.DMTF|Network Adapter 802 Port|001.5"}  
         ]  
     uint64 Speed;  
         [Description (         [Description (
           "The maximum speed, in Bits per Second, for the Network"       "The SDSLModem class represents Modems of the DSL type = "
           "Adapter."),       "SDSL, Symmetric Digital Subscriber Line. Properties "
          Units ("Bits per Second")       "will be defined in a future release of the model.") ]
         ]  class CIM_SDSLModem : CIM_DSLModem {
     uint64 MaxSpeed;  };
   
   
   // ===================================================================
   // ADSLModem
   // ===================================================================
       [Description (       [Description (
         "Boolean indicating that the Adapter is operating in "       "The ADSLModem class represents Modems of the DSL type = ADSL, "
         "full duplex mode.")       "Asymmetric Digital Subscriber Line.") ]
       ]  class CIM_ADSLModem : CIM_DSLModem {
    boolean FullDuplex;  
         [Description (         [Description (
           "A boolean indicating whether the NetworkAdapter is capable "          "Noise Margin of this Modem with respect to its received signal, "
           "of automatically determining the speed or other communications "          "in tenths of dB."),
         "characteristics of the attached network media.")         Units ("Tenths of Decibels") ]
         ]     uint32 NoiseMargin;
     boolean AutoSense;        [Gauge, Description (
           "Measured difference in the total power transmitted by the peer "
           "Modem and the total power received by this Modem. This is "
           "measured in tenths of dB."),
          Units ("Tenths of Decibels") ]
      uint32 LineAttenuation;
         [Description (         [Description (
           "The total number of octets transmitted, including framing "          "Status indicates the current state of the connection (line). The "
           "characters."),          "property holds a bitmap describing the possible conditions. "
          Mappingstrings {"MIB.IETF|RFC1213-MIB.ifOutOctets",          "For example, 1) No Defect - There no defects on the line; "
                "MIF.DMTF|Network Adapter 802 Port|001.7"},          "2) Loss Of Framing - ATUR failure due to not receiving valid frame; "
        Counter          "4) Loss Of Signal - ATUR failure due to not receiving signal; "
       ]          "8) Loss Of Power - ATUR failure due to loss of power; "
     uint64 OctetsTransmitted;          "32) Loss Of Signal Quality - Loss of Signal Quality is declared "
           "when the NoiseMargin falls below the minimum NoiseMargin, or the "
           "bit-error-rate exceeds 10^-7."),
          ValueMap {"1", "2", "4", "8", "32"},
          Values {"No Defect", "Loss Of Framing", "Loss Of Signal",
                  "Loss Of Power", "Loss Of Signal Quality"} ]
      uint32 LineState;
         [Gauge, Description (
           "Measured total output power (in tenths of dB) transmitted by "
           "this Modem."),
          Units ("Tenths of Decibels") ]
      uint32 TotalOutputPower;
         [Description (         [Description (
           "The total number of octets received, including framing "          "Indicates the maximum currently attainable data rate for the Modem. "
           "characters."),          "This value will be equal or greater than the current line rate."),
          Mappingstrings {"MIB.IETF|RFC1213-MIB.ifInOctets",         Units ("Bits per Second") ]
                "MIF.DMTF|Network Adapter 802 Port|001.9"},     uint32 MaxDataRate;
        Counter  
       ]  
     uint64 OctetsReceived;  
 }; };
  
 // ===================================================================  
 // OOBAlertServiceOnNetworkAdapter  
 // ===================================================================  
    [Association,  
     Description (  
        "OOBAlertServiceOnNetworkAdapter defines where the out of band "  
        "alerting Service is implemented. Currently, the Service can "  
        "either employ a Modem or a NetworkAdapter to send alerts.")  
    ]  
 class CIM_OOBAlertServiceOnNetworkAdapter : CIM_DeviceServiceImplementation  
 {  
       [Override ("Antecedent"),  
        Description (  
         "The NetworkAdapter which implements the Service."),  
        Max (1)  
       ]  
    CIM_NetworkAdapter REF Antecedent;  
       [Override ("Dependent"),  
        Description (  
         "The alerting Service provided on the NetworkAdapter.")  
       ]  
    CIM_OOBAlertService REF Dependent;  
 };  
  
 // =================================================================== // ===================================================================
 // WakeUpServiceOnNetworkAdapter  // CableModem
 // =================================================================== // ===================================================================
    [Association,     [Description (
     Description (       "The CableModem class represents a device for transmission "
        "WakeUpServiceOnNetworkAdapter defines where the WakeUpService "       "across a cable infrastructure.") ]
        "is implemented. Currently, the Service can either employ a Modem "  class CIM_CableModem: CIM_ConnectionBasedModem {
        "or a NetworkAdapter for wakeup.")  
    ]  
 class CIM_WakeUpServiceOnNetworkAdapter : CIM_DeviceServiceImplementation  
 {  
       [Override ("Antecedent"),  
        Description (  
         "The NetworkAdapter which implements the Service."),  
        Max (1)  
       ]  
    CIM_NetworkAdapter REF Antecedent;  
       [Override ("Dependent"),  
        Description (  
         "The wakeup Service provided on the NetworkAdapter.")  
       ]  
    CIM_WakeUpService REF Dependent;  
 }; };
  
   
 // =================================================================== // ===================================================================
 // EthernetAdapter  // CallBasedModem
 // =================================================================== // ===================================================================
    [Description ("Capabilities and management of an EthernetAdapter.")]     [Abstract, Description (
 class CIM_EthernetAdapter : CIM_NetworkAdapter       "CIM_CallBasedModem is the superclass for grouping the numerous "
 {       "types of call-based modems. The POTSModem is a type of call-"
         [Override ("NetworkAddresses"),       "based Modem.") ]
          Description (  class CIM_CallBasedModem : CIM_Modem {
           "Ethernet/802.3 MAC addresses formatted as twelve hexadecimal "  
           "digits (e.g. \"010203040506\"), with each pair representing "  
           "one of the six octets of the MAC address in \"canonical\" bit "  
           "order.  (Thus, the Group address bit is found in the low "  
           "order bit of the first character of the string.)"),  
          ArrayType ("Indexed")  
         ]  
     string NetworkAddresses[];  
         [Description (         [Description (
           "The maximum size of the INFO (non-MAC) field that will be "          "Indicates whether online fallback is enabled, to be negotiated "
           "received or transmitted."),          "by the Modem.") ]
          Mappingstrings {"MIB.IETF|BRIDGE-MIB.dot1dTpPortMaxInfo"}     boolean FallbackEnabled;
         ]  
     uint32 MaxDataSize;  
       [Description (       [Description (
         "Capabilities of the EthernetAdapter. For example, the "          "An array enumerating all the compression protocols supported "
         "Device may support AlertOnLan, WakeOnLan, Load Balancing "          "by the Modem."),
         "and/or FailOver. If failover or load balancing "         Values {"Unknown", "Other", "No Compression", "MNP 5", "V.42bis",
         "capabilities are listed, a SpareGroup (failover) or "                 "MNP 3", "MNP 4", "V.58", "PEP", "HST"},
         "ExtraCapacityGroup (load balancing) should also be defined "         ModelCorrespondence {
         "to completely describe the capability."),          "CIM_CallBasedModem.OtherCompressionDescription"} ]
        ArrayType ("Indexed"),     uint16 CompressionSupported[];
        Values {"Unknown", "Other", "AlertOnLan", "WakeOnLan",        [Description (
              "FailOver", "LoadBalancing"},          "Description of the compression type when \"Other \" (value=1) "
           "is defined in the CompressionSupported array. If there are "
           "multiple \"Other\" types, then combine their descriptions into "
           "a single string."),
          ModelCorrespondence {"CIM_CallBasedModem.CompressionSupported"} ]
      string OtherCompressionDescription;
         [Description (
           "Describes the current data compression characteristics of the "
           "Modem. "),
          Values {"Unknown", "Other", "No Compression", "MNP 5", "V.42bis",
                  "MNP 3", "MNP 4", "V.58", "PEP", "HST"},
          ModelCorrespondence {"CIM_CallBasedModem.CompressionSupported",
           "CIM_CallBasedModem.OtherCompressionInfoDescription"}  ]
      uint16 CompressionInfo;
         [Description (
           "Description of the current compression type when \"Other\" "
           "(value=1) is specified in the CompressionInfo property."),
          ModelCorrespondence {"CIM_CallBasedModem.CompressionInfo"} ]
      string OtherCompressionInfoDescription;
         [Description (
           "An array enumerating all the modulation protocols supported by "
           "the Modem. The beginning entries in the Values qualifier array "
           "are mapped from the CIM_POTSModem ModulationScheme property."),
          Values {"Unknown", "Other", "Not Supported", "Bell 103",
                  "Bell 212A", "V.22bis", "V.32", "V.32bis", "V.terbo",
                  "V.FC", "V.34", "V.34bis", "V.17 (G3 Fax Call)", "V.21",
                  "V.22", "V.23 Constant Carrier (1200/75)",
                  "V.23 Switched Carrier (Half Duplex)", "V.26bis",
                  "V.26ter", "V.27ter (G3 Fax Call)",
                  "V.29 HD (G3 Fax Call)", "V.34 HD (G3 Fax Call)",
                  "V.90 Issue 1 (Asymmetric)", "V.90 Issue 2 (Symmetric)",
                  "V.58", "X2", "K56FLEX", "V.Fast", "PEP", "HST"},
          ModelCorrespondence {
           "CIM_CallBasedModem.OtherModulationDescription"} ]
      uint16 ModulationSupported[];
         [Description (
           "Description of the current modulation type when \"Other\" "
           "(value=1) is specified in the ModulationSupported property. "
           "If there are multiple \"Other\" types, then combine their "
           "descriptions into a single string."),
          ModelCorrespondence {"CIM_CallBasedModem.ModulationSupported"} ]
      string OtherModulationDescription;
         [Description (
           "Describes the current modulation scheme of the Modem."),
          Values {"Unknown", "Other", "Not Supported", "Bell 103",
                  "Bell 212A", "V.22bis", "V.32", "V.32bis", "V.terbo",
                  "V.FC", "V.34", "V.34bis", "V.17 (G3 Fax Call)", "V.21",
                  "V.22", "V.23 Constant Carrier (1200/75)",
                  "V.23 Switched Carrier (Half Duplex)", "V.26bis",
                  "V.26ter", "V.27ter (G3 Fax Call)",
                  "V.29 HD (G3 Fax Call)", "V.34 HD (G3 Fax Call)",
                  "V.90 Issue 1 (Asymmetric)", "V.90 Issue 2 (Symmetric)",
                  "V.58", "X2", "K56FLEX", "V.Fast", "PEP", "HST"},
          ModelCorrespondence {"CIM_CallBasedModem.ModulationSupported",
           "CIM_CallBasedModem.OtherSchemeDescription"}  ]
      uint16 ModulationScheme;
         [Description (
           "Description of the current modulation type when \"Other\" "
           "(value=1) is specified in the ModulationScheme property."),
          ModelCorrespondence {"CIM_CallBasedModem.ModulationScheme"} ]
      string OtherSchemeDescription;
         [Description (
           "An array enumerating the error control protocols supported "
           "by the Modem. The beginning entries in the Values qualifier "
           "array are mapped from the CIM_POTSModem ErrorControlInfo "
           "property."),
          Values {"Unknown", "Other", "No Error Correction", "MNP 4",
                  "LAPM", "V.58", "ECP Enhanced Cellular Protocol",
                  "ETC Enhanced Throughput Cellular", "MNP 1", "MNP 2",
                  "MNP 3", "MNP10", "PEP", "HST"},
        ModelCorrespondence {        ModelCorrespondence {
              "CIM_EthernetAdapter.CapabilityDescriptions"}          "CIM_CallBasedModem.OtherErrorControlDescription"} ]
       ]     uint16 ErrorControlSupported[];
    uint16 Capabilities[];  
       [Description (       [Description (
         "An array of free-form strings providing more detailed "          "Description of the error control type when \"Other\" (value="
         "explanations for any of the EthernetAdapter features "          "1) is specified in the ErrorControlSupported property. If "
         "indicated in the Capabilities array. Note, each entry of "          "there are multiple \"Other\" types, then combine their "
         "this array is related to the entry in the Capabilities "          "descriptions into a single string."),
         "array that is located at the same index."),         ModelCorrespondence {
        ArrayType ("Indexed"),          "CIM_CallBasedModem.ErrorControlSupported"} ]
        ModelCorrespondence {"CIM_EthernetAdapter.Capabilities"}     string OtherErrorControlDescription;
       ]  
    string CapabilityDescriptions[];  
       [Description (       [Description (
         "Specifies which capabilities are enabled from the list "          "Describes the current error correction characteristics of the "
         "of all supported ones, defined in the Capabilities array."),          "Modem."),
        Values {"Unknown", "Other", "AlertOnLan", "WakeOnLan",         Values {"Unknown", "Other", "No Error Correction", "MNP 4",
              "FailOver", "LoadBalancing"},                 "LAPM", "V.58", "ECP Enhanced Cellular Protocol",
        ModelCorrespondence {"CIM_EthernetAdapter.Capabilities"}                 "ETC Enhanced Throughput Cellular", "MNP 1", "MNP 2",
       ]                 "MNP 3", "MNP10", "PEP", "HST"},
    uint16 EnabledCapabilities[];         ModelCorrespondence {"CIM_CallBasedModem.ErrorControlSupported",
           "CIM_CallBasedModem.OtherErrorControlInfoDescription"}  ]
      uint16 ErrorControlInfo;
       [Description (       [Description (
         "The number of times there was an invalid data symbol when "          "Description of the error control when \"Other\" (value=1) "
         "a valid carrier was present. The count is incremented at "          "is defined as the value of the ErrorControlInfo property."),
         "most once per carrier event, even if multiple symbol "         ModelCorrespondence {"CIM_CallBasedModem.ErrorControlInfo"} ]
         "errors occur during the carrier event."),     string OtherErrorControlInfoDescription;
        MappingStrings {"MIB.IETF|EtherLike-MIB.dot3StatsSymbolErrors"},        [Description ("Time of last reset of the Modem.") ]
        Counter     datetime TimeOfLastReset;
       ]  
    uint32 SymbolErrors;  
       [Description ("The total number of packets transmitted."),  
        MappingStrings {"MIF.DMTF|Network Adapter 802 Port|001.6"},  
        Counter  
       ]  
    uint64 TotalPacketsTransmitted;  
       [Description ("The total number of packets received."),  
        MappingStrings {"MIF.DMTF|Network Adapter 802 Port|001.8"},  
        Counter  
       ]  
    uint64 TotalPacketsReceived;  
         [Description (         [Description (
           "A count of frames received on a particular interface "          "The rate at which the receiver and transmitter are or were "
           "that are not an integral number of octets in length and do "          "last cooperating, on a call, before disconnection."),
           "not pass the FCS check. The count represented by an "         Units ("Bits per Second") ]
           "instance of this object is incremented when the alignment"     uint32 CallSpeed;
           "Error status is returned by the MAC layer to the LLC (or "  
           "other MAC user). Received frames for which multiple error "  
           "conditions obtain are, according to the conventions of IEEE "  
           "802.3 Layer Management, counted exclusively according to "  
           "the error status presented to the LLC."),  
          Mappingstrings {  
                "MIB.IETF|EtherLike-MIB.dot3StatsAlignmentErrors"},  
        Counter  
       ]  
     uint32 AlignmentErrors;  
         [Description (         [Description (
           "A count of frames received on a particular interface "          "Status of the Modem. For example, information regarding "
           "that are an integral number of octets in length but do "          "modem negotiation or whether the modem is connected (values "
           "not pass the FCS check. The count represented by an "          "8 and 9, respectively) can be conveyed in this property."),
           "instance of this object is incremented when the frame"         Values {"Unknown", "Other", "Offline", "On Hook", "Dialing",
           "CheckError status is returned by the MAC layer to the "                 "Waiting for Answer", "Ringing", "Modem Detected",
           "LLC (or other MAC user). Received frames for which "                 "Negotiating", "Online", "Error"} ]
           "multiple error conditions obtain are, according to the "     uint16 CallStatus;
           "conventions of IEEE 802.3 Layer Management, counted "  
           "exclusively according to the error status presented to "  
           "the LLC."),  
          Mappingstrings {  
                "MIB.IETF|EtherLike-MIB.dot3StatsFCSErrors"},  
        Counter  
       ]  
     uint32 FCSErrors;  
         [Description (         [Description (
           "A count of successfully transmitted frames on a particular "          "Total number of characters sent by the Device on the last "
           "interface for which transmission is inhibited by exactly "          "or current call. That a call is in-progress is indicated by "
           "one collision. A frame that is counted by an instance of "          "the CallStatus property."),
           "this object is not counted by the corresponding instance "         Counter ]
           "of the MultipleCollisionFrames property."),     uint32 CharsSent;
          Mappingstrings {  
                "MIB.IETF|EtherLike-MIB.dot3StatsSingleCollisionFrames"},  
        Counter  
       ]  
     uint32 SingleCollisionFrames;  
         [Description (         [Description (
           "A count of successfully transmitted frames on a particular "          "Total number of characters received by the Device on the last "
           "interface for which transmission is inhibited by more than "          "or current call. That a call is in-progress is indicated by the "
           "one collision. A frame that is counted by an instance of "          "CallStatus property."),
           "this object is not counted by the corresponding instance "         Counter ]
           "of the SingleCollisionFrames property."),     uint32 CharsReceived;
          Mappingstrings {  
                "MIB.IETF|EtherLike-MIB.dot3StatsMultipleCollisionFrames"},  
        Counter  
       ]  
     uint32 MultipleCollisionFrames;  
         [Description (         [Description (
           "A count of times that the SQE TEST ERROR message is "          "Total number of characters lost by the Device on the last or "
           "generated by the PLS sublayer for a particular interface. "          "current call. That a call is in-progress is indicated by the "
           "The SQE TEST ERROR message is defined in section "          "CallStatus property."),
           "7.2.2.2.4 of ANSI/IEEE 802.3-1985 and its generation is "         Counter ]
           "described in section 7.2.4.6 of the same document."),     uint32 CharsLost;
          Mappingstrings {  
                "MIB.IETF|EtherLike-MIB.dot3StatsSQETestErrors"},  
        Counter  
       ]  
     uint32 SQETestErrors;  
         [Description (         [Description (
           "A count of frames for which the first transmission "          "Total number of blocks sent by the Device on the last or "
           "attempt on a particular interface is delayed because the "          "current call. That a call is in-progress is indicated by the "
           "medium is busy. The count represented by an instance of "          "CallStatus property."),
           "this object does not include frames involved in collisions."),         Counter ]
          Mappingstrings {     uint32 BlocksSent;
                "MIB.IETF|EtherLike-MIB.dot3StatsDeferredTransmissions"},  
        Counter  
       ]  
     uint32 DeferredTransmissions;  
         [Description (         [Description (
           "The number of times that a collision is detected on a "          "Total number of blocks resent by the Device on the last or "
           "particular interface later than 512 bit-times into the "          "current call. That a call is in-progress is indicated by the "
           "transmission of a packet. Five hundred and twelve bit-"          "CallStatus property."),
           "times corresponds to 51.2 microseconds on a 10 Mbit/s "         Counter ]
           "system. A (late) collision included in a count "     uint32 BlocksResent;
           "represented by an instance of this object is also "  
           "considered as a (generic) collision for purposes of "  
           "other collision-related statistics."),  
          Mappingstrings {  
                "MIB.IETF|EtherLike-MIB.dot3StatsLateCollisions"},  
        Counter  
       ]  
     uint32 LateCollisions;  
         [Description (         [Description (
           "A count of frames for which transmission on a particular "          "Total number of blocks received by the Device on the last or "
           "interface fails due to excessive collisions."),          "current call. That a call is in-progress is indicated by the "
          Mappingstrings {          "CallStatus property."),
                "MIB.IETF|EtherLike-MIB.dot3StatsExcessiveCollisions"},         Counter ]
        Counter     uint32 BlocksReceived;
       ]  
     uint32 ExcessiveCollisions;  
         [Description (         [Description (
           "A count of frames for which transmission on a particular "          "Total number of block errors seen by the Device on the last "
           "interface fails due to an internal MAC sublayer transmit "          "or current call. That a call is in-progress is indicated by the "
           "error. A frame is only counted by an instance of this "          "CallStatus property."),
           "object if it is not counted by the corresponding instance "         Counter ]
           "of either the LateCollisions property, the Excessive"     uint32 BlockErrors;
           "Collisions property, or the CarrierSenseErrors property. "  
           "The precise meaning of the count represented by an instance "  
           "of this object is implementation-specific.  In particular, "  
           "an instance of this object may represent a count of "  
           "transmission errors on a particular interface that are "  
           "not otherwise counted."),  
          Mappingstrings {  
           "MIB.IETF|EtherLike-MIB.dot3StatsInternalMacTransmitErrors"},  
        Counter  
       ]  
     uint32 InternalMACTransmitErrors;  
         [Description (         [Description (
           "A count of frames for which reception on a particular "          "Length of the last or current call. That a call is in-progress "
           "interface fails due to an internal MAC sublayer receive "          "is indicated by the CallStatus property. The 'interval' "
           "error. A frame is only counted by an instance of this "          "format of the datetime data type should be used for the property "
           "object if it is not counted by the corresponding instance "          "value.") ]
           "of either the FrameTooLongs property, the AlignmentErrors "     datetime CallLength;
           "property, or the FCSErrors property. The precise meaning "  
           "of the count represented by an instance of this object is "  
           "implementation-specific.  In particular, an instance of "  
           "this object may represent a count of receive errors on a "  
           "particular interface that are not otherwise counted."),  
          Mappingstrings {  
                "MIB.IETF|EtherLike-MIB.dot3StatsInternalMacReceiveErrors"},  
        Counter  
       ]  
     uint32 InternalMACReceiveErrors;  
         [Description (         [Description (
           "The number of times that the carrier sense condition was "          "Last or current number dialed to which the statistics apply, or "
           "lost or never asserted when attempting to transmit a frame "          "NULL if the call was incoming.") ]
           "on a particular interface. The count represented by an "     string NumberDialed;
           "instance of this object is incremented at most once per "  };
           "transmission attempt, even if the carrier sense condition "  
           "fluctuates during a transmission attempt."),  
          Mappingstrings {  // ===================================================================
                "MIB.IETF|EtherLike-MIB.dot3StatsCarrierSenseErrors"},  // ISDNModem
        Counter  // ===================================================================
       ]  
     uint32 CarrierSenseErrors;  
         [Description (         [Description (
           "A count of frames received on a particular interface that "       "The ISDNModem class, a kind of call-based Modem. Properties "
           "exceed the maximum permitted frame size. The count "       "will be defined in a future release of the model.") ]
           "represented by an instance of this object is incremented "  class CIM_ISDNModem: CIM_CallBasedModem {
           "when the FrameTooLong status is returned by the MAC layer "  
           "to the LLC (or other MAC user). Received frames for which "  
           "multiple error conditions obtain are, according to the "  
           "conventions of IEEE 802.3 Layer Management, counted "  
           "exclusively according to the error status presented to "  
           "the LLC."),  
          Mappingstrings {  
                "MIB.IETF|EtherLike-MIB.dot3StatsFrameTooLongs"},  
        Counter  
       ]  
     uint32 FrameTooLongs;  
 }; };
  
   
 // =================================================================== // ===================================================================
 // TokenRingAdapter  // POTSModem
 // =================================================================== // ===================================================================
    [Description ("Capabilities and management of a TokenRingAdapter.")]  
 class CIM_TokenRingAdapter : CIM_NetworkAdapter  
 {  
         [Override ("NetworkAddresses"),  
          Description (  
           "Token Ring/802.5 MAC addresses formatted as twelve "  
           "hexadecimal digits (e.g. \"010203040506\"), with each pair "  
           "representing one of the six octets of the MAC address in "  
           "\"canonical\" bit order.  (Thus, the Group address bit is "  
           "found in the low order bit of the first character of the "  
           "string.)"),  
          ArrayType ("Indexed")  
         ]  
     string NetworkAddresses[];  
         [Description (         [Description (
           "The maximum size of the INFO (non-MAC) field that will be "       "The POTSModem class represents a Device that translates "
           "received or transmitted."),       "binary data into wave modulations for sound based "
          Mappingstrings {"MIB.IETF|BRIDGE-MIB.dot1dTpPortMaxInfo"}       "transmission.  It connects to the POTS (Plain Old Telephone "
         ]       "System) network.") ]
     uint32 MaxDataSize;  class CIM_POTSModem : CIM_CallBasedModem {
       [Description (       [Description (
         "Capabilities of the TokenRingAdapter. For example, the Device "          "Capabilities of the POTSModem. For example, the Device "
         "may support AlertOnLan, WakeOnLan, Load Balancing and/or "          "may support distinctive ring, caller ID, fax, voice, etc."),
         "Failover. If failover or load balancing capabilities are "  
         "listed, a SpareGroup (failover) or ExtraCapacityGroup (load "  
         "balancing) should also be defined to completely describe the "  
         "capability."),  
        ArrayType ("Indexed"),        ArrayType ("Indexed"),
        Values {"Unknown", "Other", "AlertOnLan", "WakeOnLan",         Values {"Unknown", "Other", "Distinctive Ring", "Caller ID",
              "FailOver", "LoadBalancing"},                 "Voice", "Fax Class 1", "Fax Class 2", "WakeOnRing",
        ModelCorrespondence {                 "Fax Group 3", "GSM Support", "AMPS Support",
              "CIM_TokenRingAdapter.CapabilityDescriptions"}                 "OOB Alerting", "Worldwide Country Support"},
       ]         ModelCorrespondence {"CIM_POTSModem.CapabilityDescriptions"} ]
    uint16 Capabilities[];    uint16 Capabilities[];
       [Description (       [Description (
         "An array of free-form strings providing more detailed "         "An array of free-form strings providing more detailed "
         "explanations for any of the TokenRingAdapter features "          "explanations for any of the POTSModem features indicated "
         "indicated in the Capabilities array. Note, each entry of "          "in the Capabilities array. Note, each entry of this array "
         "this array is related to the entry in the Capabilities array "          "is related to the entry in the Capabilities array that "
         "that is located at the same index."),          "is located at the same index."),
        ArrayType ("Indexed"),        ArrayType ("Indexed"),
        ModelCorrespondence {"CIM_TokenRingAdapter.Capabilities"}         ModelCorrespondence {"CIM_POTSModem.Capabilities"} ]
       ]  
    string CapabilityDescriptions[];    string CapabilityDescriptions[];
       [Description (       [Description (
         "Specifies which of the capabilities from the \"Capabilities\" "          "Specifies which capabilities are enabled from the list of "
         "property are currently enabled."),          "ones supported, defined in the Capabilities array."),
        Values {"Unknown", "Other", "AlertOnLan", "WakeOnLan",         Values {"Unknown", "Other", "Distinctive Ring", "Caller ID",
              "FailOver", "LoadBalancing"},                 "Voice", "Fax Class 1", "Fax Class 2", "WakeOnRing",
        ModelCorrespondence {"CIM_TokenRingAdapter.Capabilities"}                 "Fax Group 3", "GSM Support", "AMPS Support",
       ]                 "OOB Alerting", "Worldwide Country Support"},
          ModelCorrespondence {"CIM_POTSModem.Capabilities"} ]
    uint16 EnabledCapabilities[];    uint16 EnabledCapabilities[];
       [Description (       [Description (
         "The current status which can be used to diagnose fluctuating "          "Defines the maximum settable communication speed "
         "problems that can occur on token rings, after a station has "          "to the COM Port for an external modem.  Enter 0 if "
         "successfully been added to the ring. Before an open is completed, "          "not applicable."),
         "this object contains the value indicating \"no status\" (131072). "         Units ("Bits per Second") ]
         "(The RingState and RingOpenStatus properties are also provided "     uint32 MaxBaudRateToSerialPort;
         "for debugging problems when the station can not even enter the "  
         "ring.) The property's value is a sum of values, one for each "  
         "currently applicable condition. The following values are defined "  
         "for various conditions:\n"  
         "0 = No Problems Detected, 32 = Ring Recovery, "  
         "64 = Single Station, 256 = Remove Received, 512 = Reserved, "  
         "1024 = Auto-Removal Error, 2048 = Lobe Wire Fault, "  
         "4096 = Transmit Beacon, 8192 = Soft Error, 16384 = Hard Error, "  
         "32768 = Signal Loss, 131072 = No Status, Open Not Completed."),  
        MappingStrings {  
         "MIB.IETF|IEEE 802.5 Token Ring MIB.dot5RingStatus"}  
       ]  
    uint32 RingStatus;  
       [Description (       [Description (
         "The current Device state with respect to entering or leaving "          "Defines the maximum settable communication speed "
         "the ring." ),          "for accessing the phone system."),
        Values {"Opened", "Closed", "Opening", "Closing", "Open Failure",         Units ("Bits per Second") ]
              "Ring Failure"},     uint32 MaxBaudRateToPhone;
        MappingStrings {"MIB.IETF|IEEE 802.5 Token Ring MIB.dot5RingState"}  
       ]  
    uint16 RingState;  
       [Description (       [Description (
         "This property indicates the success, or the reason for failure, "          "Boolean indicating that synchronous, as well as "
         "of the station's most recent attempt to enter the ring." ),          "asynchronous, communication is supported.") ]
        Values {"No Open Attempted", "Bad Parameter", "Lobe Failed",     boolean SupportsSynchronousConnect;
              "Signal Loss", "Insertion Timeout", "Ring Failed", "Beaconing",  
              "Duplicate MAC", "Request Failed", "Remove Received",  
              "Last Open Successful"},  
        MappingStrings {  
         "MIB.IETF|IEEE 802.5 Token Ring MIB.dot5RingOpenStatus"}  
       ]  
    uint16 RingOpenStatus;  
       [Description ("The ring's bandwidth."),  
        Values {"Unknown", "Other", "One Megabit", "Four Megabit",  
              "Sixteen Megabit"},  
        MappingStrings {"MIB.IETF|IEEE 802.5 Token Ring MIB.dot5RingSpeed"}  
       ]  
    uint16 RingSpeed;  
       [Description (       [Description (
         "This counter is incremented when a station detects the absence "          "DialType is an integer indicating whether tone (value=1) or "
         "of transitions for five half-bit timers (burst-five errors)."),          "pulse dialing (value=2) is used. \"Unknown\" (0) can also be "
        MappingStrings {          "defined."),
         "MIB.IETF|IEEE 802.5 Token Ring MIB.dot5StatsBurstErrors"},         Values {"Unknown", "Tone", "Pulse"} ]
        Counter     uint16 DialType;
       ]  
    uint32 BurstErrors;  
       [Description (       [Description (
         "This counter is incremented when a station receives an AMP or "          "InactivityTimeout defines the time limit (in seconds) "
         "SMP frame in which A is equal to C is equal to 0, and then "          "for automatic disconnection of the phone line, if no data "
         "receives another SMP frame with A equal to C equal to 0 without "          "is exchanged.  A value of 0 indicates that this "
         "first receiving an AMP frame. It denotes a station that cannot "          "feature is present but not enabled."),
         "set the AC bits properly."),         Units ("Seconds") ]
        MappingStrings {     uint32 InactivityTimeout;
         "MIB.IETF|IEEE 802.5 Token Ring MIB.dot5StatsACErrors"},  
        Counter  
       ]  
    uint32 ACErrors;  
       [Description (       [Description (
         "This counter is incremented when a station transmits an abort "          "Describes the volume level of the audible tones from the "
         "delimiter while transmitting data."),          "Modem. For example, high, medium or low volume can be "
        MappingStrings {          "reported (values 3, 4 or 5, respectively)."),
         "MIB.IETF|IEEE 802.5 Token Ring MIB.dot5StatsAbortTransErrors"},         Values {"Unknown", "Other", "Not Supported", "High",
        Counter                 "Medium", "Low", "Off", "Auto"} ]
       ]     uint16 SpeakerVolumeInfo;
    uint32 AbortTransErrors;        [MaxLen (64), Description (
           "CountriesSupported is an array of strings defining the "
           "countries in which the POTSModem operates.") ]
      string CountriesSupported[];
         [MaxLen (64), Description (
           "CountrySelected is a string value defining the country "
           "for which the Modem is currently programmed. When multiple "
           "countries are supported, this property defines which one "
           "is currently selected for use.") ]
      string CountrySelected;
       [Description (       [Description (
         "This counter is incremented when a station recognizes an "          "Number of rings before the Modem answers an incoming call.") ]
         "internal error."),     uint8 RingsBeforeAnswer;
        MappingStrings {  
         "MIB.IETF|IEEE 802.5 Token Ring MIB.dot5StatsInternalErrors"},  
        Counter  
       ]  
    uint32 InternalErrors;  
       [Description (       [Description (
         "This counter is incremented when a station is transmitting "          "MaxNumberOfPasswords specifies the number of passwords "
         "and its TRR timer expires. This denotes a condition where a "          "definable in the Modem itself.  If this feature is not "
         "transmitting station in strip mode does not receive the "          "supported, enter 0.") ]
         "trailer of the frame before the TRR timer goes off."),     uint16 MaxNumberOfPasswords;
        MappingStrings {        [MaxLen (24), Description (
         "MIB.IETF|IEEE 802.5 Token Ring MIB.dot5StatsLostFrameErrors"},          "CurrentPasswords is an array containing the currently defined "
        Counter          "passwords for the Modem.  This array may be left blank for "
       ]          "security reasons.") ]
    uint32 LostFrameErrors;     string CurrentPasswords[];
       [Description (       [Description (
         "This counter is incremented when a station recognizes a frame "          "Indication of whether the Modem supports call-back.") ]
         "addressed to its specific address, but has no available buffer "     boolean SupportsCallback;
         "space - indicating that the station is congested."),  
       MappingStrings {  
        "MIB.IETF|IEEE 802.5 Token Ring MIB.dot5StatsReceiveCongestions"},  
        Counter  
       ]  
    uint32 ReceiveCongestions;  
       [Description (       [Description (
         "This counter is incremented when a station recognizes a frame "          "AnswerMode defines the current auto-answer/call-back "
         "addressed to its specific address and detects that the FS field "          "setting for the Modem."),
         "A bits are set to 1 indicating a possible line hit or duplicate "         Values {"Unknown", "Other", "Disabled", "Manual Answer",
         "address."),                 "Auto Answer", "Auto Answer with Call-Back"} ]
        MappingStrings {     uint16 AnswerMode;
         "MIB.IETF|IEEE 802.5 Token Ring MIB.dot5StatsFrameCopiedErrors"},  
        Counter  
       ]  
    uint32 FrameCopiedErrors;  
       [Description (       [Description (
         "This counter is incremented when a station acting as the active "          "The current equalization setting for the Modem."),
         "monitor recognizes an error condition that needs a token "         Values {"Unknown", "Other", "Long", "Short"} ]
         "transmitted."),     uint16 Equalization;
        MappingStrings {        [Description ("List of black-listed numbers for the Modem.") ]
        "MIB.IETF|IEEE 802.5 Token Ring MIB.dot5StatsTokenErrors"},     string BlackListedNumbers[];
        Counter  };
       ]  
    uint32 TokenErrors;  
   // ===================================================================
   // Unimodem
   // ===================================================================
      [Description (
        "Unimodem is a POTSModem that supports the Unimodem 1.0 "
        "Specification.") ]
   class CIM_Unimodem : CIM_POTSModem {
         [Description ("Current call setup result code."),
          Values {"No Previous Call", "No Dial Tone Detected",
                  "Reorder Signal Detected, Network Busy",
                  "Busy Signal Detected", "No Recognized Signal Detected",
                  "Voice Detected", "Text Telephone Detected",
                  "Data Answering Signal Detected",
                  "Data Calling Signal Detected",
                  "Fax Answering Signal Detected",
                  "Fax Calling Signal Detected", "V.8bis Signal Detected"} ]
      uint16 CallSetupResultCode;
         [Description ("Current multi-media mode of the Unimodem."),
          Values {"Data Only", "Fax Only", "Voice Only", "Voice View",
                  "ASVD V.61", "ASVD V.34Q", "DSVD Multi-Tech", "DSVD 1.2",
                  "DSVD V.70", "Video Telephony H.324", "Other V.80 Call"} ]
      uint16 MultiMediaMode;
         [Description (
           "Current DTE-DCE interface mode of the Unimodem, such as "
           "asynchronous, v.80 transparent or framed synchronous modes."),
          Values {"Async Data", "V.80 Transparent Synchronous Mode",
                  "V.80 Framed Synchronous Mode"} ]
      uint16 DTEDCEInterfaceMode;
         [Description ("The active transmit modulation scheme."),
          Values {"V.17 (G3 Fax Call)", "V.21", "V.22", "V.22bis",
                  "V.23 Constant Carrier (1200/75)",
                  "V.23 Switched Carrier (Half Duplex)", "V.26bis",
                  "V.26ter", "V.27ter (G3 Fax Call)",
                  "V.29 HD (G3 Fax Call)", "V.32", "V.32bis", "V.34",
                  "V.34 HD (G3 Fax Call)", "V.90 Issue 1 (Asymmetric)",
                  "V.90 Issue 2 (Symmetric)", "Reserved (V.58)", "X2",
                  "K56FLEX", "V.FC", "V.32terbo", "Bell 212A",
                  "Bell 103", "Reserved for Mfgs"} ]
      uint16 TransmitCarrierNegotiation;
         [Description ("The active receive modulation scheme."),
          Values {"V.17 (G3 Fax Call)", "V.21", "V.22", "V.22bis",
                  "V.23 Constant Carrier (1200/75)",
                  "V.23 Switched Carrier (Half Duplex)", "V.26bis",
                  "V.26ter", "V.27ter (G3 Fax Call)",
                  "V.29 HD (G3 Fax Call)", "V.32", "V.32bis", "V.34",
                  "V.34 HD (G3 Fax Call)", "V.90 Issue 1 (Asymmetric)",
                  "V.90 Issue 2 (Symmetric)", "Reserved (V.58)", "X2",
                  "K56FLEX", "V.FC", "V.32terbo", "Bell 212A",
                  "Bell 103", "Reserved for Mfgs"}  ]
      uint16 ReceiveCarrierNegotiation;
         [Description (
           "Initial transmit carrier data rate for the current or "
           "last call, in bits per second."),
          Units ("Bits per Second") ]
      uint32 InitialTransmitCarrierDataRate;
         [Description (
           "Initial receive carrier data rate for the current or last "
           "call, in bits per second."),
          Units ("Bits per Second") ]
      uint32 InitialReceiveCarrierDataRate;
         [Description (
           "The number of carrier retrains requested during the current "
           "or last call."),
          Counter ]
      uint8 CarrierRetrainsRequested;
         [Description (
           "The number of carrier retrains granted during the current "
           "or last call."),
          Counter ]
      uint8 CarrierRetrainsGranted;
         [Description (
           "Final transmit carrier data rate of the current or last "
           "call, in bits per second."),
          Units ("Bits per Second") ]
      uint32 FinalTransmitCarrierDataRate;
         [Description (
           "Final receive carrier data rate of the current or last "
           "call, in bits per second."),
          Units ("Bits per Second") ]
      uint32 FinalReceiveCarrierDataRate;
         [Description ("Cause of last call termination."),
          Values {"Cause Unidentified", "No Previous Call",
                  "Call Is Still in Progress", "Call Waiting Signal Detected",
                  "Delayed", "NMS Initiated Dial Call",
                  "NMS Initiated Leased Line Restoral", "NMS Initiated Redial",
                  "NMS Initiated Dial Disconnect", "Power Loss",
                  "Equipment Failure", "Front Panel Disconnect Requested",
                  "Front Panel Leased Line Restoral",
                  "Automatic Leased Line Restoral", "Inactivity Timer Expired",
                  "cct116 Restoral Request", "cct108 Is Off Inhibits Dial",
                  "cct108 Turned Off", "No Number Provided", "Blacklisted Number",
                  "Call Attempts Limit Exceeded", "Extension Phone Off Hook",
                  "Call Setup Fail Timer Expired", "Incoming Call Detected",
                  "Loop Current Interrupted", "No Dial Tone", "Voice Detected",
                  "Reorder Tone", "Sit Tone", "Engaged Tone",
                  "Long Space Disconnect", "Carrier Lost", "Training Failed",
                  "No Modulation in Common", "Retrain Failed",
                  "Retrain Attempt Count Exceeded", "GSTN Cleardown Received",
                  "Fax Detected", "In Test Mode",
                  "Intrusive Self Test Initiated", "Any Key Abort",
                  "DTE Hangup Command", "DTE Reset Command", "Frame Reject",
                  "No Error Control Established", "Protocol Violation",
                  "n400 Exceeded", "Negotiation Failed",
                  "Disconnect Frame Received", "Sabme Frame Received",
                  "Loss Of Synchronization"} ]
      uint16 TerminationCause;
         [Description (
           "Diagnostic Command Specification, Unimodem revision number.") ]
      string UnimodemRevision;
         [Gauge, Description (
           "Estimated noise level for the last or current call in "
           "-dBm. Values are in the range of 0-100."),
          Units ("-dBm") ]
      uint32 EstimatedNoiseLevel;
         [Description (
           "Normalized mean squared error for the last or current call.") ]
      uint32 NormalizedMeanSquaredError;
         [Description (
           "Temporary carrier loss event count for the last or current "
           "call."),
          Counter ]
      uint8 TemporaryCarrierLossEventCount;
       [Description (       [Description (
         "The number of Soft Errors that the Device has detected. It "          "Carrier Rate re-negotiation event count for the last or "
         "directly corresponds to the number of Report Error MAC frames "          "current call."),
         "that this Device has transmitted. Soft Errors are those which "         Counter ]
         "are recoverable by the MAC layer protocols."),     uint8 CarrierRenegotiationEventCount;
        MappingStrings {  
         "MIB.IETF|IEEE 802.5 Token Ring MIB.dot5StatsSoftErrors"},  
        Counter  
       ]  
    uint32 SoftErrors;  
       [Description (       [Description (
         "The number of times this Device has detected an immediately "          "Error Control frame size in bytes for the last or current call."),
         "recoverable fatal error. It denotes the number of times this "         Units ("Bytes") ]
         "Device is either transmitting or receiving beacon MAC frames. "),     uint16 ErrorControlFrameSize;
        MappingStrings {  
         "MIB.IETF|IEEE 802.5 Token Ring MIB.dot5StatsHardErrors"},  
        Counter  
       ]  
    uint32 HardErrors;  
       [Description (       [Description (
         "The number of times this Device has detected the loss of "          "Error control link timeouts in transmission for the last or "
         "signal condition from the ring."),          "current call."),
        MappingStrings {         Counter ]
         "MIB.IETF|IEEE 802.5 Token Ring MIB.dot5StatsSignalLoss"},     uint8 ErrorControlLinkTimeouts;
        Counter  
       ]  
    uint32 SignalLossCount;  
       [Description (       [Description (
         "The number of times this Device has transmitted a beacon "          "Error control link NAKs received for the last or current call."),
         "frame."),         Counter ]
        MappingStrings {     uint8 ErrorControlLinkNAKs;
         "MIB.IETF|IEEE 802.5 Token Ring MIB.dot5StatsTransmitBeacons"},  
        Counter  
       ]  
    uint32 TransmittedBeacons;  
       [Description (       [Description (
         "The number of Claim Token MAC frames received or transmitted "          "The flow control mechanism used in transmitting data."),
         "after the Device has received a Ring Purge MAC frame. This "         Values {"Unknown", "Off", "DC1/DC3", "V.24 ckt 106/133"} ]
         "counter signifies the number of times the ring has been purged "     uint16 TransmitFlowControl;
         "and is being recovered back into a normal operating state."),  
        MappingStrings {  
         "MIB.IETF|IEEE 802.5 Token Ring MIB.dot5StatsRecoverys"},  
        Counter  
       ]  
    uint32 Recoverys;  
       [Description (       [Description (
         "The number of times the Device has detected an open or short "          "The flow control mechanism used in receiving data."),
         "circuit in the lobe data path. The adapter will be closed and "         Values {"Unknown", "Off", "DC1/DC3", "V.24 ckt 106/133"} ]
         "RingState will signify this condition."),     uint16 ReceiveFlowControl;
        MappingStrings {  
         "MIB.IETF|IEEE 802.5 Token Ring MIB.dot5StatsLobeWires"},  
        Counter  
       ]  
    uint32 LobeWires;  
       [Description (       [Description (
         "The number of times the Device has received a Remove Ring "          "Number of transmit chars sent from the DTE for the last "
         "Station MAC frame request. When this frame is received, the "          "or current call. A continuous connection may exceed this value, "
         "Device will enter the close state and RingState will "          "given enough time. Typically these counters are implemented "
         "signify this condition."),          "as 32 bit counters, but additional bits may be provided and "
        MappingStrings {          "are accounted for in this property. If these counters hit "
         "MIB.IETF|IEEE 802.5 Token Ring MIB.dot5StatsRemoves"},          "maximum value, the DCE manufacturer may roll over to 0."),
        Counter         Counter ]
       ]     uint64 TransmitCharsSentFromDTE;
    uint32 Removes;  
       [Description (       [Description (
         "The number of times the Device has sensed that it is the "          "Number of receive chars sent to the DTE for the last or "
         "only station on the ring. This will happen if the Device "          "current call. A continuous connection may exceed this value, "
         "is the first one up on a ring, or if there is a hardware "          "given enough time. Typically these counters are implemented "
         "problem."),          "as 32 bit counters, but additional bits may be provided and "
       MappingStrings {          "are accounted for in this property. If these counters hit "
        "MIB.IETF|IEEE 802.5 Token Ring MIB.dot5StatsSingles"},          "maximum value, the DCE manufacturer may roll over to 0."),
        Counter         Counter ]
       ]     uint64 ReceiveCharsSentToDTE;
    uint32 Singles;  
       [Description (       [Description (
         "The number of times the Device has detected that the "          "Number of transmit characters lost for the last or current "
         "frequency of the incoming signal differs from the expected "          "call. A DCE may limit this counter to 16 bits, but additional "
         "frequency by more than that specified by the IEEE 802.5 "          "bits may be provided and are accounted for in this property."),
         "standard."),         Counter ]
        MappingStrings {     uint64 TransmitCharsLost;
         "MIB.IETF|IEEE 802.5 Token Ring MIB.dot5StatsFreqErrors"},  
        Counter  
       ]  
    uint32 FrequencyErrors;  
 };  
   
 // ==================================================================  
 // FibreChannelAdapter  
 // ==================================================================  
    [Description (    [Description (
        "Capabilities and management of a Fibre Channel Adapter.")          "Number of receive characters lost for the last or current "
    ]          "call. A DCE may limit this counter to 16 bits, but additional "
 class CIM_FibreChannelAdapter : CIM_NetworkAdapter          "bits may be provided and are accounted for in this property."),
 {         Counter ]
      uint64 ReceiveCharsLost;
       [Description (       [Description (
         "The maximum frame size, in bytes, supported by the Adapter."),          "Number of I-Frames transmitted for the last or current call. "
        Units ("Bytes")          "A continuous connection may exceed this value, given enough "
       ]          "time. Typically these counters are implemented as 32 bit "
    uint64 MaxFrameSize;          "counters, but additional bits may be provided and are accounted "
           "for in this property. If these counters hit maximum value, the "
           "DCE manufacturer may roll over to 0."),
          Counter ]
      uint64 TransmitIFrameCount;
       [Description (       [Description (
         "The Fibre Channel Classes of Service that are supported by "          "Number of I-Frames received for the last or current call. "
         "the Adapter, on its Ports. The currently negotiated COS for a "          "A continuous connection may exceed this value, given enough "
         "connection is a property (NegotiatedCOS) on the FibrePort"          "time. Typically these counters are implemented as 32 bit "
         "ActiveLogin association."),          "counters, but additional bits may be provided and are "
        Values {"Unknown", "1", "2", "3", "4", "6", "F"}          "accounted for in this property. If these counters hit maximum "
       ]          "value, the DCE manufacturer may roll over to 0."),
    uint16 SupportedCOS[];         Counter ]
      uint64 ReceiveIFrameCount;
       [Description (       [Description (
         "An array of integers indicating the Fibre Channel FC-4 "          "Number of I-Frame errors detected for the last or current "
         "protocols supported by the Adapter. The protocols that are "          "call, if error control protocol is running. A DCE may limit "
         "active and running are indicated in the CurrentFC4Types "          "this counter to 16 bits, but additional bits may be provided "
         "property. The values used in this array are taken from the "          "and are accounted for in this property."),
         "FC-GS2 (bitmapped) field defined in Table 11 of the standard. "         Counter ]
         "Also, FC-SB-2 codes are included from the T11 document, "     uint64 TransmitIFrameErrorCount;
         "236V0. If the FC4 Type is \"Vendor Unique\" (value=255), "  
         "then the specific vendor values (in the range, 0xE0 to 0xFF) "  
         "should be listed in the FC4VendorUniqueTypes property."),  
        ValueMap {"0", "1", "4", "5", "8", "9", "17", "18", "19", "21",  
                "22", "23", "25", "26", "27", "28", "32", "34", "36",  
                "64", "80", "81", "82", "88", "96", "255"},  
        Values {"Unknown", "Other", "ISO/IEC 8802 - 2 LLC",  
              "IP over FC", "SCSI - FCP", "SCSI - GPP",  
              "IPI - 3 Master", "IPI - 3 Slave", "IPI - 3 Peer",  
              "CP IPI - 3 Master", "CP IPI - 3 Slave",  
              "CP IPI - 3 Peer", "SBCCS Channel",  
              "SBCCS Control Unit", "FC-SB-2 Channel",  
              "FC-SB-2 Control Unit",  
              "Fibre Channel Services (FC-GS, FC-GS-2, FC-GS-3)",  
              "FC-SW", "FC - SNMP", "HIPPI - FP", "BBL Control",  
              "BBL FDDI Encapsulated LAN PDU",  
              "BBL 802.3 Encapsulated LAN PDU", "FC - VI", "FC - AV",  
              "Vendor Unique"},  
        ModelCorrespondence {  
              "CIM_FibreChannelAdapter.FC4VendorUniqueTypes"}  
       ]  
    uint16 FC4TypesSupported[];  
       [Description (       [Description (
         "When the FC4TypesSupported array contains the value 255 "          "Number of I-Frame errors detected for the last or current "
         "(\"Vendor Unique\"), then the property, FC4VendorUniqueTypes, "          "call, if error control protocol is running. A DCE may limit "
         "lists of all the vendor specific protocols supported by the "          "this counter to 16 bits, but additional bits may be provided "
         "Adapter. These values are in the range, 0xE0 to 0xFF."),          "and are accounted for in this property."),
        MinValue (240), MaxValue (255)         Counter ]
       ]     uint64 ReceivedIFrameErrorCount;
    uint16 FC4VendorUniqueTypes[];  
       [Description (       [Description (
         "An array of integers indicating the Fibre Channel FC-4 "          "Number of Call waiting events detected for the last or "
         "protocols currently running on the Adapter. A list of all "          "current call."),
         "protocols supported by the Adapter is indicated in the "         Counter ]
         "FC4TypesSupported property. The values used in this array "     uint8 CallWaitingEventCount;
         "are taken from the FC-GS2 (bitmapped) field defined in "  };
         "Table 11 of the standard. Also, FC-SB-2 codes are included "  
         "from the T11 document, 236V0. If the FC4 Type is \"Vendor "  
         "Unique\" (value=255), then the specific vendor values "  // ===================================================================
         "(in the range, 0xE0 to 0xFF) that are currently running "  //
         "should be listed in the CurrentFC4VendorTypes property."),  //    Storage
        ValueMap {"0", "1", "4", "5", "8", "9", "17", "18", "19", "21",  //
                "22", "23", "25", "26", "27", "28", "32", "34", "36",  // ===================================================================
                "64", "80", "81", "82", "88", "96", "255"},  
        Values {"Unknown", "Other", "ISO/IEC 8802 - 2 LLC",  
              "IP over FC", "SCSI - FCP", "SCSI - GPP",  // ===================================================================
              "IPI - 3 Master", "IPI - 3 Slave", "IPI - 3 Peer",  // MediaAccessDevice
              "CP IPI - 3 Master", "CP IPI - 3 Slave",  // ===================================================================
              "CP IPI - 3 Peer", "SBCCS Channel",  
              "SBCCS Control Unit", "FC-SB-2 Channel",  
              "FC-SB-2 Control Unit",  
              "Fibre Channel Services (FC-GS, FC-GS-2, FC-GS-3)",  
              "FC-SW", "FC - SNMP", "HIPPI - FP", "BBL Control",  
              "BBL FDDI Encapsulated LAN PDU",  
              "BBL 802.3 Encapsulated LAN PDU", "FC - VI", "FC - AV",  
              "Vendor Unique"},  
        ModelCorrespondence {  
              "CIM_FibreChannelAdapter.FC4TypesSupported",  
              "CIM_FibreChannelAdapter.CurrentFC4VendorTypes"}  
       ]  
    uint16 CurrentFC4Types[];  
       [Description (       [Description (
         "When the CurrentFC4Types array contains the value 255 "       "A MediaAccessDevice represents the ability to access one or "
         "(\"Vendor Unique\"), then the property, CurrentFC4VendorTypes, "       "more media and use this media to store and retrieve data.") ]
         "lists all the vendor specific protocols running on the "  class CIM_MediaAccessDevice : CIM_LogicalDevice {
         "Adapter. These values are in the range, 0xE0 to 0xFF."),  
        MinValue (240), MaxValue (255),  
        ModelCorrespondence {  
              "CIM_FibreChannelAdapter.FC4VendorUniqueTypes"}  
       ]  
    uint16 CurrentFC4VendorTypes[];  
       [Description (       [Description (
         "A list of the Capabilities of the Fibre Channel Adapter. "          "Capabilities of the MediaAccessDevice. For example, the "
         "For example, that the Adapter utilizes the Directory Server, "          "Device may support \"Random Access\", removeable media and "
         "or that it generates State Change Notifications can be "          "\"Automatic Cleaning\". In this case, the values 3, 7 and 9 "
         "indicated using the values 2 and 12, respectively."),          "would be written to the array.\n"
           "Several of the enumerated values require some explanation: "
           "1) Value 11, Supports Dual Sided Media, distinguishes a "
           "Device that can access both sides of dual sided Media, from "
           "a Device that reads only a single side and requires the "
           "Media to be flipped; and, 2) Value 12, Predismount Eject "
           "Not Required, indicates that Media does not have to be "
           "explicitly ejected from the Device before being accessed "
           "by a PickerElement."),
        ArrayType ("Indexed"),        ArrayType ("Indexed"),
        Values {"Unknown", "Other", "Utilizes the Directory Server",         Values {"Unknown", "Other", "Sequential Access",
              "Utilizes the Time Server",                 "Random Access", "Supports Writing", "Encryption",
              "Utilizes the Management Server",                 "Compression", "Supports Removeable Media",
              "Utilizes the Alias Server",                 "Manual Cleaning", "Automatic Cleaning",
              "Utilizes the Security Key Distribution Server",                 "SMART Notification", "Supports Dual Sided Media",
              "Utilizes the Clock Synchronization Server",                 "Predismount Eject Not Required" },
              "Utilizes the Multicast Server",         MappingStrings {"MIF.DMTF|Storage Devices|001.9",
              "Utilizes QoS Facilitator",          "MIF.DMTF|Storage Devices|001.11",
              "Utilizes Broadcast Services",          "MIF.DMTF|Storage Devices|001.12",
              "Supports Fabric Login Server",          "MIF.DMTF|Disks|003.7", "MIF.DMTF|Host Disk|001.2",
              "Generates State Change Notifications",          "MIF.DMTF|Host Disk|001.4"},
              "Registers for State Change Notifications",         ModelCorrespondence {
              "Responds to Read Connection Status",          "CIM_MediaAccessDevice.CapabilityDescriptions"} ]
              "Supports Third Party Process Logout"}  
       ]  
    uint16 Capabilities[];    uint16 Capabilities[];
       [Description (       [Description (
           "An array of free-form strings providing more detailed "           "An array of free-form strings providing more detailed "
           "explanations for any of the Adapter features indicated in "          "explanations for any of the AccessDevice features indicated "
           "the Capabilities array. Note, each entry of this array "          "in the Capabilities array. Note, each entry of this array "
           "is related to the entry in the Capabilities array that "           "is related to the entry in the Capabilities array that "
           "is located at the same index."),           "is located at the same index."),
        ArrayType ("Indexed"),        ArrayType ("Indexed"),
          ModelCorrespondence {"CIM_FibreChannelAdapter.Capabilities"}         ModelCorrespondence {"CIM_MediaAccessDevice.Capabilities"} ]
       ]  
    string CapabilityDescriptions[];    string CapabilityDescriptions[];
       [Description (       [Description (
         "The number of times that a frame was received but no "          "ErrorMethodology is a free-form string describing "
         "buffer was available."),          "the type(s) of error detection and correction supported "
        Counter          "by this Device.") ]
       ]     string ErrorMethodology;
    uint64 ReceiveBufferErrors;  
       [Description (  
         "The number of times that a frame was received but no "  
         "end-to-end credit was available."),  
        Counter  
       ]  
    uint64 ReceiveEndErrors;  
       [Description (       [Description (
         "A 'long' timeout value (in milliseconds) for determining "          "A free form string indicating the algorithm or tool used by "
         "when to reinstate a Recovery_Qualifier. The default value "          "the device to support compression. "
         "is 120 seconds (120000 milliseconds). It is typically set "          "If it is not possible or not desired to describe the "
         "to the ErrorDetectTimeout value + 2*(fabric delay time)."),          "compression scheme (perhaps because it is not known), "
        Units ("MilliSeconds")          "recommend using the following words: \"Unknown\" to "
       ]          "represent that it is not known whether the device supports "
    uint64 ResourceAllocationTimeout;          "compression capabilities or not, \"Compressed\" to represent "
           "that the device supports compression capabilities but either "
           "its compression scheme is not known or not disclosed, and "
           "\"Not Compressed\" to represent that the devices does not "
           "support compression capabilities.")     ]
      string CompressionMethod;
       [Description (       [Description (
         "A 'short' timeout value (in milliseconds) for determining "          "When the MediaAccessDevice supports multiple individual "
         "that an error has occurred. The default value is 10 "          "Media, this property defines the maximum number which can "
         "seconds (10000 milliseconds)."),          "be supported or inserted.") ]
        Units ("MilliSeconds")     uint32 NumberOfMediaSupported;
       ]  
    uint64 ErrorDetectTimeout;  
       [Description (       [Description (
         "Number of Class 1 sequences sent since last reset of the "          "Maximum size, in KBytes, of media supported by this Device. "
         "Device."),          "KBytes is interpreted as the number of bytes multiplied by "
        Counter          "1000 (NOT the number of bytes multiplied by 1024)."),
       ]         MappingStrings {"MIF.DMTF|Sequential Access Devices|001.2",
    uint64 Class1SequencesSent;               "MIF.DMTF|Host Disk|001.5"} ]
      uint64 MaxMediaSize;
         [Description ("Default block size, in bytes, for this Device."),
          Units ("Bytes") ]
      uint64 DefaultBlockSize;
       [Description (       [Description (
         "Number of Class 2 sequences sent since last reset of the "          "Maximum block size, in bytes, for media accessed by this "
         "Device."),         "Device."),
        Counter         Units ("Bytes") ]
       ]     uint64 MaxBlockSize;
    uint64 Class2SequencesSent;  
       [Description (       [Description (
         "Number of Class 3 sequences sent since last reset of the "          "Minimum block size, in bytes, for media accessed by this "
         "Device."),         "Device."),
        Counter         Units ("Bytes") ]
       ]     uint64 MinBlockSize;
    uint64 Class3SequencesSent;  
       [Description (       [Description (
         "Number of Class 4 sequences sent since last reset of the "          "Boolean indicating that the MediaAccessDevice needs cleaning. "
         "Device."),          "Whether manual or automatic cleaning is possible is indicated "
        Counter          "in the Capabilities array property. ") ]
       ]     boolean NeedsCleaning;
    uint64 Class4SequencesSent;  
       [Description (       [Description (
         "Number of octets received by the Adapter when running "          "True indicates that the media is locked in the Device "
         "Class 2 service."),          "and can not be ejected. For non-removeable Devices, this "
        Counter          "value should be true.") ]
       ]     boolean MediaIsLocked;
    uint64 Class2OctetsReceived;  
       [Description (       [Description (
         "Number of octets transmitted by the Adapter when running "          "An enumeration indicating the operational security defined "
         "Class 2 service."),          "for the MediaAccessDevice. For example, information that "
        Counter          "the Device is \"Read Only\" (value=4) or \"Boot Bypass\" "
       ]          "(value=6) can be described using this property."),
    uint64 Class2OctetsTransmitted;         ValueMap {"1", "2", "3", "4", "5", "6", "7"},
          Values {"Other", "Unknown", "None", "Read Only", "Locked Out",
                "Boot Bypass", "Boot Bypass and Read Only"},
          MappingStrings {"MIF.DMTF|Disks|003.22"} ]
      uint16 Security;
       [Description (       [Description (
         "Number of frames received by the Adapter when running "          "The date and time on which the Device was last cleaned.") ]
         "Class 2 service."),     datetime LastCleaned;
        Counter  
       ]  
    uint64 Class2FramesReceived;  
       [Description (       [Description (
         "Number of frames transmitted by the Adapter when running "          "Time in milliseconds to move from the first location on "
         "Class 2 service."),          "the Media to the location that is furthest with respect to "
        Counter          "time. For a DiskDrive, this represents full seek + full "
       ]          "rotational delay. For TapeDrives, this represents a search "
    uint64 Class2FramesTransmitted;          "from the beginning of the tape to the most physically "
           "distant point. (The end of a tape may be at its most "
           "physically distant point, but this is not necessarily "
           "true.)"),
          Units ("MilliSeconds") ]
      uint64 MaxAccessTime;
       [Description (       [Description (
         "Number of frames discarded by the Adapter when running "          "The sustained data transfer rate in KB/sec that the "
         "Class 2 service."),          "Device can read from and write to a Media. This is a "
        Counter          "sustained, raw data rate. Maximum rates or rates "
       ]          "assuming compression should not be reported in this "
    uint64 Class2DiscardFrames;          "property."),
          Units ("KiloBytes per Second") ]
      uint32 UncompressedDataRate;
       [Description (       [Description (
         "Number of octets received by the Adapter when running "          "Time in milliseconds from 'load' to being able to read "
         "Class 3 service."),          "or write a Media. For example, for DiskDrives, this is "
        Counter          "the interval between a disk not spinning to the disk "
       ]          "reporting that it is ready for read/write (ie, the disk "
    uint64 Class3OctetsReceived;          "spinning at nominal speeds). For TapeDrives, this is "
           "the time from a Media being injected to reporting that "
           "it is ready for an application. This is usually at the "
           "tape's BOT area."),
          Units ("MilliSeconds") ]
      uint64 LoadTime;
       [Description (       [Description (
         "Number of octets transmitted by the Adapter when running "          "Time in milliseconds from being able to read or write a "
         "Class 3 service."),          "Media to its 'unload'. For example, for DiskDrives, "
        Counter          "this is the interval between a disk spinning at nominal "
       ]          "speeds and a disk not spinning. For TapeDrives, this is "
    uint64 Class3OctetsTransmitted;          "the time for a Media to go from its BOT to being fully "
           "ejected and accessible to a PickerElement or human "
           "operator."),
          Units ("MilliSeconds") ]
      uint64 UnloadTime;
       [Description (       [Description (
         "Number of frames received by the Adapter when running "          "For a MediaAccessDevice that supports removable Media, "
         "Class 3 service."),          "the number of times that Media have been mounted for "
        Counter          "data transfer or to clean the Device. For Devices "
       ]          "accessing nonremovable Media, such as hard disks, "
    uint64 Class3FramesReceived;          "this property is not applicable and should be set to 0."),
          Counter ]
      uint64 MountCount;
       [Description (       [Description (
         "Number of frames transmitted by the Adapter when running "          "For a MediaAccessDevice that supports removable Media, "
         "Class 3 service."),          "the most recent date and time that Media was mounted "
        Counter          "on the Device. For Devices accessing nonremovable Media, "
       ]          "such as hard disks, this property has no meaning and is "
    uint64 Class3FramesTransmitted;          "not applicable.") ]
      datetime TimeOfLastMount;
       [Description (       [Description (
         "Number of frames discarded by the Adapter when running "          "For a MediaAccessDevice that supports removable Media, "
         "Class 3 service."),          "the total time (in seconds) that Media have been mounted "
        Counter          "for data transfer or to clean the Device. For Devices "
       ]          "accessing nonremovable Media, such as hard disks, "
    uint64 Class3DiscardFrames;          "this property is not applicable and should be set to 0.") ]
      uint64 TotalMountTime;
       [Description (       [Description (
         "Number of parity errors detected somewhere in the "          "Defines 'Units' relative to its use in the property, "
         "data path."),          "MaxUnitsBeforeCleaning. This describes the criteria used "
        Counter          "to determine when the MediaAccessDevice should be cleaned."),
       ]         ModelCorrespondence {
    uint64 ParityErrors;          "CIM_MediaAccessDevice.MaxUnitsBeforeCleaning",
           "CIM_MediaAccessDevice.UnitsUsed"} ]
      string UnitsDescription;
       [Description (       [Description (
         "Number of Class 1 or 2 frames that are not ACKed "          "An unsigned integer indicating the maximum 'units' "
         "within the time indicated by ErrorDetectTimeout."),          "that can be used, with respect to the AccessDevice, "
        Counter          "before the Device should be cleaned. The property, "
       ]          "UnitsDescription, defines how 'units' should be "
    uint64 FrameTimeouts;          "interpreted."),
          ModelCorrespondence {
           "CIM_MediaAccessDevice.UnitsDescription"} ]
      uint64 MaxUnitsBeforeCleaning;
       [Description (       [Description (
         "Number of times that the Device has been without a "          "An unsigned integer indicating the currently used "
         "buffer credit for a time longer than ErrorDetectTimeout."),          "'units' of the AccessDevice, helpful to describe "
        Counter          "when the Device may require cleaning. The property, "
       ]          "UnitsDescription, defines how 'units' should be "
    uint64 BufferCreditErrors;          "interpreted."),
          Gauge,
          ModelCorrespondence {
           "CIM_MediaAccessDevice.UnitsDescription",
           "CIM_MediaAccessDevice.MaxUnitsBeforeCleaning"}]
      uint64 UnitsUsed;
       [Description (       [Description (
         "Number of times that the Device has been without an end "          "Method to lock and unlock the media in a removeable Access"
         "credit for a time longer than ErrorDetectTimeout."),          "Device. The method takes one parameter as input - a boolean "
        Counter          "indicating whether to lock or unlock. TRUE indicates that "
       ]          "the media should be locked in the Device, FALSE indicates "
    uint64 EndCreditErrors;          "that the media should be unlocked. The method returns 0 if "
       [Description ("Number of frames received out of order."),          "successful, 1 if not supported, and any other value if an "
        Counter          "error occurred. The set of possible return codes should be "
       ]          "specified in a ValueMap qualifier on the method. The strings "
    uint64 OutOfOrderFramesReceived;          "to which the ValueMap contents are 'translated' should be "
           "specified as a Values array qualifier on the method.") ]
      uint32 LockMedia (
         [IN] boolean Lock);
 }; };
  
 // ==================================================================  
 // FCAdapterEventCounters  // ===================================================================
 // ==================================================================  // DiskDrive
    [Description (  // ===================================================================
        "Error and event counters specific to a Fibre Channel Adapter.")  
    ]  
 class CIM_FCAdapterEventCounters : CIM_DeviceStatisticalInformation  
 {  
       [Description ("The number of Abort sequence frames received."),  
        Counter  
       ]  
    uint64 ABTSFramesReceived;  
       [Description ("The number of Abort sequence frames sent."),  
        Counter  
       ]  
    uint64 ABTSFramesSent;  
       [Description ("The number of frames busied by the Fabric."),  
        Counter  
       ]  
    uint64 FBSYsReceived;  
       [Description (  
         "The number of frames busied by the receiving Node."),  
        Counter  
       ]  
    uint64 PBSYsReceived;  
       [Description (  
         "The number of frames busied by the Adapter itself."),  
        Counter  
       ]  
    uint64 PBSYsSent;  
       [Description ("The number of frames rejected by the Fabric."),  
        Counter  
       ]  
    uint64 FRJTsReceived;  
       [Description (  
         "The number of frames rejected by the receiving Node."),  
        Counter  
       ]  
    uint64 PRJTsReceived;  
       [Description (  
         "The number of frames rejected by the Adapter itself."),  
        Counter  
       ]  
    uint64 PRJTsSent;  
       [Description (  
         "The number of PRLI frames sent where the response was "  
         "LS_RJT."),  
        Counter  
       ]  
    uint64 PRLIsRejected;  
       [Description (  
         "The number of PRLO frames sent where the response was "  
         "LS_RJT."),  
        Counter  
       ]  
    uint64 PRLOsRejected;  
       [Description (       [Description (
         "The number of Abort sequence frames sent where the response "       "Capabilities and managment of a DiskDrive, a subtype of "
         "was BA_RJT."),       "MediaAccessDevice.") ]
        Counter  class CIM_DiskDrive : CIM_MediaAccessDevice {
       ]  };
    uint64 ABTSFramesRejected;  
   
   // ===================================================================
   // DisketteDrive
   // ===================================================================
         [Description (         [Description (
           "Method to reset the Adapter event counters. The method "       "Capabilities and managment of a DisketteDrive, a subtype of "
           "takes one parameter as input - an integer indicating which "       "MediaAccessDevice.") ]
           "counter to reset. For this input parameter, 0 indicates all, "  class CIM_DisketteDrive : CIM_MediaAccessDevice {
           "1 through 11 indicate a reset of the individual counters. "  };
           "The method returns 0 if successful, 1 if not supported, and "  
           "any other value if an error occurred. A method is specified "  
           "so that the Device's instrumentation, which tabulates "  // ===================================================================
           "the errors and warnings, can also reset its internal "  // CDROMDrive
           "processing and counters.\n"  // ===================================================================
         "In a subclass, the set of possible return codes could be "     [Description (
         "specified, using a ValueMap qualifier on the method. The "       "Capabilities and managment of a CDROMDrive, a subtype of "
         "strings to which the ValueMap contents are 'translated' "       "MediaAccessDevice.") ]
         "may also be specified in the subclass as a Values "  class CIM_CDROMDrive : CIM_MediaAccessDevice {
         "array qualifier.")  
         ]  
    uint32 ResetCounter ([IN, Values {"All",  
     "ABTSFramesReceived", "ABTSFramesSent", "FBSYReceived",  
     "PBSYReceived", "PBSYSent", "FRJTReceived", "PRJTReceived",  
     "PRJTSent", "PRLIRejected", "PRLORejected", "ABTSFramesRejected"}]  
     uint16 SelectedCounter);  
 }; };
  
 // ==================================================================  
 // FibrePort  // ===================================================================
 // ==================================================================  // DVDDrive
   // ===================================================================
    [Description (    [Description (
        "Capabilities and management of a Fibre Channel Port Device.")       "Capabilities and management of a DVDDrive, a subtype of "
    ]       "MediaAccessDevice.") ]
 class CIM_FibrePort : CIM_LogicalPort  class CIM_DVDDrive : CIM_MediaAccessDevice {
 {  
       [Description (       [Description (
         "An address value used to identify the source (S_ID) or "          "The CD and DVD formats that are supported by this Device. "
         "destination (D_ID) of a frame. The FC-SW standard includes a "          "For example, the Drive may support \"CD-ROM\" and "
         "table of special address identifier values and their "          "\"DVD-RAM\". In this case, the values 16 and 24 would be "
         "meanings. Consult the FC-SW documentation for additional "          "written to the array. This property's values align with "
         "information.")          "those defined in PhysicalMedia.MediaType."),
       ]         ValueMap {"0", "1", "16", "17", "18", "19", "22", "23", "24",
    uint32 AddressIdentifier;                   "25", "26", "27", "33", "34", "35", "36", "37", "38",
                    "39", "40", "41", "42"},
          Values {"Unknown", "Other", "CD-ROM", "CD-ROM/XA",
                  "CD-I", "CD Recordable", "DVD", "DVD-RW+",
                  "DVD-RAM", "DVD-ROM", "DVD-Video", "Divx", "CD-RW",
                  "CD-DA", "CD+", "DVD Recordable", "DVD-RW",
                  "DVD-Audio", "DVD-5", "DVD-9", "DVD-10", "DVD-18"},
          ModelCorrespondence {"CIM_PhysicalMedia.MediaType"} ]
      uint16 FormatsSupported[];
   };
   
   
   // ===================================================================
   // WORMDrive
   // ===================================================================
       [Description (       [Description (
         "An array indicating the modes in which the Port can operate. "       "Capabilities and managment of a WORMDrive, a subtype of "
         "PortType values describe the role and behavior of the Fibre "       "MediaAccessDevice.") ]
         "Channel entity: \"N\" = Node Port, \"NL\" = Node Port "  class CIM_WORMDrive : CIM_MediaAccessDevice {
         "supporting FC arbitrated loop, \"E\" = Expansion Port "  };
         "connecting fabric elements (for example, FC switches), "  
         "\"F\" = Fabric (element) Port, \"FL\" = Fabric (element) "  
         "Port supporting FC arbitrated loop, and \"B\" = Bridge "  // ===================================================================
         "Port. PortTypes are defined in the ANSI X3 standards.\n\n"  // MagnetoOpticalDrive
         "A particular mode may be listed multiple times in the "  // ===================================================================
         "SupportedPortTypes array in order to define that multiple, "  
         "unique version levels are supported. Version information is "  
         "defined in the PortTypeVersions property. Note that each "  
         "entry of the SupportedPortTypes array is related to the entry "  
         "in PortTypeVersions that is located at the same index."),  
        ArrayType ("Indexed"),  
        Values {"Unknown", "N", "NL-Private", "NL-Public", "E", "F", "FL", "B"},  
        ModelCorrespondence {"CIM_FibrePort.PortTypeVersions"}  
       ]  
    uint16 SupportedPortTypes[];  
       [Description (       [Description (
         "Version information for each of the SupportedPortTypes. A "       "Capabilities and managment of a MagnetoOpticalDrive, a "
         "particular PortType (mode) may be listed multiple times in "       "subtype of MediaAccessDevice.") ]
         "the SupportedPortTypes array in order to define multiple, "  class CIM_MagnetoOpticalDrive : CIM_MediaAccessDevice {
         "unique version levels. Note that each entry of this array "  };
         "is related to the entry in SupportedPortTypes that is "  
         "located at the same index."),  
        ArrayType ("Indexed"),  // ===================================================================
        ModelCorrespondence {"CIM_FibrePort.SupportedPortTypes"}  // TapeDrive
       ]  // ===================================================================
    string PortTypeVersions[];  
       [Description (       [Description (
         "The specific modes currently enabled for the Port. The "       "Capabilities and managment of a TapeDrive, a subtype of "
         "values are equal to, or a subset of the values in the Supported"       "MediaAccessDevice.") ]
         "PortTypes array."),  class CIM_TapeDrive : CIM_MediaAccessDevice {
        Values {"Unknown", "N", "NL-Private", "NL-Public", "E", "F", "FL", "B"},  
        ModelCorrespondence {"CIM_FibrePort.SupportedPortTypes",  
              "CIM_FibrePort.EnabledVersions"}  
       ]  
    uint16 EnabledPortTypes[];  
       [Description (       [Description (
         "Version information for each of the EnabledPortTypes. A "          "EOTWarningZoneSize indicates the size, in bytes, of the "
         "particular PortType (mode) may be listed multiple times in "          "area designated as 'end of tape'. Access in this area "
         "the EnabledPortTypes array in order to define multiple, "          "generates an 'end of tape' warning."),
         "unique version levels. Note that each entry of this array "         Units ("Bytes") ]
         "is related to the entry in EnabledPortTypes that is located "     uint32 EOTWarningZoneSize;
         "at the same index."),        [Description ("Maximum partition count for the TapeDrive.") ]
        ArrayType ("Indexed"),     uint32 MaxPartitionCount;
        ModelCorrespondence {"CIM_FibrePort.EnabledPortTypes"}  
       ]  
    string EnabledVersions[];  
       [Description (       [Description (
         "The specific mode in which the Port is currently running. The "          "Padding indicates the number of bytes inserted between "
         "value is one of the entries in the EnabledPortTypes array. The "          "blocks on a tape Media."),
         "current port type/mode is dependent on the fibre technology. "         Units ("Bytes") ]
         "For example, in a public loop network, you might indicate a "     uint32 Padding;
         "port type of \"FL\" (value=6) or \"NL\" (value=2)."),  
        Values {"Unknown", "N", "NL-Private", "NL-Public", "E", "F", "FL", "B"},  
        ModelCorrespondence {"CIM_FibrePort.EnabledPortTypes",  
              "CIM_FibrePort.CurrentVersion"}  
       ]  
    uint16 CurrentPortType;  
       [Description (       [Description (
         "Version information for the CurrentPortType that is active."),          "Time in milliseconds to move from the most physically distant "
        ModelCorrespondence {"CIM_FibrePort.CurrentPortType"}          "point on the tape to the beginning."),
       ]         Units ("MilliSeconds") ]
    string CurrentVersion;     uint64 MaxRewindTime;
   };
   
   
   // ===================================================================
   // StorageExtent
   // ===================================================================
       [Description (       [Description (
         "One or more address identifiers that may be recognized by "       "StorageExtent describes the capabilities and management of "
         "the Port, in addition to its port-specific identifier. "       "the various media that exist to store data and allow data "
         "Multicast or hunt group addresses that are recognized by "       "retrieval. This superclass could be used to represent the "
         "the Port would be identified in this array.")       "various components of RAID (Hardware or Software) or as a "
       ]       "raw logical extent on top of physical media.") ]
    uint32 AliasAddresses[];  class CIM_StorageExtent : CIM_LogicalDevice {
         [Description ("Type of data organization used."),
          Values {"Other", "Unknown", "Fixed Block", "Variable Block",
                  "Count Key Data"} ]
      uint16 DataOrganization;
       [Description (       [Description (
         "Number of times that signal is lost on the Port since last "          "A free form string describing the media and/or its use."),
         "reset of the Device."),         MappingStrings {
        Counter          "MIB.IETF|HOST-RESOURCES-MIB.hrStorageDescr"} ]
       ]     string Purpose;
    uint64 LossOfSignalCounter;  
       [Description (       [Description (
         "Number of times that synchronization is lost on the Port "          "Access describes whether the media is readable (value=1), "
         "since last reset of the Device. Synchronization is assumed "          "writeable (value=2), or both (value=3). \"Unknown\" (0) "
         "lost after a timeout period identified by the Receiver"          "and \"Write Once\" (4) can also be defined."),
         "TransmitterTimeout property."),         Values {"Unknown", "Readable", "Writeable",
        Counter                 "Read/Write Supported", "Write Once"} ]
       ]     uint16 Access;
    uint64 LossOfSyncCounter;  
       [Description (       [Description (
         "Number of times that the CRC in a frame does not match the "          "ErrorMethodology is a free-form string describing "
         "CRC computed by the receiver."),          "the type of error detection and correction supported "
        Counter          "by this StorageExtent.") ]
       ]     string ErrorMethodology;
    uint64 CRCErrors;  
       [Description (       [Description (
         "The number of transmission words that had an 8b10b code "          "Size in bytes of the blocks which form this StorageExtent. "
         "violation in one or more of its characters, had a "          "If variable block size, then the maximum block size in bytes "
         "K28.5 in its second, third or fourth character positions, "          "should be specified. If the block size is unknown or if a "
         "and/or was an ordered set that had an incorrect Beginning "          "block concept is not valid (for example, for Aggregate Extents, "
         "Running Disparity."),          "Memory or LogicalDisks), enter a 1."),
        Counter         Units ("Bytes"),
       ]         MappingStrings {"MIF.DMTF|Host Storage|001.4",
    uint64 InvalidTransmissionWords;          "MIB.IETF|HOST-RESOURCES-MIB.hrStorageAllocationUnits,"
           "MIF.DMTF|Storage Devices|001.5"}  ]
      uint64 BlockSize;
       [Description (       [Description (
         "The number of frames received that were shorter than 28 "          "Total number of logically contiguous blocks, of size Block"
         "octets. The value of 28 is calculated based on an "          "Size, which form this Extent. The total size of the Extent "
         "assumption of 24 header bytes plus 4 CRC bytes. The "          "can be calculated by multiplying BlockSize by NumberOfBlocks. "
         "count does not include SOF/EOF bytes which are not data."),          "If the BlockSize is 1, this property is the total size of the "
        Counter          "Extent."),
       ]         MappingStrings {"MIF.DMTF|Host Storage|001.5",
    uint64 FramesTooShort;          "MIB.IETF|HOST-RESOURCES-MIB.hrStorageSize"} ]
      uint64 NumberOfBlocks;
       [Description (       [Description (
         "The number of frames received that were longer than 2140 "          "The maximum number of blocks, of size BlockSize, which are "
         "octets. The value of 2140 is calculated based on an "          "available for consumption when layering StorageExtents "
         "assumption of 24 header bytes plus 4 CRC bytes and 2112 "          "using the BasedOn association. This property only has meaning "
         "bytes of payload."),          "when this StorageExtent is an Antecedent reference in a "
        Counter          "BasedOn relationship. For example, a StorageExtent could be "
       ]          "composed of 120 blocks. However, the Extent itself may use 20 "
    uint64 FramesTooLong;          "blocks for redundancy data. If another StorageExtent is BasedOn "
           "this Extent, only 100 blocks would be available to it. This "
           "information ('100 blocks is available for consumption') is "
           "indicated in the ConsumableBlocks property.")  ]
      uint64 ConsumableBlocks;
       [Description (       [Description (
         "The number of times that a fill word could not be "          "True indicates that the underlying StorageExtent(s) "
         "inserted, when required. The Elasticity Buffer is defined "          "participate in a StorageRedundancyGroup.") ]
         "in FC-AL. This event might cause data corruption and may "     boolean IsBasedOnUnderlyingRedundancy;
         "indicate a configuration error or a device out of spec."),  
        Counter  
       ]  
    uint64 ElasticityBufferUnderruns;  
       [Description (       [Description (
         "The number of times that a fill word could not be deleted, "          "Boolean set to TRUE if the Storage is sequentially accessed "
         "when required. The Elasticity Buffer is defined in FC-AL. "          "by a MediaAccessDevice. A TapePartition is an example of a "
         "This event might cause data corruption and may indicate a "          "sequentially accessed StorageExtent. StorageVolumes, Disk"
         "configuration error or a device out of spec."),          "Partitions and LogicalDisks represent randomly accessed "
        Counter          "Extents.") ]
       ]     boolean SequentialAccess;
    uint64 ElasticityBufferOverruns;  };
   
   
   // ===================================================================
   // ResidesOnExtent
   // ===================================================================
      [Association, Description (
        "An association between a FileSystem and the StorageExtent "
        "where it is located. Typically, a FileSystem ResidesOn "
        "a LogicalDisk.") ]
   class CIM_ResidesOnExtent : CIM_Dependency {
         [Override ("Antecedent"), Description ("The StorageExtent.") ]
      CIM_StorageExtent REF Antecedent;
         [Override ("Dependent"), Description (
         "The FileSystem that is located on the StorageExtent.") ]
      CIM_FileSystem REF Dependent;
   };
   
   
   // ===================================================================
   // BasedOn
   // ===================================================================
      [Association, Description (
        "BasedOn is an association describing how StorageExtents can "
        "be assembled from lower level Extents. For example, "
        "ProtectedSpaceExtents are parts of PhysicalExtents, while "
        "VolumeSets are assembled from one or more Physical or "
        "ProtectedSpaceExtents. As another example, CacheMemory "
        "can be defined independently and realized in a PhysicalElement "
        "or can be 'based on' Volatile or NonVolatileStorageExtents.") ]
   class CIM_BasedOn : CIM_Dependency {
         [Override ("Antecedent"), Description (
           "The lower level StorageExtent.") ]
      CIM_StorageExtent REF Antecedent;
         [Override ("Dependent"), Description (
           "The higher level StorageExtent.") ]
      CIM_StorageExtent REF Dependent;
       [Description (       [Description (
         "Timeout value in milliseconds used to determine when "          "StartingAddress indicates where in lower level storage, "
         "loss of synchronization has occurred. The typical default "          "the higher level Extent begins.") ]
         "is 100 msec."),     uint64 StartingAddress;
       Units ("Milliseconds")  
       ]  
    uint64 ReceiverTransmitterTimeout;  
       [Description (       [Description (
         "Indication of whether the Port is currently bypassed "          "EndingAddress indicates where in lower level storage, "
         "(value=2) or not (value=1). A value of 3 (\"Forced Insert\") "          "the higher level Extent ends. This property is useful when "
         "describes that the Port is forced active, when it would "          "mapping non-contiguous Extents into a higher level grouping.") ]
         "otherwise be \"Bypassed\"."),     uint64 EndingAddress;
        Values {"Unknown", "Not Bypassed", "Bypassed",  
              "Forced Insert"}  
       ]  
    uint16 BypassedState;  
            [Description (            [Description (
           "The type of cabling as sensed by the Port. Not all FibrePorts "          "If there is an order to the BasedOn associations that "
           "are capable of providing this information. In this case, a "          "describe how a higher level StorageExtent is assembled, the "
           "value of 0, \"Unknown\", will be returned. Also, when single or "          "OrderIndex property indicates this. When an order exists, "
           "multi-mode fiber cabling can not be distinguished, the more "          "the instances of BasedOn with the same Dependent value "
           "general value - 4, \"Fiber-optic\" - can be specified."),          "(i.e., the same higher level Extent) should place unique "
         Values {"Unknown", "Other", "No Media", "Copper/Twinaxial",          "values in the OrderIndex property. The lowest value implies "
           "Fiber-optic", "Fiber Single Mode", "Fiber Multimode"} ]          "the first member of the collection of lower level Extents, "
         uint16 ConnectedMedia;          "and increasing values imply successive members of the "
           "collection. If there is no ordered relationship, a value "
           "of zero should be specified. An example of the use of this "
           "property is to define a RAID-0 striped array of 3 disks. "
           "The resultant RAID array is a StorageExtent that is "
           "dependent on (BasedOn) the StorageExtents that describe "
           "each of the 3 disks. The OrderIndex of each BasedOn "
           "association from the disk Extents to the RAID array could "
           "be specified as 1, 2 and 3 to indicate the order in which "
           "the disk Extents are used to access the RAID data.") ]
      uint16 OrderIndex;
 }; };
  
 // ==================================================================  
 // FibrePortEventCounters  // ===================================================================
 // ==================================================================  // MediaPresent
    [Description (  // ===================================================================
        "Error and event counters specific to a Fibre Channel Port "     [Association, Description (
        "(connection point).")       "Where a StorageExtent must be accessed through a MediaAccess"
    ]       "Device, this relationship is described by the MediaPresent "
 class CIM_FibrePortEventCounters : CIM_DeviceStatisticalInformation       "association."),
 {      MappingStrings {"MIF.DMTF|Storage Devices|001.8"}  ]
       [Description ("The number of login frames received."),  class CIM_MediaPresent : CIM_Dependency {
        Counter        [Override ("Antecedent"),
       ]         Description ("The MediaAccessDevice.") ]
    uint64 PLOGIsReceived;     CIM_MediaAccessDevice REF Antecedent;
       [Description ("The number of login frames sent."),        [Override ("Dependent"), Description (
        Counter          "The StorageExtent accessed using the MediaAccessDevice.") ]
       ]     CIM_StorageExtent REF Dependent;
    uint64 PLOGIsSent;  
       [Description (       [Description (
         "Number of frames received containing 'EOF Abort'."),          "Boolean indicating that the accessed StorageExtent is "
        Counter          "fixed in the MediaAccessDevice and can not be ejected.") ]
       ]     boolean FixedMedia;
    uint64 EOFAbortsReceived;  };
   
   
   // ===================================================================
   // StorageError
   // ===================================================================
       [Description (       [Description (
         "Number of frames transmitted containing 'EOF Abort'."),       "StorageError defines blocks of media or memory space that are "
        Counter       "mapped 'out of use' due to errors. The Key of the class is "
       ]       "the StartingAddress of the bytes in error.") ]
    uint64 EOFAbortsTransmitted;  class CIM_StorageError : CIM_ManagedElement {
         [Propagated("CIM_StorageExtent.SystemCreationClassName"),
          Key, MaxLen (256),
          Description ("The scoping System's CreationClassName.") ]
      string SystemCreationClassName;
         [Propagated("CIM_StorageExtent.SystemName"),
          Key, MaxLen (256),
          Description ("The scoping System's Name.") ]
      string SystemName;
         [Propagated("CIM_StorageExtent.CreationClassName"),
          Key, MaxLen (256),
          Description ("The scoping StorageExtent's CreationClassName.") ]
      string DeviceCreationClassName;
         [Propagated("CIM_StorageExtent.DeviceID"),
          Key, MaxLen (64),
          Description ("The scoping StorageExtent's DeviceID.") ]
      string DeviceID;
         [Key,
          Description ("The starting address of the bytes in error.") ]
      uint64 StartingAddress;
         [Description ("The ending address of the bytes in error.") ]
      uint64 EndingAddress;
   };
   
   
   // ===================================================================
   // StorageDefect
   // ===================================================================
      [Association, Aggregation, Description (
        "The StorageDefect aggregation collects the StorageErrors for "
        "a StorageExtent.") ]
   class CIM_StorageDefect {
         [Key, Aggregate, Min (1), Max (1), Description (
           "The Extent reference defines the StorageExtent on which the "
           "errors occurred.") ]
      CIM_StorageExtent REF Extent;
         [Key, Weak, Description (
           "Error references the Error object, defining the starting "
           "and ending addresses that are 'mapped out' of the Storage"
           "Extent.") ]
      CIM_StorageError REF Error;
   };
   
   
   // ===================================================================
   // PhysicalExtent
   // ===================================================================
       [Description (       [Description (
         "The number of logouts received from various targets."),       "A PhysicalExtent is used to model an SCC RAID "
        Counter       "implementation. It defines the consecutive addressable "
       ]       "block addresses on a single storage device, that are "
    uint64 PLOGOsReceived;       "treated as a single StorageExtent and that are in the "
       [Description ("The number of logout frames sent."),       "same StorageRedundancyGroup. An alternate possibility, "
        Counter       "if automatic configuration is used, is to instantiate or "
       ]       "extend the AggregatePExtent class.") ]
    uint64 PLOGOsSent;  class CIM_PhysicalExtent : CIM_StorageExtent {
   // Override is used to define the MappingString qualifier
         [Override ("BlockSize"),
          MappingStrings {"MIF.DMTF|Physical Extent|001.4"} ]
      uint64 BlockSize;
   // Override is used to define the MappingString qualifier
         [Override ("NumberOfBlocks"),
          MappingStrings {"MIF.DMTF|Physical Extent|001.3"} ]
      uint64 NumberOfBlocks;
       [Description (       [Description (
         "The number of PLOGI frames sent where the response was "          "Number of bytes of user data to skip before "
         "LS_RJT."),          "starting the check data interleave."),
        Counter         Units ("Bytes"),
       ]         MappingStrings {"MIF.DMTF|Physical Extent|001.6"} ]
    uint64 PLOGIsRejected;     uint64 UnitsBeforeCheckDataInterleave;
       [Description (       [Description (
         "The number of PLOGO frames sent where the response was "          "Number of bytes to be reserved for check data."),
         "LS_RJT."),         Units ("Bytes"),
        Counter         MappingStrings {"MIF.DMTF|Physical Extent|001.7"} ]
       ]     uint64 UnitsOfCheckData;
    uint64 PLOGOsRejected;  
         [Description (         [Description (
           "Method to reset the Port event counters. The method "          "Number of bytes to be reserved for user data."),
           "takes one parameter as input - an integer indicating which "         Units ("Bytes"),
           "counter to reset. For this input parameter, 0 indicates all, "         MappingStrings {"MIF.DMTF|Physical Extent|001.8"} ]
           "1 through 8 indicate a reset of the individual counters. "     uint64 UnitsOfUserData;
           "The method returns 0 if successful, 1 if not supported, and "  
           "any other value if an error occurred. A method is specified "  
           "so that the Device's instrumentation, which tabulates "  
           "the errors and warnings, can also reset its internal "  
           "processing and counters.\n"  
         "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.")  
         ]  
    uint32 ResetCounter ([IN, Values {"All", "PLOGIsReceived",  
     "PLOGIsSent", "EOFAbortsReceived", "EOFAbortsTransmitted",  
     "PLOGOsReceived", "PLOGOsSent", "PLOGIsRejected",  
     "PLOGOsRejected"}] uint16 SelectedCounter);  
 }; };
  
   
 // =================================================================== // ===================================================================
 // FibrePortOnFCAdapter  // ProtectedSpaceExtent
 // =================================================================== // ===================================================================
    [Association,     [Description (
        "A ProtectedSpaceExtent is used to model an SCC RAID "
        "implementation. ProtectedSpaceExtent defines addressable logical "
        "block addresses, treated as a single Extent, located on one or "
        "more PhysicalExtents. ProtectedSpaceExtents exclude any logical "
        "blocks mapped as check data and contain user data stripe depth "
        "mapping information. An alternate possibility, if automatic "
        "configuration is used, is to instantiate or extend the Aggregate"
        "PSExtent class.") ]
   class CIM_ProtectedSpaceExtent : CIM_StorageExtent {
   // Override is used to define the MappingString qualifier
         [Override ("BlockSize"),
          MappingStrings {"MIF.DMTF|Protected Space Extent|001.4"} ]
      uint64 BlockSize;
         [Override ("NumberOfBlocks"),
     Description (     Description (
        "FibrePortOnFCAdapter associates a FibrePort with a FibreChannel"          "The number of user data blocks contained in this Extent."),
        "Adapter. Cardinalities are defined as Max(1) to indicate the "         MappingStrings {"MIF.DMTF|Protected Space Extent|001.3"} ]
        "intent and usage of the model - that an Adapter is synonymous "     uint64 NumberOfBlocks;
        "with its Port (connection point). Where you have a multi-Port "        [Description (
        "Adapter and more than one Port may be active at a time, "          "For a ProtectedSpaceExtent that is allocated to a VolumeSet, "
        "individual Adapters with individual operating data and "          "(i.e. is named in a CIM_VolumeSetBasedOnPSExtent "
        "characteristics really exist. If you have multiple connection "          "association), this property is the number of user data bytes "
        "points, but they exist only to provide multiple physical form "          "placed on this ProtectedSpaceExtent before moving on to the "
        "factors (only one connection may be active at a time), then one "          "next ProtectedSpaceExtent in the VolumeSet.  Otherwise, this "
        "FibreChannelAdapter and one FibrePort (the active one) exist. "          "ProtectedSpaceExtent is considered to be unallocated and "
        "On the hardware side, the realizations of these entities "          "this property shall be set to zero (0h.)"),
        "in PhysicalElements may be as a CIM_Card (for example) with "         Units ("Bytes"),
        "multiple CIM_PhysicalConnectors.")         MappingStrings {"MIF.DMTF|Protected Space Extent|001.6"} ]
     ]      uint64 UserDataStripeDepth;
 class CIM_FibrePortOnFCAdapter : CIM_PortOnDevice  
 {  
       [Override ("Antecedent"),  
        Max (1),  
        Description ("The FibreChannelAdapter that includes the Port.")  
       ]  
    CIM_FibreChannelAdapter REF Antecedent;  
       [Override ("Dependent"),  
        Max (1),  
        Description ("The FibrePort on the Adapter.")  
       ]  
    CIM_FibrePort REF Dependent;  
 }; };
  
 // ==================================================================  
 // FibrePortActiveLogin  // ===================================================================
 // ==================================================================  // PSExtentBasedOnPExtent
    [Association,  // ===================================================================
     Description (     [Association, Description (
        "FibrePortActiveLogin indicates that two FibrePorts are "       "ProtectedSpaceExtents are BasedOn a PhysicalExtent. This "
        "connected via a login and have negotiated their Class Of "       "relationship is made explicit in this association.") ]
        "Service, frame size and other link characteristics, as "  class CIM_PSExtentBasedOnPExtent : CIM_BasedOn {
        "specified by an instance of this class.\n"        [Override ("Antecedent"), Description (
        "The class' key is composed of the login originator's and "          "The PhysicalExtent.") ]
        "responder's keys plus the Class Of Service. This combination "     CIM_PhysicalExtent REF Antecedent;
        "is unique and prevents subclassing FibrePortActiveLogin "        [Override ("Dependent"), Description (
        "from its reasonable superclass, DeviceConnection.")          "The ProtectedSpaceExtent which is built on the Physical"
    ]          "Extent.") ]
 class CIM_FibrePortActiveLogin     CIM_ProtectedSpaceExtent REF Dependent;
 {        [Override ("StartingAddress"), Description (
       [Key, Description ("The originator of the login.") ]          "The starting logical block address of the PhysicalExtent "
    CIM_FibrePort REF LoginOriginator;          "from which this ProtectedSpaceExtent is derived."),
       [Key, Description ("The responder to the login.") ]         MappingStrings {"MIF.DMTF|Protected Space Extent|001.2"} ]
    CIM_FibrePort REF LoginResponder;     uint64 StartingAddress;
       [Key,  };
        Description (  
         "The Fibre Channel Class of Service that is currently running "  
         "between the Ports. Since two Ports can be simultaneously "  // ===================================================================
         "connected at different Classes of Service, this property had "  // StorageVolume
         "to be part of the object's key and therefore, an instance's "  // ===================================================================
         "identity."),  
        Values {"Unknown", "1", "2", "3", "4", "6", "F"},  
        ModelCorrespondence {"CIM_FibreChannelAdapter.SupportedCOS"},  
            MappingStrings {"MIF.DMTF|Fibre Channel Bus Port Extensions|001.5"}  
       ]  
    uint16 NegotiatedCOS;  
       [Description (  
         "The Fibre Channel frame size, in bytes, that is currently "  
         "negotiated between the two Ports."),  
        Units ("Bytes")  
       ]  
    uint64 NegotiatedFrameSize;  
       [Description (  
         "The speed for communications that is currently negotiated "  
         "between the two Ports. Speed is specified in bits per second. "  
         "If this information is not available, the property should be "  
         "set to 0."),  
        Units ("Bits per Second")  
       ]  
    uint64 NegotiatedSpeed;  
       [Description (  
         "Acknowledgement model negotiated during Port login. For "  
         "example, ACK-1 indicates that each frame should be "  
         "acknowledged."),  
        Values {"Unknown", "ACK-0", "ACK-1", "ACK-N"},  
            MappingStrings {"MIF.DMTF|Fibre Channel Bus Port Extensions|001.6"}  
       ]  
    uint16 ACKModel;  
       [Description (       [Description (
         "The buffer-to-buffer model negotiated during Port login. "       "A StorageVolume is an Extent that is presented to the Operating"
         "Either the model defined by the FC-PH standard is used "       "System (for example, by a hardware RAID cabinet), to a File"
         "(value=1, \"Regular\"), or an \"Alternate\" model is "       "System (for example, by a software volume manager) or to another "
         "negotiated."),       "entity. StorageVolumes do NOT participate in StorageRedundancy"
        Values {"Unknown", "Regular", "Alternate"}       "Groups. They are directly Realized in hardware or are the end "
       ]       "result of assembling lower level Extents.") ]
    uint16 BufferToBufferModel;  class CIM_StorageVolume : CIM_StorageExtent {
   };
   
   
   // ===================================================================
   // VolumeSet
   // ===================================================================
       [Description (       [Description (
         "OriginatorBufferCredit reflects the buffer credit of the "       "A VolumeSet is used to model an SCC RAID implementation. "
         "Port defined as the LoginOriginator. It is the number of "       "VolumeSets represent a contiguous range of logical blocks "
         "frame buffers made available BY the originating Port, TO "       "presented to the operating environment. VolumeSets may overlap. "
         "the responder Port. Buffer credits are used in point to "       "However, the underlying PhysicalExtents within the overlap "
         "point connections, when an NL-Local Port is logged into "       "shall not contain any check data. They are BasedOn one or more "
         "another NL-Local Port, and when Nx Ports are logged into "       "ProtectedSpaceExtents. These BasedOn associations should be "
         "Fx Ports. In other scenarios, this value is undefined."),       "instantiated or subclassed as needed.") ]
                 MappingStrings {"MIF.DMTF|Fibre Channel Bus Port Extensions|001.3"}  class CIM_VolumeSet : CIM_StorageVolume {
       ]  // Override is used to define the MappingString qualifier
    uint64 OriginatorBufferCredit;        [Override ("NumberOfBlocks"),
          MappingStrings {"MIF.DMTF|Volume Set|001.3"} ]
      uint64 NumberOfBlocks;
       [Description (       [Description (
         "ResponderBufferCredit reflects the buffer credit of the "          "Number of contiguous ProtectedSpaceExtents counted "
         "Port defined as the LoginResponder. It is the number of "          "before looping back to the first ProtectedSpaceExtent "
         "frame buffers made available BY the responder Port, TO "          "of the current stripe. It is the number of Extents forming "
         "the originating Port. Buffer credits are used in point to "          "the user data stripe."),
         "point connections, when an NL-Local Port is logged into "         MappingStrings {"MIF.DMTF|Volume Set|001.4"} ]
         "another NL-Local Port, and when Nx Ports are logged into "     uint64 PSExtentStripeLength;
         "Fx Ports. In other scenarios, this value is undefined."),  
                 MappingStrings {"MIF.DMTF|Fibre Channel Bus Port Extensions|001.3"}  
       ]  
    uint64 ResponderBufferCredit;  
       [Description (       [Description (
         "OriginatorEndCredit reflects the end credit of the Port "          "Number of ProtectedSpaceExtents to stripe as a collective "
         "defined as the LoginOriginator. It is the number of frame "          "set. In SCC, this value is defined as the number of stripes "
         "buffers made available BY the originating Port, TO the "          "to count before continuing to map into the next contiguous "
         "responder Port. End credits are used in point to point "          "set of Extents, beyond the current stripe."),
         "connections, when an NL-Local Port is logged into another "         MappingStrings {"MIF.DMTF|Volume Set|001.5"} ]
         "NL-Local Port, and when Nx Ports are logged into remote "     uint64 PSExtentInterleaveDepth;
         "Nx Ports. In other scenarios, this value is undefined."),  
                 MappingStrings {"MIF.DMTF|Fibre Channel Bus Port Extensions|001.2"}  
       ]  
    uint64 OriginatorEndCredit;  
       [Description (       [Description (
         "ResponderEndCredit reflects the end credit of the Port "          "VolumeSets in SCC have additional status information "
         "defined as the LoginResponder. It is the number of frame "          "beyond that captured in the Availability and StatusInfo "
         "buffers made available BY the responder Port, TO the "          "properties, inherited from ManagedSystemElement. This "
         "originating Port. End credits are used in point to point "          "additional information (for example, \"Protection Disabled\", "
         "connections, when an NL-Local Port is logged into another "          "value=9) is captured in the VolumeStatus property."),
         "NL-Local Port, and when Nx Ports are logged into remote "         Values {"Other", "Unknown", "None/Not Applicable", "Broken",
         "Nx Ports. In other scenarios, this value is undefined."),                 "Data Lost", "Dynamic Reconfig", "Exposed",
                 MappingStrings {"MIF.DMTF|Fibre Channel Bus Port Extensions|001.2"}                 "Fractionally Exposed", "Partially Exposed",
       ]                 "Protection Disabled", "Readying", "Rebuild",
    uint64 ResponderEndCredit;                 "Recalculate", "Spare in Use", "Verify In Progress"} ]
      uint16 VolumeStatus;
 }; };
  
 // ==================================================================  
 // FibreProtocolService  
 // ==================================================================  
    [Description (  
        "FibreProtocolService abstracts and allows the management of "  
        "the Alias, Management, Time, Security, Directory (Naming) and "  
        "other services and functions available in a Fibre Channel "  
        "network. This class will be further defined in a later "  
        "release of CIM.")  
    ]  
 class CIM_FibreProtocolService : CIM_Service  
 {  
 };  
  
 // =================================================================== // ===================================================================
 // NetworkAdapterRedundancyComponent  // VolumeSetBasedOnPSExtent
 // =================================================================== // ===================================================================
    [Association,     [Association, Description (
     Description (       "VolumeSets are BasedOn on one or more ProtectedSpaceExtents. "
        "CIM_NetworkAdapterRedundancyComponent indicates the role that "       "This relationship is made explicit in this association.") ]
        "a NetworkAdapter plays in a ExtraCapacityGroup, providing "  class CIM_VolumeSetBasedOnPSExtent : CIM_BasedOn {
        "load balancing.")        [Override ("Antecedent"), Min (1),
    ]         Description ("The ProtectedSpaceExtent.") ]
 class CIM_NetworkAdapterRedundancyComponent : CIM_RedundancyComponent     CIM_ProtectedSpaceExtent REF Antecedent;
 {        [Override ("Dependent"), Description (
       [Override("GroupComponent"),          "The VolumeSet which is built on the ProtectedSpaceExtent.") ]
        Description (     CIM_VolumeSet REF Dependent;
         "The RedundancyGroup representing a set of load balanced "  
         "NetworkAdapters.")  
       ]  
    CIM_ExtraCapacityGroup REF GroupComponent;  
       [Override("PartComponent"),  
        Description (  
         "The Network Adapter(s) belonging to the RedundancyGroup.")  
       ]  
    CIM_NetworkAdapter REF PartComponent;  
       [Description (       [Description (
         "Indicates the scope of load balancing for the NetworkAdapters "          "True if logical blocks in the ProtectedSpaceExtent are mapped "
         "involved in the RedundancyGroup. Load balancing may be "          "in decrementing order. This property corresponds to the INCDEC "
         "restricted to transmitting data only (value=1), "          "value in the SCC-2 Volume Set PS_Extent Descriptor.") ]
         "receiving data only (value=2), or used for both transmit "     boolean LBAsMappedByDecrementing;
         "and receive (value=3)."),  
        Values {"Unknown", "Load Balancing - Transmit Only",  
              "Load Balancing - Receive Only", "Full Load Balancing"}  
       ]  
    uint16 ScopeOfBalancing;  
       [Description (       [Description (
         "Boolean indicating whether the Network Adapter is an original "          "True if the logical block mapping algorithm includes check data "
         "primary adapter (value=1), a preferred primary adapter (2), "          "bytes. This property corresponds to the NOCHKSKIP attribute in "
         "or both (3). Values of \"Unknown\" and \"Not Applicable\" may "          "the SCC-2 Volume Set PS_Extent Descriptor.") ]
         "also be specified."),     boolean LBAMappingIncludesCheckData;
        Values {"Unknown", "Original Primary", "Preferred Primary",  
              "Both", "Not Applicable"}  
       ]  
    uint16 PrimaryAdapter;  
 }; };
  
   
 // =================================================================== // ===================================================================
 // NetworkVirtualAdapter  // MediaPartition
 // =================================================================== // ===================================================================
    [Association,     [Description (
     Description (       "A MediaPartition is a presentation of a contiguous range "
        "NetworkVirtualAdapter describes that an instance of Network"       "of logical blocks and has identifying data written on/to it. "
        "Adapter is actually the result of several Adapters "       "It may include a signature written by the OS or by "
        "participating in a load balanced RedundancyGroup.")       "an application.  This class is a common superclass for Disk and "
    ]       "TapePartions. Partitions are directly realized by Physical"
 class CIM_NetworkVirtualAdapter : CIM_LogicalIdentity       "Media (indicated by the RealizesExtent association) or built "
 {       "on StorageVolumes (indicated by the BasedOn association.") ]
       [Override ("SystemElement"),  class CIM_MediaPartition : CIM_StorageExtent {
        Description ("The 'virtual' NetworkAdapter.")        [Description (
       ]          "Boolean indicating that the Partition is labeled as "
    CIM_NetworkAdapter REF SystemElement;          "bootable. (Note that this does not mean that an Operating"
       [Override ("SameElement"),          "System is actually loaded on the Partition.) With the advent "
        Description (          "of bootable Tape and other bootable media, this property is "
         "The ExtraCapacity RedundancyGroup that describes the load "          "included in the higher level MediaPartition class, rather "
         "balancing. The result of the load balancing is the 'virtual' "          "than in a subclass such as DiskPartition.") ]
         "Adapter.")     boolean Bootable;
       ]        [Description (
    CIM_ExtraCapacityGroup REF SameElement;          "Boolean indicating that the Partition is available and "
           "may be allocated for use.") ]
      boolean Allocatable;
         [Description (
           "An identifying string written to the Partition. Additional "
           "information related to this 'Signature' may be found in the "
           "properties, SignatureState and SignatureAlgorithm."),
          ModelCorrespondence {"CIM_MediaPartition.SignatureState",
           "CIM_MediaPartition.SignatureAlgorithm"} ]
      string Signature;
         [Description (
           "A free-form string describing the algorithm used to "
           "define the Partition Signature. The value of this property "
           "is dependent on the Signature's State. "),
          ModelCorrespondence {"CIM_MediaPartition.Signature",
           "CIM_MediaPartition.SignatureState"} ]
      string SignatureAlgorithm;
         [Description (
           "An enumeration describing the state of the Partition's "
           "identifying Signature string. Information such as "
           "\"Uninitialized\" (value=2), or \"Assigned by Owning "
           "Application\" (value=5) are possible entries. "),
          Values {"Unknown", "Unimplemented", "Uninitialized",
                  "Calculated by Operating System",
                  "Calculated by a Media Manager",
                  "Assigned by Owning Application"},
          ModelCorrespondence {"CIM_MediaPartition.Signature",
           "CIM_MediaPartition.SignatureAlgorithm"} ]
      string SignatureState;
         [Description (
           "Boolean indicating that the Partition can be grown/extended "
           "without reformatting.") ]
      boolean Extendable;
 }; };
  
   
 // =================================================================== // ===================================================================
 // Controller  // DiskPartition
 // =================================================================== // ===================================================================
    [Abstract,  
     Description (  
        "Controller is a superclass for grouping the miscellaneous "  
        "control-related Devices that exist. Examples of Controllers "  
        "are SCSIControllers, USBControllers, SerialControllers, ... "  
        "The Controller class is an abstraction for Devices with a "  
        "single protocol stack, which exist primarily for communication "  
        "to, and control or reset of downstream (ControlledBy) Devices.")  
    ]  
 class CIM_Controller : CIM_LogicalDevice  
 {  
       [Description ("Time of last reset of the Controller.")]  
    datetime TimeOfLastReset;  
       [Description (       [Description (
           "The protocol used by the Controller to access 'controlled' "       "A DiskPartition is a presentation of a contiguous range "
           "Devices."),       "of logical blocks that is identifiable by the Operating"
          ValueMap {"1", "2", "3", "4", "5", "6", "7", "8", "9", "10",       "System via the Partition's type and subtype fields. Disk"
                "11", "12", "13", "14", "15", "16", "17", "18", "19",       "Partitions should be directly realized by PhysicalMedia "
                "20", "21", "22", "23", "24", "25", "26", "27", "28",       "(indicated by the RealizesDiskPartition association) or built "
                "29", "30", "31", "32", "33", "34", "35", "36", "37",       "on StorageVolumes (indicated by the PartitionBasedOnVolume "
                "38", "39", "40", "41", "42", "43", "44", "45", "46",       "association.") ]
              "47"},  class CIM_DiskPartition : CIM_MediaPartition {
        Values {"Other", "Unknown", "EISA", "ISA", "PCI", "ATA/ATAPI",  
                "Flexible Diskette", "1496", "SCSI Parallel Interface",  
                "SCSI Fibre Channel Protocol", "SCSI Serial Bus Protocol",  
                "SCSI Serial Bus Protocol-2 (1394)",  
                "SCSI Serial Storage Architecture", "VESA", "PCMCIA",  
                "Universal Serial Bus", "Parallel Protocol", "ESCON",  
                "Diagnostic", "I2C", "Power", "HIPPI", "MultiBus", "VME",  
                "IPI", "IEEE-488", "RS232", "IEEE 802.3 10BASE5",  
                "IEEE 802.3 10BASE2", "IEEE 802.3 1BASE5",  
                "IEEE 802.3 10BROAD36", "IEEE 802.3 100BASEVG",  
                "IEEE 802.5 Token-Ring", "ANSI X3T9.5 FDDI", "MCA",  
                "ESDI", "IDE", "CMD", "ST506", "DSSI", "QIC2",  
                "Enhanced ATA/IDE", "AGP", "TWIRP (two-way infrared)",  
              "FIR (fast infrared)", "SIR (serial infrared)",  
              "IrBus"},  
        MappingStrings {"MIF.DMTF|Bus Port|003",  
                "MIF.DMTF|Disks|003.3"},  
            ModelCorrespondence {"CIM_Controller.ProtocolDescription"}  
   
       ]  
    uint16 ProtocolSupported;  
       [Description (       [Description (
           "Maximum number of directly addressable entities supported "          "Boolean indicating that the DiskPartition is labelled as "
           "by this Controller.  A value of 0 should be used if the "          "the primary partition for a ComputerSystem.") ]
           "number is unknown or unlimited."),     boolean PrimaryPartition;
        MappingStrings {"MIF.DMTF|Bus Port|003"}        [Description ("The type of Partition."),
       ]         Values {"Unknown", "Primary", "Extended", "Logical"} ]
    uint32 MaxNumberControlled;     uint16 PartitionType;
            [Description (            [Description (
                 "A free form string providing more information related "          "The 'sub' type of a primary, extended, or logical Partition. "
                 "to the ProtocolSupported by the Controller."),          "The list of possible values corresponds to the decimal "
                 ModelCorrespondence {"CIM_Controller.ProtocolSupported"},          "representation of the typical values in the Partition record."),
                 MappingStrings {"MIF.DMTF|Bus Port|003"}         ValueMap {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9",
                 ]                   "10", "11", "12", "14", "15", "16", "17", "18",
         string ProtocolDescription;                   "20", "22", "23", "27", "28", "33", "35", "36",
                    "38", "49", "51", "52", "53", "54", "55", "60",
                    "64", "65", "66", "67", "80", "81", "82", "83",
                    "84", "85", "86", "97", "99", "100", "101", "102",
                    "103", "104", "105", "113", "115", "116", "117",
                    "118", "119", "120", "121", "128", "129", "130",
                    "131", "132", "134", "135", "147", "148", "161",
                    "163", "164", "165", "166", "177", "179", "180",
                    "182", "183", "184", "193", "196", "198", "199",
                    "216", "219", "225", "227", "228", "229", "230",
                    "239", "240", "241", "242", "243", "244", "246",
                    "254", "255", "65535"},
          Values {"Empty | Microsoft", "DOS 12-bit FAT",
                  "XENIX root", "XENIX usr", "DOS 16-bit FAT",
                  "DOS Extended", "DOS 16-bit FAT (> 32MB)",
                  "OS/2 HPFS | Win NTFS | QNX Ver 2 | Adv UNIX",
                  "AIX Boot | OS /2 | Dell (Array) | Commodore DOS",
                  "AIX Data, Coherent", "OS/2 Boot Manager",
                  "32-bit FAT", "32-bit FAT", "Microsoft 16-bit FAT",
                  "Microsoft DOS Extended", "OPUS | OS/2 2.0",
                  "OS/2 (MOSS) Inactive Type 1",
                  "Compaq Diagnostics Partition | Microsoft",
                  "OS/2 (MOSS) Inactive Type 4",
                  "OS/2 (MOSS) Inactive Type 6",
                  "OS/2 (MOSS) Inactive Type 7",
                  "OS/2 (MOSS) Inactive Type B",
                  "OS/2 (MOSS) Inactive Type C", "Microsoft",
                  "Microsoft", "Microsoft", "Microsoft", "Microsoft",
                  "Microsoft", "Microsoft", "OS/2 Logical Volume Manager",
                  "Microsoft", "OS/2 JFS Log", "PowerQuest",
                  "VENIX 80286 | Series/1 Disk", "Personal RISC Boot",
                  "Veritas", "Veritas", "OnTrack Disk Manager Read Only DOS",
                  "OnTrack Disk Manager Read/Write DOS",
                  "CPM | Microport System V/386 | OnTrack Disk Mgr | Microsoft",
                  "OnTrack Disk Manager", "OnTrack Disk Manager Non-DOS",
                  "Micro House EZ-Drive Non-DOS",
                  "Golden Bow Vfeature | Microsoft",
                  "Storage Dimensions SpeedStor | Microsoft",
                  "UNIX - AT&T System V/386 | SCO UNIX",
                  "Novell NetWare | Speedstore", "Novell NetWare",
                  "Novell NetWare", "Novell", "Novell", "Novell",
                  "Microsoft", "Microsoft", "Microsoft", "PC/IX IBM",
                  "Microsoft", "QNX POSIX", "QNX POSIX (Secondary)",
                  "QNX POSIX (Secondary)",
                  "Minix (<=1.4a) | Linux | Microsoft",
                  "Minix (>=1.4b) | Microsoft", "Linux Swap | Prime",
                  "Linux Native | Apple", "System Hibernation for APM",
                  "Microsoft", "HPFS FT mirror", "Amoeba | Microsoft",
                  "Amoeba BBT | Microsoft", "Microsoft", "Microsoft",
                  "Microsoft", "BSD/386", "Microsoft", "Microsoft",
                  "Microsoft", "Microsoft", "Microsoft",
                  "BSDI fs | Microsoft", "BSDI Swap | Microsoft",
                  "Microsoft", "Microsoft", "Microsoft",
                  "Syrinx | HPFS FT Disabled Mirror", "CP/M 86",
                  "Digital Research CPM-86 | Concurrent DOS | OUTRIGGER",
                  "SpeedStor 12-bit FAT Extended",
                  "DOS Read-Only | Storage Dimensions",
                  "SpeedStor 16-bit FAT Extended", "Microsoft",
                  "Microsoft", "Intel", "OS/2 Raw Data",
                  "Storage Dimensions", "DOS (Secondary)", "Microsoft",
                  "SpeedStor Large | Storage Dimensions", "Microsoft",
                  "Lan Step | SpeedStor | IBM PS/2 IML",
                  "Bad Block Tables", "Unknown"} ]
      uint16 PartitionSubtype;
 }; };
  
  
 // =================================================================== // ===================================================================
 // SSAController  // DiskPartitionBasedOnVolume
 // =================================================================== // ===================================================================
         [Description (     [Association, Description (
         "Capabilities and management of an SSAController (Serial Storage Architecture).")       "DiskPartitions should be BasedOn a single StorageVolume (for "
         ]       "example, exposed by a hardware RAID cabinet), an SCC VolumeSet, "
 class CIM_SSAController : CIM_Controller       "or realized directly in PhysicalMedia. The first two "
 {       "relationships are made explicit in this association. The latter "
        "is conveyed by the RealizesDiskPartition association.") ]
   class CIM_DiskPartitionBasedOnVolume : CIM_BasedOn {
         [Override ("Antecedent"), Max (1),
          Description ("The StorageVolume.") ]
      CIM_StorageVolume REF Antecedent;
         [Override ("Dependent"), Description (
           "The DiskPartition which is built on the Volume.") ]
      CIM_DiskPartition REF Dependent;
 }; };
  
 // ===================================================================  
 // ControlledBy  
 // ===================================================================  
    [Association,  
     Description (  
        "The ControlledBy relationship indicates which Devices are "  
        "commanded by or accessed through the Controller LogicalDevice.")  
    ]  
 class CIM_ControlledBy : CIM_DeviceConnection  
 {  
       [Override ("Antecedent"),  
        Description ("The Controller.")  
       ]  
    CIM_Controller REF Antecedent;  
       [Override ("Dependent"),  
        Description ("The controlled Device.")  
       ]  
    CIM_LogicalDevice REF Dependent;  
       [Description (  
           "The State property indicates whether the Controller is "  
           "actively commanding or accessing the Device (value=1) or "  
           "not (value=2).  Also, the value, \"Unknown\" (0), can be "  
           "defined. This information is necessary when a LogicalDevice "  
           "can be commanded by, or accessed through, multiple "  
           "Controllers."),  
        Values {"Unknown", "Active", "Inactive"}  
       ]  
    uint16 AccessState;  
       [Description (  
         "The time that the downstream Device was last reset by "  
         "the Controller.")  
       ]  
    datetime TimeOfDeviceReset;  
       [Description (  
         "Number of hard resets issued by the Controller. A hard reset "  
         "returns the Device to its initialization or 'boot-up' state. "  
         "All internal Device state information and data are lost."),  
        Counter  
       ]  
    uint32 NumberOfHardResets;  
       [Description (  
         "Number of soft resets issued by the Controller. A soft "  
         "reset does not completely clear current Device state and/or "  
         "data. Exact semantics are dependent on the Device, and on "  
         "the protocols and mechanisms used to communicate to it."),  
        Counter  
       ]  
    uint32 NumberOfSoftResets;  
 };  
  
 // =================================================================== // ===================================================================
 // ParallelController  // TapePartition
 // =================================================================== // ===================================================================
    [Description (    [Description (
        "Capabilities and management of the ParallelController.")       "Capabilities and management of a TapePartition StorageExtent. "
    ]       "Note that if a PhysicalTape is not partitioned, only a "
 class CIM_ParallelController : CIM_Controller       "generic StorageExtent that represents the entire Tape should "
 {       "be instantiated. TapePartitions may be BasedOn other "
       [Description (       "StorageExtents or directly Realized on a PhysicalTape.") ]
           "Set to true if the ParallelController supports DMA."),  class CIM_TapePartition : CIM_MediaPartition {
        MappingStrings {"MIF.DMTF|Parallel Ports|003.7"}        [Gauge, Description (
       ]          "Number of blocks that are currently unused/not written on "
    boolean DMASupport;          "the Partition. When this number is multiplied by the "
       [Description (          "BlockSize, inherited from StorageExtent, the total number "
           "An integer enumeration indicating the capabilities of the "          "of bytes available for writing can be computed.") ]
           "ParallelController."),     uint64 UnusedBlocks;
          ArrayType ("Indexed"),  
        Values {"Unknown", "Other", "XT/AT Compatible",  
                "PS/2 Compatible", "ECP", "EPP", "PC-98",  
                "PC-98-Hireso", "PC-H98"},  
        MappingStrings {"MIF.DMTF|Parallel Ports|003.8"},  
          ModelCorrespondence {  
                  "CIM_ParallelController.CapabilityDescriptions"}  
       ]  
    uint16 Capabilities[];  
       [Description (  
           "An array of free-form strings providing more detailed "  
           "explanations for any of the ParallelController features "  
           "indicated in the Capabilities array. Note, each entry of "  
           "this array is related to the entry in the Capabilities "  
           "array that is located at the same index."),  
        ArrayType ("Indexed"),  
          ModelCorrespondence {"CIM_ParallelController.Capabilities"}  
       ]  
    string CapabilityDescriptions[];  
       [Description (  
         "An enumeration indicating the operational security for the "  
         "Controller. For example, information that the Device's "  
         "external interface is locked out (value=4) or \"Boot "  
         "Bypass\" (value=6) can be described using this property."),  
        ValueMap {"1", "2", "3", "4", "5", "6"},  
        Values {"Other", "Unknown", "None",  
              "External Interface Locked Out",  
              "External Interface Enabled", "Boot Bypass"},  
        MappingStrings {"MIF.DMTF|Parallel Ports|003.10"}  
       ]  
    uint16 Security;  
 }; };
  
   
 // =================================================================== // ===================================================================
 // SerialController  // TapePartitionOnSurface
 // =================================================================== // ===================================================================
    [Description (     [Association, Description (
          "Capabilities and management of the SerialController.")       "TapePartitionOnSurface represents the ability to have one or "
    ]       "more TapePartitions on each surface of a PhysicalTape. The "
 class CIM_SerialController : CIM_Controller       "individual surfaces are represented as instances of "
 {       "CIM_StorageExtent.") ]
       [Description (  class CIM_TapePartitionOnSurface : CIM_BasedOn {
           "The Capabilities property defines chip level compatibility "        [Override ("Antecedent"), Max (1),
           "for the SerialController.  Therefore, this property describes "         Description (
           "the buffering and other capabilities of the SerialController, "          "The StorageExtent that represents the Tape's surface.") ]
           "that may be inherent in the chip hardware. The property is "     CIM_StorageExtent REF Antecedent;
           "an enumerated integer."),        [Override ("Dependent"), Description (
          ArrayType ("Indexed"),          "The TapePartition which is built on the Extent.") ]
          ValueMap {"1", "2", "3", "4", "5", "6", "160", "161"},     CIM_TapePartition REF Dependent;
          Values {"Other", "Unknown", "XT/AT Compatible",  
                "16450 Compatible", "16550 Compatible",  
                "16550A Compatible", "8251 Compatible",  
                "8251FIFO Compatible"},  
          MappingStrings {"MIF.DMTF|Serial Ports|004.7"},  
          ModelCorrespondence {  
                  "CIM_SerialController.CapabilityDescriptions"}  
       ]  
    uint16 Capabilities[];  
       [Description (  
           "An array of free-form strings providing more detailed "  
           "explanations for any of the SerialController features "  
           "indicated in the Capabilities array. Note, each entry of "  
           "this array is related to the entry in the Capabilities "  
           "array that is located at the same index."),  
        ArrayType ("Indexed"),  
          ModelCorrespondence {"CIM_SerialController.Capabilities"}  
       ]  
    string CapabilityDescriptions[];  
       [Description (  
           "Maximum baud rate in Bits per Second supported by the "  
           "SerialController."),  
        Units ("Bits per Second"),  
        MappingStrings {"MIF.DMTF|Serial Ports|004.6"}  
       ]  
    uint32 MaxBaudRate;  
       [Description (  
         "An enumeration indicating the operational security for the "  
         "Controller. For example, information that the Device's "  
         "external interface is locked out (value=4) or \"Boot "  
         "Bypass\" (value=6) can be described using this property."),  
        ValueMap {"1", "2", "3", "4", "5", "6"},  
        Values {"Other", "Unknown", "None",  
              "External Interface Locked Out",  
              "External Interface Enabled", "Boot Bypass"},  
        MappingStrings {"MIF.DMTF|Serial Ports|004.9"}  
       ]  
    uint16 Security;  
 }; };
  
   
 // =================================================================== // ===================================================================
 // SerialInterface  // LogicalDisk
 // =================================================================== // ===================================================================
    [Association,  
     Description (  
        "SerialInterface is a ControlledBy relationship indicating "  
        "which Devices are accessed through the SerialController and "  
        "the characteristics of this access.")  
    ]  
 class CIM_SerialInterface : CIM_ControlledBy  
 {  
       [Override ("Antecedent"),  
        Description ("The SerialController.")  
       ]  
    CIM_SerialController REF Antecedent;  
       [Override ("NegotiatedDataWidth"),  
        Description (  
           "For the SerialInterface, NegotiatedDataWidth is the number "  
           "of data bits to be transmitted, without stop bits or parity."),  
        Units ("Bits")  
       ]  
    uint32 NegotiatedDataWidth;  
       [Description ("Number of stop bits to be transmitted."),  
        Units ("Bits")  
       ]  
    uint16 NumberOfStopBits;  
       [Description (  
           "Information on the parity setting for transmitted data. "  
           "No parity (value=1), even (2) or odd (3) can be specified."),  
        Values {"Unknown", "None", "Even", "Odd"}  
       ]  
    uint16 ParityInfo;  
       [Description (       [Description (
           "An integer enumeration indicating the flow control "       "A LogicalDisk is a presentation of a contiguous range of "
           "(Xon-Xoff and/or RTS/CTS) for transmitted data."),       "logical blocks that is identifiable by a FileSystem via the "
        Values {"Unknown", "Not Supported", "None", "XonXoff",       "Disk's DeviceId (key) field. For example in a Windows "
                "RTS/CTS", "Both XonXoff and RTS/CTS"}       "environment, the DeviceID field would contain a drive letter. "
       ]       "In a Unix environment, it would contain the access path; and in "
    uint16 FlowControlInfo;       "a NetWare environment, DeviceID would contain the volume name. "
        "LogicalDisks are typically built on a DiskPartition or Storage"
        "Volume (for example, exposed by a software volume manager) "
        "using the LogicalDiskBasedOnPartition or LogicalDiskBasedOn"
        "Volume associations. However, it can be based on other "
        "StorageExtents, like CIM_Memory, in the case of a RAM disk. "
        "The latter is described using the LogicalDiskBasedOnExtent "
        "relationship. (Indeed, the BasedOnExtent association is the "
        "superclass for the BasedOnPartition and BasedOnVolume "
        "relationships.)") ]
   class CIM_LogicalDisk : CIM_StorageExtent {
 }; };
  
   
 // =================================================================== // ===================================================================
 // SCSIController  // LogicalDiskBasedOnExtent
 // =================================================================== // ===================================================================
    [Description (     [Association, Description (
         "Capabilities and management of the SCSIController.")       "LogicalDisks can be BasedOn a single StorageVolume, Memory "
    ]       "(in the case of a RAM Disk), a DiskPartition or other "
 class CIM_SCSIController : CIM_Controller       "StorageExtent. These relationships are made explicit in this "
 {       "association. Subclasses of the association, LogicalDiskBasedOn"
       [Description (       "Partition and LogicalDiskBasedOnVolume, detail the 'typical' "
           "An integer enumeration indicating whether or not the "       "semantics.") ]
           "SCSIController provides redundancy or protection against "  class CIM_LogicalDiskBasedOnExtent : CIM_BasedOn {
           "device failures."),        [Override ("Antecedent"), Max (1),
          ValueMap {"1", "2", "3", "4", "5", "6"},         Description ("The StorageExtent.") ]
        Values {"Other", "Unknown", "Unprotected", "Protected",     CIM_StorageExtent REF Antecedent;
                "Protected through SCC (SCSI-3 Controller Command)",        [Override ("Dependent"), Description (
                "Protected through SCC-2 (SCSI-3 Controller Command)"},          "The LogicalDisk which is built on the StorageExtent.") ]
        MappingStrings {"MIF.DMTF|Storage Controller|001.3"}     CIM_LogicalDisk REF Dependent;
       ]  
    uint16 ProtectionManagement;  
       [Description (  
          "Maximum data width (in bits) supported by the SCSI"  
          "Controller."),  
        Units ("Bits"),  
        MappingStrings {"MIF.DMTF|Bus Port|003"}  
       ]  
    uint32 MaxDataWidth;  
       [Description (  
           "Maximum transfer rate (in Bits per Second) supported by the "  
           "SCSIController."),  
        Units ("Bits per Second"),  
        MappingStrings {"MIF.DMTF|Bus Port|003"}  
       ]  
    uint64 MaxTransferRate;  
       [Description (  
           "Number of SCSIController timeouts that have occurred since "  
           "the TimeOfLastReset."),  
        Counter  
       ]  
    uint32 ControllerTimeouts;  
       [Description (  
         "Signal capabilities that can be supported by the SCSI"  
         "Controller. For example, the Controller may support "  
         "\"Single Ended\" and \"Differential\". In this case, the "  
         "values 3 and 4 would be written to the Signal"  
         "Capabilities array."),  
        ValueMap {"1", "2", "3", "4", "5", "6"},  
        Values {"Other", "Unknown", "Single Ended", "Differential",  
              "Low Voltage Differential", "Optical"},  
        ModelCorrespondence {"CIM_SCSIInterface.SCSISignal"}  
       ]  
    uint16 SignalCapabilities[];  
 }; };
  
   
 // =================================================================== // ===================================================================
 // SCSIInterface  // LogicalDiskBasedOnVolume
 // =================================================================== // ===================================================================
    [Association,     [Association, Description (
     Description (       "LogicalDisks can be BasedOn a single Volume (for example, "
        "SCSIInterface is a ControlledBy relationship indicating "       "exposed by a software volume manager), or be BasedOn a Disk"
        "which Devices are accessed through a SCSIController and "       "Partition directly. The former relationship is made explicit "
        "the characteristics of this access.")       "in this association.") ]
    ]  class CIM_LogicalDiskBasedOnVolume : CIM_LogicalDiskBasedOnExtent {
 class CIM_SCSIInterface : CIM_ControlledBy        [Override ("Antecedent"), Max (1),
 {         Description ("The StorageVolume.") ]
       [Override ("Antecedent"),  CIM_StorageVolume REF Antecedent;
        Description ("The SCSIController.")  
       ]  
    CIM_SCSIController REF Antecedent;  
       [Description (  
         "Number of SCSI timeouts that have occurred since last hard "  
         "or soft reset related to the controlled Device. The time of "  
         "last reset is indicated in the TimeOfDeviceReset property, "  
         "inherited from the ControlledBy association."),  
        Counter  
       ]  
    uint32 SCSITimeouts;  
       [Description (  
         "Number of SCSI retries that have occurred since last hard "  
         "or soft reset related to the controlled Device. The time of "  
         "last reset is indicated in the TimeOfDeviceReset property, "  
         "inherited from the ControlledBy association."),  
        Counter,  
            MappingStrings {"MIF.DMTF|Mass Storage Statistics|001.18"}  
       ]  
    uint32 SCSIRetries;  
         [Description ("The SCSI Initiator ID."),  
        MappingStrings {"MIF.DMTF|Bus Port|003"}  
       ]  
    uint32 InitiatorId;  
       [Description ("The SCSI Target ID."),  
        MappingStrings {"MIF.DMTF|Bus Port|003"}  
       ]  
    uint32 TargetId;  
       [Description ("The SCSI Target LUN."),  
        MappingStrings {"MIF.DMTF|Storage Devices|001.4"}  
       ]  
    uint64 TargetLUN;  
       [Description (  
         "SCSIReservation indicates the type of SCSI reservation "  
         "that currently exists between the source and destination."),  
        Values {"Unknown", "None", "Simple", "Persistent"}  
       ]  
    uint16 SCSIReservation;  
       [Description (  
         "The SCSI signal characteristics being used for this "  
         "connection. The value listed here must also be listed in "  
         "the SCSIController's SignalCapabilities field."),  
        ValueMap {"1", "2", "3", "4", "5", "6"},  
        Values {"Other", "Unknown", "Single Ended", "Differential",  
              "Low Voltage Differential", "Optical"},  
        MappingStrings {"MIF.DMTF|Bus Port|003"},  
        ModelCorrespondence {"CIM_SCSIController.SignalCapabilities"}  
       ]  
    uint16 SCSISignal;  
       [Description (  
         "Maximum number of Command Descriptor Blocks (CDBs) that "  
         "can be supported by the target. This data can not be "  
         "obtained under all circumstances.")  
       ]  
    uint32 MaxQueueDepth;  
       [Description (  
         "The maximum number of concurrent Command Descriptor Blocks "  
         "(CDBs) that the initiator will send to the target. This "  
         "value should never be greater than MaxQueueDepth.")  
       ]  
    uint32 QueueDepthLimit;  
 }; };
  
   
 // =================================================================== // ===================================================================
 // VideoController  // LogicalDiskBasedOnVolumeSet
 // =================================================================== // ===================================================================
    [Description (     [Association, Description (
         "Capabilities and management of the VideoController.")       "LogicalDisks can be BasedOn a VolumeSet. This association is "
    ]       "an optimization where software RAID doesn't exist and the "
 class CIM_VideoController : CIM_Controller       "LogicalDisk is built right on top of a VolumeSet presented by "
 {       "an SCC cabinet. However, this would be better modeled by a "
       [Override ("Description"),       "DiskPartition BasedOn the VolumeSet (described using the "
 // Override is used to define the MappingString qualifier       "DiskPartitionBasedOnVolume association) and then basing the "
        MappingStrings {"MIF.DMTF|Video|004.18"}       "LogicalDisk on the DiskPartition (using the LogicalDisk"
       ]       "BasedOnPartition association).") ]
    string Description;  class CIM_LogicalDiskBasedOnVolumeSet : CIM_LogicalDiskBasedOnVolume {
       [Description (        [Override ("Antecedent"), Max (1),
           "A free-form string describing the video processor/Controller.")         Description ("The VolumeSet.") ]
       ]     CIM_VolumeSet REF Antecedent;
    string VideoProcessor;  
       [Description (  
           "An integer enumeration indicating the type of video memory."),  
          ValueMap {"1", "2", "3", "4", "5", "6", "7", "8", "9", "10",  
                  "11", "12", "13"},  
        Values {"Other", "Unknown", "VRAM", "DRAM", "SRAM", "WRAM",  
                "EDO RAM", "Burst Synchronous DRAM",  
                "Pipelined Burst SRAM", "CDRAM", "3DRAM", "SDRAM",  
                "SGRAM"},  
        MappingStrings {"MIF.DMTF|Video|004.6"}  
       ]  
    uint16 VideoMemoryType;  
       [Description (  
           "Number of video pages supported given the current resolutions "  
           "and available memory.")  
       ]  
    uint32 NumberOfVideoPages;  
       [Description ("Maximum amount of memory supported in bytes."),  
        Units ("Bytes")  
       ]  
    uint32 MaxMemorySupported;  
       [Description (  
           "An array of integers indicating the graphics and 3D "  
           "capabilities of the VideoController."),  
        Values {"Unknown", "Other", "Graphics Accelerator",  
                "3D Accelerator"},  
          ModelCorrespondence {  
                  "CIM_VideoController.CapabilityDescriptions"}  
       ]  
    uint16 AcceleratorCapabilities[];  
         [Description (  
           "An array of free-form strings providing more detailed "  
           "explanations for any of the video Accelerator features "  
           "indicated in the Capabilities array. Note, each entry "  
           "of this array is related to the entry in the Capabilities "  
           "array that is located at the same index."),  
        ArrayType ("Indexed"),  
          ModelCorrespondence {  
                  "CIM_VideoController.AcceleratorCapabilities"}  
       ]  
    string CapabilityDescriptions[];  
       [Description ("The number of bits used to display each pixel."),  
        Units ("Bits"),  
        MappingStrings {"MIF.DMTF|Video|004.12"}  
       ]  
    uint32 CurrentBitsPerPixel;  
       [Description ("Current number of horizontal pixels."),  
        Units ("Pixels"),  
        MappingStrings {"MIF.DMTF|Video|004.11"}  
       ]  
    uint32 CurrentHorizontalResolution;  
       [Description ("Current number of vertical pixels."),  
        Units ("Pixels"),  
        MappingStrings {"MIF.DMTF|Video|004.10"}  
       ]  
    uint32 CurrentVerticalResolution;  
       [Description (  
           "Maximum refresh rate of the VideoController in Hertz."),  
        Units ("Hertz"),  
        MappingStrings {"MIF.DMTF|Video|004.5"}  
       ]  
    uint32 MaxRefreshRate;  
       [Description (  
           "Minimum refresh rate of the Video Controller in Hertz."),  
        Units ("Hertz"),  
        MappingStrings {"MIF.DMTF|Video|004.4"}  
       ]  
    uint32 MinRefreshRate;  
       [Description ("Current refresh rate in Hertz."),  
        Units ("Hertz"),  
        MappingStrings {"MIF.DMTF|Video|004.15"}  
       ]  
    uint32 CurrentRefreshRate;  
       [Description (  
           "Current scan mode. \"Interlaced\" (value=3) or "  
           "\"Non Interlaced\" (4) can be defined using this property."),  
          ValueMap {"1", "2", "3", "4"},  
        Values {"Other", "Unknown", "Interlaced", "Non Interlaced"},  
        MappingStrings {"MIF.DMTF|Video|004.8"}  
       ]  
    uint16 CurrentScanMode;  
       [Description (  
           "If in character mode, number of rows for this Video"  
           "Controller. Otherwise, enter 0."),  
        MappingStrings {"MIF.DMTF|Video|004.13"}  
       ]  
    uint32 CurrentNumberOfRows;  
       [Description (  
           "If in character mode, number of columns for this "  
           "VideoController. Otherwise, enter 0."),  
        MappingStrings {"MIF.DMTF|Video|004.14"}  
       ]  
    uint32 CurrentNumberOfColumns;  
       [Description (  
         "Number of colors supported at the current resolutions.") ]  
    uint64 CurrentNumberOfColors;  
 }; };
  
   
 // =================================================================== // ===================================================================
 // PCVideoController  // LogicalDiskBasedOnPartition
 // =================================================================== // ===================================================================
    [Description (     [Association, Description (
        "Capabilities and management of a PCVideoController, a subtype "       "LogicalDisks can be BasedOn a DiskPartition. For example, a "
        "of VideoController.")       "personal computer's C: drive may be located on a Partition on "
    ]       "local PhysicalMedia. In this association of LogicalDisks to "
 class CIM_PCVideoController : CIM_VideoController       "Partitions, note that the cardinality of the Antecedent, Disk"
 {       "Partition, is Max(1). This dictates that a LogicalDisk can not "
       [Description (       "span more than one Partition. However, there are cases where "
           "The video architecture.  For example, VGA (value=5) or "       "this is true. When it occurs, the LogicalDisk is really based "
           "PC-98 (160) may be specified."),       "on some kind of RAID configuration (for example, a mirror or "
          ValueMap {"1", "2", "3", "4", "5", "6", "7", "8", "9", "10",       "stripe set). In these scenarios, the LogicalDisk is more "
                "11", "12", "160"},       "correctly BasedOn a StorageVolume. To prevent incorrectly using "
        Values {"Other", "Unknown", "CGA", "EGA", "VGA", "SVGA", "MDA",       "the LogicalDiskBasedOnPartition association, the Max(1) "
                "HGC", "MCGA", "8514A", "XGA", "Linear Frame Buffer",       "qualifier was put on the Antecedent reference to the "
                "PC-98"},       "DiskPartition.") ]
        MappingStrings {"MIF.DMTF|Video|004.2"}  class CIM_LogicalDiskBasedOnPartition : CIM_LogicalDiskBasedOnExtent {
       ]        [Override ("Antecedent"), Max (1),
    uint16 VideoArchitecture;         Description ("The DiskPartition.") ]
       [Description ("Current video mode."),     CIM_DiskPartition REF Antecedent;
        MappingStrings {"MIF.DMTF|Video|004.3"}  
       ]  
    uint16 VideoMode;  
       [Description (  
           "Current number of color planes.  If this value is not "  
           "applicable for the current video configuration, enter 0.")  
       ]  
    uint16 NumberOfColorPlanes;  
 }; };
  
   
 // =================================================================== // ===================================================================
 // AGPVideoController  // AggregatePExtent
 // =================================================================== // ===================================================================
    [Description (    [Description (
         "Capabilities and management of an AGPVideoController.")       "An AggregatePExtent is used to model an SCC RAID "
    ]       "implementation. AggregatePExtents provide summary information "
 class CIM_AGPVideoController: CIM_VideoController       "about the addressable logical blocks which are in the same "
 {       "StorageRedundancyGroup and reside on the same storage device. "
       [Description (       "This is an alternative grouping for PhysicalExtents, when only "
         "Capabilities of the AGP Graphics Controller. For example, "       "summary information is needed or when automatic configuration "
         "the Device may support multiple monitors, PCI Mastering and "       "is used.") ]
         "large memory addresses. In this case, the values 3, 4 and 6 "  class CIM_AggregatePExtent : CIM_StorageExtent {
         "would be written to the Capabilities array."),        [Override ("NumberOfBlocks"),
        ArrayType("Indexed"),         Description (
        Values { "Unknown", "Other", "PCI Fast Write",          "Total number of blocks (including the check data blocks) "
              "MultiMonitor Support", "PCI Mastering",          "contained in this AggregatePExtent.  The block size (an "
              "Second Monochrome Adapter Support",          "inherited property) should be set to the same value as for "
              "Large Memory Address Support"},          "the MediaAccessDevice associated with this Extent."),
        ModelCorrespondence{         MappingStrings {"MIF.DMTF|Aggregate Physical Extent|001.2"} ]
              "CIM_AGPVideoController.CapabilityDescriptions"}     uint64 NumberOfBlocks;
       ]        [Description (
    uint16 Capabilities[];          "The number of blocks contained in this AggregatePExtent "
       [Description (          "to be used as check data. If this AggregatePExtent is "
         "An array of free form strings providing more detailed "          "available, then this value shall be zero."),
         "explanations for any of the entries in the Capabilities "         MappingStrings {"MIF.DMTF|Aggregate Physical Extent|001.3"} ]
         "array. Note, each entry of this array is related to the "     uint64 BlocksOfCheckData;
         "entry in the Capabilities array that is located at the "  
         "same index."),  
        ArrayType("Indexed"),  
        ModelCorrespondence{"CIM_AGPVideoController.Capabilities"}  
       ]  
    string CapabilityDescriptions[ ];  
       [Description ("Size of the non-local video memory in KB."),  
        Units ("KiloBytes")  
       ]  
    uint32 NonlocalVideoMemorySize;  
       [Description (  
         "Width of the internal bus in the graphics Controller, in bits."),  
        Units ("Bits")  
       ]  
    uint32 LocalBusWidth;  
       [Description (  
         "An integer enumeration indicating the usage model of the "  
         "graphics Controller. Usage model indicates how the Controller "  
         "does manipulations of graphics surfaces, textures, etc. in "  
         "memory. DMA indicates that the graphics Controller brings "  
         "structures from the system memory to its local memory to "  
         "perform needed manipulations or renderings. Execute specifies "  
         "that the graphics Controller can directly access a specified "  
         "region in main memory (called the graphics aperture) using GART "  
         "- Graphics Aperture Remapping Table. It then performs "  
         "manipulations in that range as if that whole graphics aperture "  
         "were part of its local memory. A value of \"Both\" DMA and "  
         "Execute models may also be specified."),  
        Values {"Unknown", "Other", "Execute", "DMA", "Both"}  
       ]  
    uint16 UsageModel;  
       [Description (  
         "An integer enumeration indicating the data transfer rate of "  
         "the graphics Controller."),  
        Values {"Unknown", "Other", "1X", "2X", "4X"}  
       ]  
    uint16 DataTransferRate;  
       [Description (  
         "An integer enumeration indicating the addressing mode of the "  
         "graphics Controller."),  
        Values {"Unknown", "Other", "Sideband", "Pipeline"}  
       ]  
    uint16 AddressingMode;  
       [Description (  
         "The maximum number of AGP Transaction requests that the master "  
         "(AGP Graphics Controller) is allowed to enqueue into the target.")  
       ]  
    uint32 MaximumAGPCommandQueuePath;  
       [Description (  
         "The number of AGP Transaction that the core logic (chipset) can "  
         "accept into its transaction request queue from the Controller.")  
       ]  
    uint32 MaxNumberOfPipelinedAGPTransactions;  
       [Description ("Size of the graphics aperture in KB."),  
        Units ("KiloBytes")  
       ]  
    uint32 GraphicsApertureSize;  
       [Description (  
         "A string containing the AGP specification version to which this "  
         "graphics Controller conforms.")  
       ]  
    string AGPSpecificationVersionConformance;  
 }; };
  
   
 // =================================================================== // ===================================================================
 // AGPSoftwareFeature  // AggregatePSExtent
 // =================================================================== // ===================================================================
    [Description (    [Description (
        "AGPSoftwareFeature adds two attributes to SoftwareFeature "       "An AggregatePSExtent is used to model an SCC RAID "
        "to represent the capabilities of an AGP device driver. An "       "implementation. AggregatePSExtents define the number of "
        "instance of this class would be associated with the "       "addressable logical blocks on a single storage device, "
        "Driver's SoftwareElement using the SoftwareFeatureSoftware"       "excluding any logical blocks mapped as check data. "
        "Elements relationship. The driver's SoftwareElement is "       "This is an alternative grouping for ProtectedSpaceExtents, "
        "associated with the AGPVideoController via the Device"       "when only summary information is needed or when automatic "
        "Software relationship.")       "configuration is used.") ]
    ]  class CIM_AggregatePSExtent : CIM_StorageExtent {
 class CIM_AGPSoftwareFeature : CIM_SoftwareFeature        [Override ("NumberOfBlocks"), Description (
 {          "Total number of user data blocks that are contained in this "
       [Description (          "Extent."),
         "An array of integers indicating various capabilities and "         MappingStrings {
         "characteristics of the AGPVideoController."),          "MIF.DMTF|Aggregate Protected Space Extent|001.2"} ]
        ArrayType ("Indexed"),     uint64 NumberOfBlocks;
        Values {"Unknown", "Other", "OS support",  
              "Hardware Acceleration", "Hardware Blit",  
              "OpenGL Support", "Cache Coherency"},  
        ModelCorrespondence {  
              "CIM_AGPSoftwareFeature.CharacteristicDescriptions"}  
       ]  
    uint16 Characteristics[];  
       [Description (  
         "An array of free-form strings providing more detailed "  
         "explanations for any of the features indicated in the "  
         "Characteristics array. Each entry in this array is "  
         "related to the Characteristics array entry located at "  
         "the same index."),  
       ArrayType ("Indexed"),  
       ModelCorrespondence {"CIM_AGPSoftwareFeature.Characteristics"}  
       ]  
    string CharacteristicDescriptions[];  
 }; };
  
   
 // =================================================================== // ===================================================================
 // VideoControllerResolution  // AggregatePSExtentBasedOnPExtent
 // =================================================================== // ===================================================================
    [Description (     [Association, Description (
        "VideoControllerResolution describes the various video modes "       "AggregatePSExtents are BasedOn a single PhysicalExtent. This "
        "that a VideoController can support. Video modes are defined by "       "relationship is made explicit in this association.") ]
        "the possible horizontal and vertical resolutions, refresh "  class CIM_AggregatePSExtentBasedOnPExtent : CIM_BasedOn {
        "rate, scan mode and number of colors settings supported by a "        [Override ("Antecedent"), Max (1),
        "Controller. The actual resolutions, etc. that are in use, are "         Description ("The PhysicalExtent.")]
        "the values specified in the VideoController object.")     CIM_PhysicalExtent REF Antecedent;
    ]        [Override ("Dependent"),  Description (
 class CIM_VideoControllerResolution : CIM_Setting          "The AggregatePSExtent which is built on the "
 {          "PhysicalExtent.") ]
       [Override ("SettingID"),     CIM_AggregatePSExtent REF Dependent;
        Key, MaxLen (256),  
        Description (  
         "The inherited SettingID serves as part of the key for a "  
         "VideoControllerResolution instance.")  
       ]  
    string SettingID;  
       [Description ("Controller's horizontal resolution in Pixels."),  
        Units ("Pixels"),  
        ModelCorrespondence {  
              "CIM_VideoController.CurrentHorizontalResolution"},  
        MappingStrings {"MIF.DMTF|Monitor Resolutions|002.2"}  
       ]  
    uint32 HorizontalResolution;  
       [Description ("Controller's vertical resolution in Pixels."),  
        Units ("Pixels"),  
        ModelCorrespondence {  
              "CIM_VideoController.CurrentVerticalResolution"},  
        MappingStrings {"MIF.DMTF|Monitor Resolutions|002.3"}  
       ]  
    uint32 VerticalResolution;  
       [Description (  
         "Refresh rate in Hertz. If a range of rates is supported, use "  
         "the MinRefreshRate and MaxRefreshRate properties, and set "  
         "RefreshRate (this property) to 0."),  
        Units ("Hertz"),  
        ModelCorrespondence {"CIM_VideoController.CurrentRefreshRate"},  
        MappingStrings {"MIF.DMTF|Monitor Resolutions|002.4"}  
       ]  
    uint32 RefreshRate;  
       [Description (  
         "Minimum refresh rate in Hertz, when a range of rates is "  
         "supported at the specified resolutions."),  
        Units ("Hertz"),  
        ModelCorrespondence {"CIM_VideoController.MinRefreshRate"},  
        MappingStrings {"MIF.DMTF|Monitor Resolutions|002.6"}  
       ]  
    uint32 MinRefreshRate;  
       [Description (  
         "Maximum refresh rate in Hertz, when a range of rates is "  
         "supported at the specified resolutions."),  
        Units ("Hertz"),  
        ModelCorrespondence {"CIM_VideoController.MaxRefreshRate"},  
        MappingStrings {"MIF.DMTF|Monitor Resolutions|002.7"}  
       ]  
    uint32 MaxRefreshRate;  
       [Description (  
         "Integer indicating whether the Controller operates in "  
         "interlaced (value=5) or non-interlaced (4) mode."),  
        ValueMap {"1", "2", "3", "4", "5"},  
        Values {"Other", "Unknown", "Not Supported",  
              "Non-Interlaced Operation", "Interlaced Operation"},  
        ModelCorrespondence {"CIM_VideoController.CurrentScanMode"},  
        MappingStrings {"MIF.DMTF|Monitor Resolutions|002.5"}  
       ]  
    uint16 ScanMode;  
       [Description (  
         "Number of colors supported at the current resolutions."),  
        ModelCorrespondence {  
              "CIM_VideoController.CurrentNumberOfColors"}  
       ]  
    uint64 NumberOfColors;  
 }; };
  
   
 // =================================================================== // ===================================================================
 // VideoSetting  // AggregatePSExtentBasedOnAggregatePExtent
 // =================================================================== // ===================================================================
    [Association, Description (    [Association, Description (
        "VideoSetting associates the VideoControllerResolution Setting "       "AggregatePSExtents are BasedOn a single AggregatePExtent. This "
        "with the Controller(s) to which it applies.")       "relationship is made explicit in this association.") ]
    ]  class CIM_AggregatePSExtentBasedOnAggregatePExtent : CIM_BasedOn {
 class CIM_VideoSetting : CIM_ElementSetting        [Override ("Antecedent"), Max (1),
 {         Description ("The AggregatePExtent.")]
       [Override ("Element"),     CIM_AggregatePExtent REF Antecedent;
        Description ("The VideoController.")        [Override ("Dependent"), Description (
       ]          "The AggregatePSExtent which is built on the Aggregate"
    CIM_VideoController REF Element;          "PExtent.") ]
       [Override ("Setting"),     CIM_AggregatePSExtent REF Dependent;
        Description (  
         "The resolutions, refresh rates, scan mode and number of colors "  
         "that can be set for the Controller.")  
       ]  
    CIM_VideoControllerResolution REF Setting;  
 }; };
  
   
 // =================================================================== // ===================================================================
 // PCIController  // Snapshot
 // =================================================================== // ===================================================================
    [Description (    [Description (
        "PCIController is a superclass for the PCIBridge and PCIDevice "       "The Snapshot class is an optional construct. It can be "
        "classes. These classes model adapters and bridges on a PCI "       "used to represent an Extent that contains a full copy of "
        "bus. The properties in PCIController and its subclasses are "       "another Extent, or the changes to that Extent when performing "
        "defined in the various PCI Specifications published by the "       "a delta-based (delta before or delta after) copy.\n"
        "PCI SIG.")       "Snapshot's definition in CIM is not equivalent to the act "
    ]       "of creating a volume or file-based snapshot, or a point in "
 class CIM_PCIController : CIM_Controller       "time copy. It is at a much lower level and represents the "
 {       "use of storage to hold a copied image of an Extent, or to hold "
       [Description (       "changes to an Extent.  Use of the Snapshot object when making "
         "Current contents of the register that provides basic "       "a full copy is only recommended if the purpose is to describe "
         "control over the device's ability to respond "       "the existence of a copy. (This use will be very infrequent.) "
         "to, and/or perform PCI accesses.")       "The problem with describing an Extent solely as a 'snapshot' "
       ]       "is that when the snapshot/copy is broken, the object must be "
    uint16 CommandRegister;       "destroyed. Typically, this object still holds valid data, and "
       [Description (       "would have to be reinstantiated. If the 'full copy' object "
         "An array of integers indicating controller capabilities. "       "is to be treated as a StorageVolume or more general Extent, "
         "Information such as \"Supports 66MHz\" (value=2) is "       "then it should be modeled as such from the beginning - "
         "specified in this property. The data in the Capabilities array "       "i.e., not as an instance of Snapshot but as an instance of a "
         "is gathered from the PCI Status Register and the PCI "       "generic StorageExtent or StorageVolume. In this case, the "
         "Capabilities List as defined in the PCI Specification."),       "Synchronized association would be used to describe that one "
        ArrayType ("Indexed"),       "StorageExtent is synchronized with another.\n"
        Values {"Unknown", "Other", "Supports 66MHz",       "When describing a delta-based snapshot/point in time copy, "
              "Supports User Definable Features",       "the Snapshot object represents the store holding the before/after "
              "Supports Fast Back-to-Back Transactions",       "image changes to the original Extent. For example, when doing a "
              "PCI-X Capable", "PCI Power Management Supported",       "'delta before' Snapshot, the resultant target would be modeled "
              "Message Signaled Interrupts Supported",       "as a StorageExtent that is BasedOn the original Extent and the "
              "Parity Error Recovery Capable",       "instance of Snapshot (that holds the changes to the original Extent).") ]
              "AGP Supported", "Vital Product Data Supported",  class CIM_Snapshot : CIM_StorageExtent {
              "Provides Slot Identification", "Hot Swap Supported"},        [Description ("True indicates that the snapshot is synced.") ]
        ModelCorrespondence {"CIM_PCIController.CapabilityDescriptions"}     boolean IsSynced;
       ]  
    uint16 Capabilities[];  
       [Description (  
         "An array of free-form strings providing more detailed "  
         "explanations for any of the PCIController features indicated "  
         "in the Capabilities array. Note, each entry of this array "  
         "is related to the entry in the Capabilities array that "  
         "is located at the same index."),  
        ArrayType ("Indexed"),  
        ModelCorrespondence {"CIM_PCIController.Capabilities"}  
       ]  
    string CapabilityDescriptions[];  
       [Description (  
         "The slowest device select timing for a target device."),  
        Values {"Unknown", "Other", "Fast", "Medium", "Slow",  
              "Reserved"}  
       ]  
    uint16 DeviceSelectTiming;  
       [Description (  
         "Register of 8 bits that identifies the basic function of the "  
         "PCI device. This is only the upper byte (offset 0Bh) of the "  
         "3 byte ClassCode field. Note that the property's ValueMap "  
         "array specifies the decimal representation of this "  
         "information."),  
        ValueMap {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9",  
                "10", "11", "12", "13", "14", "15", "16", "17",  
                "255"},  
 // values 18-254 reserved for expansion by PCI  
        Values {"Pre 2.0", "Mass Storage", "Network", "Display",  
              "Multimedia", "Memory", "Bridge", "Simple Communications",  
              "Base Peripheral", "Input", "Docking Station", "Processor",  
              "Serial Bus", "Wireless", "Intelligent I/O",  
              "Satellite Communication", "Encryption/Decryption",  
              "Data Acquisition and Signal Processing", "Other"}  
       ]  
    uint8 ClassCode;  
       [Description (  
         "Specifies the system cache line size in doubleword increments "  
         "(e.g., a 486-based system would store the value 04h, "  
         "indicating a cache line size of four doublewords."),  
        Units ("DoubleWords")  
       ]  
    uint8 CacheLineSize;  
       [Description (  
         "Defines the minimum amount of time, in PCI clock cycles, that "  
         "the bus master can retain ownership of the bus."),  
        Units ("PCI clock cycles")  
       ]  
    uint8 LatencyTimer;  
       [Description (  
         "Defines the PCI interrupt request pin (INTA# to "  
         "INTD#) to which a PCI functional device is connected."),  
        Values {"None", "INTA#", "INTB#", "INTC#", "INTD#", "Unknown"}  
       ]  
    uint16 InterruptPin;  
       [Description (  
         "Doubleword Expansion ROM base memory address."),  
        Units ("DoubleWords")  
       ]  
    uint32 ExpansionROMBaseAddress;  
       [Description (  
         "Reports if the PCI device can perform the self test "  
         "function. Returns bit 7 of the BIST register as a boolean.")  
       ]  
    boolean SelfTestEnabled;  
       [Description (       [Description (
         "Method to invoke PCI device self-test. This method sets bit "          "The time stamp indicating when the sync occurred.") ]
         "6 of the BIST register. The return result is the lower "     datetime SyncTime;
         "four bits of the BIST register where 0 indicates success and "  
         "non-zero is a device dependent failure. Support for this "  
         "method is optional in the PCI Specification.")  
       ]  
    uint8 BISTExecution( );  
 }; };
  
   
 // =================================================================== // ===================================================================
 // PCIDevice  // SnapshotOfExtent
 // =================================================================== // ===================================================================
    [Description (     [Association, Description (
      "Capabilities and management of a PCI device controller "       "SnapshotOfExtent is an association between an Extent and "
      "on an adapter card.")       "its Snapshot. This relationship is made explicit in this "
    ]       "association.") ]
 class CIM_PCIDevice : CIM_PCIController  class CIM_SnapshotOfExtent : CIM_Dependency {
 {        [Override ("Antecedent"), Max (1),
       [Description ("Array of doubleword base memory addresses.") ]         Description ("The StorageExtent.") ]
    uint32 BaseAddress[6];     CIM_StorageExtent REF Antecedent;
       [Description ("Subsystem identifier code.") ]        [Override ("Dependent"),
    uint16 SubsystemID;         Description ("The Snapshot.") ]
       [Description (     CIM_Snapshot REF Dependent;
         "Subsystem vendor ID. ID information is reported from a "        [Description ("The type of snapshot."),
         "PCIDevice via protocol-specific requests. The correct place "         Values {"Other", "Unknown", "Copy", "Before Delta",
         "in the CIM Schema for this information is in CIM_Physical"                 "After Delta"} ]
         "Element (the Manufacturer property) for hardware, and "     uint16 SnapshotType;
         "CIM_Product (the Vendor property) if the information is "  
         "related to Product acquisition. This data is also reported "  
         "here since it is part of the standard output from the "  
         "Device, and as an optimization.")  
       ]  
    uint16 SubsystemVendorID;  
       [Description (  
         "Register indiating how long the master would like to "  
         "retain PCI bus ownership whenever it initiates a "  
         "transaction. A zero value indicates no requirement."),  
        Units ("250 nanoseconds")  
       ]  
    uint8 MinGrantTime;  
       [Description (  
         "Register specifying how often the device needs access to "  
         "the PCI bus in 250ns. A zero value indicates no "  
         "requirement."),  
        Units ("250 nanoseconds")  
       ]  
    uint8 MaxLatency;  
 }; };
  
   
 // =================================================================== // ===================================================================
 // PCIBridge  // Memory
 // =================================================================== // ===================================================================
    [Description (    [Description (
      "Capabilities and management of a PCI controller providing "       "Capabilities and management of Memory-related LogicalDevices.") ]
      "bridge to bridge capability.")  class CIM_Memory : CIM_StorageExtent {
    ]        [Override ("ErrorMethodology"),
 class CIM_PCIBridge : CIM_PCIController         Description (
 {          "ErrorMethodology for Memory is a string property that "
       [Description ("Array of doubleword base memory addresses.") ]          "indicates whether parity or CRC algorithms, ECC or other "
    uint32 BaseAddress[2];          "mechanisms are used. Details on the algorithm can also "
       [Description (          "be supplied."),
         "The type of bridge. Except for \"Host\" (value=0), the type "         MappingStrings {"MIF.DMTF|Physical Memory Array|001.7"} ]
         "of bridge is PCI to <value>. For type \"Host\", the device is "     string ErrorMethodology;
         "a Host to PCI bridge."),  
        ValueMap {"0", "1", "2", "3", "4", "5", "6", "7", "8", "128"},  
        Values {"Host", "ISA", "EISA", "Micro Channel", "PCI",  
              "PCMCIA", "NuBus", "CardBus", "RACEway", "Other"}  
       ]  
    uint16 BridgeType;  
       [Description (  
         "The timeslice for the secondary interface when the bridge "  
         "is acting as an initiator. A zero value indicates no "  
         "requirement."),  
        Units ("PCI clock cycles")  
       ]  
    uint8 SecondaryLatencyTimer;  
       [Description (  
         "The number of the highest numbered bus that exists behind "  
         "the bridge.")  
       ]  
    uint8 SubordinateBusNumber;  
       [Description (  
         "The number of the PCI bus segment to which the secondary "  
         "interface of the bridge is connected.")  
       ]  
    uint8 SecondayBusNumber;  
       [Description (  
         "The number of the PCI bus segment to which the primary "  
         "interface of the bridge is connected.")  
       ]  
    uint8 PrimaryBusNumber;  
       [Description (       [Description (
         "The contents of the Bridge's SecondaryStatusRegister. "          "The beginning address, referenced by an application or "
         "For more information on the contents of this register, refer "          "operating system and mapped by a memory controller, for "
         "to the PCI-to-PCI Bridge Architecture Specification.")          "this Memory object. The starting address is specified in "
       ]          "KBytes."),
    uint16 SecondaryStatusRegister;         Units ("KiloBytes"),
          MappingStrings {"MIF.DMTF|Memory Array Mapped Addresses|001.3",
           "MIF.DMTF|Memory Device Mapped Addresses|001.4"} ]
      uint64 StartingAddress;
       [Description (       [Description (
         "The slowest device select timing for a target device on the "          "The ending address, referenced by an application or "
         "secondary bus."),          "operating system and mapped by a memory controller, for "
        Values {"Unknown", "Other", "Fast", "Medium", "Slow",          "this Memory object. The ending address is specified in "
              "Reserved"}          "KBytes."),
       ]         Units ("KiloBytes"),
    uint16 SecondaryBusDeviceSelectTiming;         MappingStrings {"MIF.DMTF|Memory Array Mapped Addresses|001.4",
           "MIF.DMTF|Memory Device Mapped Addresses|001.5"} ]
      uint64 EndingAddress;
       [Description (       [Description (
         "End address of the I/O addresses supported by the bus. The "          "An integer enumeration describing the type of error that "
         "upper four bits of this property specify the address bits, "          "occurred most recently. For example, single (value=6) or "
         "AD[15::12], of the I/O address. The remaining 12 bits of "          "double bit errors (7) can be specified using this property. "
         "the I/O address are assumed to be all 1's.")          "The values, 12-14, are undefined in the CIM Schema since in "
       ]          "DMI, they mix the semantics of the type of error and whether "
    uint8 IOLimit;          "it was correctable or not.  The latter is indicated in the "
           "property, CorrectableError."),
          ValueMap {"1", "2", "3", "4", "5", "6", "7", "8", "9", "10",
                    "11", "12", "13", "14"},
          Values {"Other", "Unknown", "OK", "Bad Read", "Parity Error",
                  "Single-Bit Error", "Double-Bit Error", "Multi-Bit Error",
                  "Nibble Error", "Checksum Error", "CRC Error", "Undefined",
                  "Undefined", "Undefined"},
          MappingStrings {"MIF.DMTF|Memory Device|005",
           "MIF.DMTF|Physical Memory Array|001.8"},
          ModelCorrespondence {"CIM_Memory.OtherErrorDescription"} ]
      uint16 ErrorInfo;
       [Description (       [Description (
         "Base address of I/O addresses supported by the bus. The "          "Free form string providing more information if the Error"
         "upper four bits of this property specify the address bits, "          "Type property is set to 1, \"Other\". If not set to 1, this "
         "AD[15::12], of the I/O address. The remaining 12 bits of "          "string has no meaning."),
         "the I/O address are assumed to be 0.")         ModelCorrespondence {"CIM_Memory.ErrorInfo"} ]
       ]     string OtherErrorDescription;
    uint8 IOBase;  
       [Description (       [Description (
         "End address of the memory supported by the bus. The "          "Boolean indicating that the most recent error was "
         "upper twelve bits of this property specify the address bits, "          "correctable. If the ErrorInfo property is equal to 3, "
         "AD[31::20], of a 32-bit memory address. The remaining 20 "          "\"OK\", then this property has no meaning."),
         "bits of the address are assumed to be all 1's.")         MappingStrings {"MIF.DMTF|Memory Device|005",
       ]          "MIF.DMTF|Physical Memory Array|001.8"} ]
    uint16 MemoryLimit;     boolean CorrectableError;
       [Description (       [Description (
         "Base address of the memory supported by the bus. The "          "The time that the last memory error occurred. The type of "
         "upper twelve bits of this property specify the address bits, "          "error is described by the ErrorInfo property. If the Error"
         "AD[31::20], of a 32-bit memory address. The remaining 20 "          "Info property is equal to 3, \"OK\", then this property has "
         "bits of the address are assumed to be 0.")          "no meaning.") ]
       ]     datetime ErrorTime;
    uint16 MemoryBase;  
       [Description (       [Description (
         "End address of the memory that can be prefetched by the bus. "          "An integer enumeration indicating the memory access "
         "The upper twelve bits of this property specify the address "          "operation that caused the last error. The type of error is "
         "bits, AD[31::20], of a 32-bit memory address. The remaining "          "described by the ErrorInfo property. If the ErrorInfo "
         "20 bits of the address are assumed to be all 1's.")          "property is equal to 3, \"OK\", then this property "
       ]          "has no meaning."),
    uint16 PrefetchMemoryLimit;         ValueMap {"1", "2", "3", "4", "5"},
          Values {"Other", "Unknown", "Read", "Write", "Partial Write"},
          MappingStrings {"MIF.DMTF|Memory Device|005",
           "MIF.DMTF|Physical Memory Array|001.10"} ]
      uint16 ErrorAccess;
       [Description (       [Description (
         "Base address of the memory that can be prefetched by the bus. "          "The size of the data transfer in bits that caused the last "
         "The upper twelve bits of this property specify the address "          "error. 0 indicates no error. If the ErrorInfo property "
         "bits, AD[31::20], of a 32-bit memory address. The remaining "          "is equal to 3, \"OK\", then this property should be set "
         "20 bits of the address are assumed to be 0.")          "to 0."),
       ]         Units ("Bits"),
    uint16 PrefetchMemoryBase;         MappingStrings {"MIF.DMTF|Memory Device|005",
           "MIF.DMTF|Physical Memory Array|001.11"} ]
      uint32 ErrorTransferSize;
         [OctetString, Description (
           "Data captured during the last erroneous mebmory access. "
           "The data occupies the first n octets of the array necessary "
           "to hold the number of bits specified by the ErrorTransferSize "
           "property. If ErrorTransferSize is 0, then this property "
           "has no meaning."),
          ArrayType ("Indexed"),
          MappingStrings {"MIF.DMTF|Memory Device|005",
           "MIF.DMTF|Physical Memory Array|001.12"} ]
      uint8 ErrorData[64];
       [Description (       [Description (
         "Upper 32 bits of the supported prefetch end address when "          "The ordering for data stored in the ErrorData property. "
         "64-bit addressing is used. The lower 32 bits are assumed to "          "\"Least Significant Byte First\" (value=1) or "
         "be all 1's.")          "\"Most Significant Byte First\" (2) can be specified. If "
       ]          "ErrorTransferSize is 0, then this property has no meaning."),
    uint32 PrefetchLimitUpper32;         Values {"Unknown", "Least Significant Byte First",
                  "Most Significant Byte First"}       ]
      uint16 ErrorDataOrder;
       [Description (       [Description (
         "Upper 32 bits of the supported prefetch base address when "          "Specifies the address of the last memory error. The type "
         "64-bit addressing is used. The lower 32 bits are assumed "          "of error is described by the ErrorInfo property. "
         "to be 0.")          "If the ErrorInfo property is equal to 3, \"OK\", then this "
       ]          "property has no meaning."),
    uint32 PrefetchBaseUpper32;         MappingStrings {"MIF.DMTF|Memory Device|005",
           "MIF.DMTF|Memory Device|005",
           "MIF.DMTF|Physical Memory Array|001.14"} ]
      uint64 ErrorAddress;
       [Description (       [Description (
         "Upper 16 bits of the supported I/O end address when 32-bit "          "Boolean indicating whether the address information in "
         "I/O addressing is used. The lower 16 bits are assumed to be "          "the property, ErrorAddress, is a system-level address (TRUE) "
         "all 1's.")          "or a physical address (FALSE). If the ErrorInfo property is "
       ]          "equal to 3, \"OK\", then this property has no meaning.") ]
    uint16 IOLimitUpper16;     boolean SystemLevelAddress;
       [Description (       [Description (
         "Upper 16 bits of the supported I/O base address when 32-bit "          "Specifies the range, in bytes, to which the last error can be "
         "I/O addressing is used. The lower 16 bits are assumed to be "          "resolved. For example, if error addresses are resolved to bit "
         "0.")          "11 (ie, on a typical page basis), then errors can be "
       ]          "resolved to 4K boundaries and this property is set to 4000. "
    uint16 IOBaseUpper16;          "If the ErrorInfo property is equal to 3, \"OK\", then this "
           "property has no meaning."),
          Units ("Bytes"),
          MappingStrings {"MIF.DMTF|Memory Device|005",
          "MIF.DMTF|Physical Memory Array|001.15"} ]
      uint64 ErrorResolution;
         [OctetString, Description (
           "An array of octets holding additional error information. "
           "An example is ECC Syndrome or the return of the check bits "
           "if a CRC-based ErrorMethodology is used. In the latter case, "
           "if a single bit error is recognized and the CRC algorithm "
           "is known, it is possible to determine the exact bit that "
           "failed.  This type of data (ECC Syndrome, Check Bit or "
           "Parity Bit data, or other vendor supplied information) is "
           "included in this field. If the ErrorInfo property is "
           "equal to 3, \"OK\", then AdditionalErrorData has no meaning."),
          MappingStrings {"MIF.DMTF|Memory Device|005",
           "MIF.DMTF|Physical Memory Array|001.13"} ]
      uint8 AdditionalErrorData[64];
 }; };
  
   
 // =================================================================== // ===================================================================
 // USBController  // AssociatedMemory
 // =================================================================== // ===================================================================
    [Description (     [Association, Description (
        "Capabilities and managment of a USB Host Controller.")       "LogicalDevices may have Memory installed on them or "
    ]       "otherwise associated with them - such as CacheMemory. "
 class CIM_USBController : CIM_Controller       "This is made explicit in this association.") ]
 {  class CIM_AssociatedMemory : CIM_Dependency {
       [Description (        [Override ("Antecedent"), Description (
         "Indicates the latest USB Version supported by the Controller. "          "Memory installed on or associated with a Device.") ]
         "The property is expressed as a Binary-Coded Decimal (BCD) "     CIM_Memory REF Antecedent;
         "where a decimal point is implied between the 2nd and 3rd "        [Override ("Dependent"), Description (
         "digits. For example, a value of 0x201 indicates that "          "The LogicalDevice.") ]
         "version 2.01 is supported.")     CIM_LogicalDevice REF Dependent;
       ]  
    uint16 USBVersion;  
       [Description (  
         "The type of interface used between the host system software "  
         "and the USBController."),  
        Values {"Unknown", "Other", "UHCI", "OHCI"},  
        ModelCorrespondence {"CIM_USBController.ControllerVersion"}  
       ]  
    uint16 InterfaceType;  
       [Description (  
         "Indicates the version of the USB Host Controller register "  
         "set, specific to the InterfaceType. The property is "  
         "expressed as a Binary-Coded Decimal (BCD) value where a "  
         "decimal point is implied between the 2nd and 3rd digits. "  
         "For example, a value of 0x103 indicates that version "  
         "1.03 is supported."),  
        ModelCorrespondence {"CIM_USBController.InterfaceType"}  
       ]  
    uint16 ControllerVersion;  
 }; };
  
   
 // =================================================================== // ===================================================================
 // USBPort  // ComputerSystemMemory
 // =================================================================== // ===================================================================
    [Description ("A Port on a USBHub.") ]     [Association, Aggregation, Description (
 class CIM_USBPort : CIM_LogicalPort       "Association indicating that memory is installed and required "
 {       "for the UnitaryComputerSystem to operate. At least one "
       [Override ("Speed"),       "Memory StorageExtent is required. Note that this relationship "
        Description (       "inherits from the SystemDevice association, and therefore, "
         "USB Port Speed in bits per second. This speed is determined "       "the Memory StorageExtent is weak to the aggregating Unitary"
         "and set by the attached Device. The 'attached Device' is "       "ComputerSystem.") ]
         "indicated using the USBConnection association. At this time, "  class CIM_ComputerSystemMemory : CIM_SystemDevice {
         "only several Port speeds are valid. These are: 1.5Mbps and "        [Override ("GroupComponent"), Aggregate,
         "12Mbps. The value 0 can also be specified to indicate that the "         Description ("The UnitaryComputerSystem.") ]
         "current speed is 'unknown' or 1 to indicate that the speed is "     CIM_UnitaryComputerSystem REF GroupComponent;
         "'other' than 1.5 or 12Mbps."),        [Override ("PartComponent"), Description (
        ValueMap {"0", "1", "1500000", "12000000"}          "The Memory StorageExtent which is part of the "
       ]          "UnitaryComputerSystem.") ]
    uint64 Speed;     CIM_Memory REF PartComponent;
       [Description (  
         "The USB Port's power capability. The current specification "  
         "defines that 1 or 5 loads can be supported (values 2 or 3 would "  
         "be specified, respectively)."),  
        Values {"Unknown", "Other", "1 Unit Load", "5 Unit Loads"}  
       ]  
    uint16 Power;  
       [Override ("StatusInfo"),  
        Description ("Indicates whether the Port is currently enabled."),  
        ValueMap {"2", "3", "4"},  
        Values {"Unknown", "Enabled", "Disabled"}  
       ]  
    uint16 StatusInfo;  
       [Override ("Availability"),  
        Description ("Indicates whether the Port is currently Powered."),  
        ValueMap {"2", "3", "7"},  
        Values {"Unknown", "Running/Full Power", "Power Off"}  
       ]  
    uint16 Availability;  
       [Description (  
         "Indicates whether the Port is currently Suspended.")  
       ]  
    boolean Suspended;  
       [Description (  
         "Indicates whether the Port is disabled due to an "  
         "overcurrent event.")  
       ]  
    boolean Overcurrent;  
 }; };
  
   
 // =================================================================== // ===================================================================
 // USBDevice  // AssociatedProcessorMemory
 // =================================================================== // ===================================================================
      [Association, Description (
        "Associates the Processor and system Memory, or a Processor's "
        "Cache. ")  ]
   class CIM_AssociatedProcessorMemory : CIM_AssociatedMemory {
         [Override ("Dependent"),
          Description (
           "The Processor that accesses the Memory or uses the Cache.") ]
      CIM_Processor REF Dependent;
    [Description (    [Description (
        "The management characterisitics of a USB Device. These ") ]          "Speed of the bus, in MHertz, between the Processor and "
 class CIM_USBDevice: CIM_LogicalDevice          "Memory. "),
 {         Units ("MegaHertz") ]
       [Description (     uint32 BusSpeed;
         "Indicates the latest USB Version supported by the USB Device. "  
         "The property is expressed as a Binary-Coded Decimal (BCD) "  
         "where a decimal point is implied between the 2nd and 3rd "  
         "digits. For example, a value of 0x201 indicates that "  
         "version 2.01 is supported.")  
       ]  
    uint16 USBVersion;  
       [Description ("Indicates the USB class code.") ]  
    uint8 ClassCode;  
       [Description ("Indicates the USB subclass code.") ]  
    uint8 SubclassCode;  
       [Description ("Indicates the USB protocol code.") ]  
    uint8 ProtocolCode;  
       [Description (  
         "Number of device configurations that are defined for the "  
         "Device.")  
       ]  
    uint8 NumberOfConfigs;  
       [Description (  
         "Indicates the configuration currently selected for the "  
         "Device. If this value is zero, the Device is "  
         "unconfigured."),  
        ModelCorrespondence {"CIM_USBDevice.CurrentAlternateSettings"}  
       ]  
    uint8 CurrentConfigValue;  
       [Description (  
         "An array of USB 'alternate settings' for each interface "  
         "in the currently selected configuration (indicated by the "  
         "CurrentConfigValue property). This array has one entry for "  
         "each interface in the configuration. If the property, "  
         "CurrentConfigValue, is zero (indicating the Device is not "  
         "configured), the array is undefined. To understand how "  
         "to parse this octet string, refer to the USB Specification."),  
        ModelCorrespondence {"CIM_USBDevice.CurrentConfigValue"}  
       ]  
    uint8 CurrentAlternateSettings[];  
       [Description (  
         "This method returns the USBDevice Descriptor as specified by "  
         "the input parameters. Each parameter is briefly described here "  
         "with more detail in its Qualifier list. RequestType is an input "  
         "parameter that defines whether the request is for standard, "  
         "class or vendor-specific information, as well as specifying the "  
         "recipient. RequestValue is also an input parameter and defines "  
         "the USB Descriptor Type and Index. RequestIndex is an input "  
         "parameter which describes the language used to return a string "  
         "Descriptor. RequestLength is both an input and output parameter. "  
         "It specifies the length of the Descriptor that should be returned "  
         "(on input) and what is actually returned in the Buffer parameter "  
         "(on output). Buffer is an output parameter, containing the "  
         "Descriptor data. The GetDescriptor method returns an integer "  
         "value of 0 if the USB Descriptor is successfully returned, "  
         "1 if the request is not supported and any other number to "  
         "indicate an error.\n"  
         "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.")  
       ]  
    uint32 GetDescriptor(  
     [IN, Description ("RequestType is bit-mapped and identifies the type "  
     "of Descriptor request and the recipient. The type of request "  
     "may be 'standard', 'class' or 'vendor-specific'. The recipient may "  
     "be 'device', 'interface', 'endpoint' or 'other'. Refer to the USB "  
     "Specification for the appropriate values for each bit.")]  
     uint8 RequestType,  
     [IN, Description ("RequestValue contains the Descriptor Type in the "  
     "high byte and the Descriptor Index (for example, index or offset "  
     "into the Descriptor array) in the low byte. Refer to the USB "  
     "Specification for more information.")]  
     uint16 RequestValue,  
     [IN, Description ("RequestIndex defines the 2 byte Language ID code "  
     "used by the USBDevice when returning string Descriptor data. The "  
     "parameter is typically 0 for non-string Descriptors. Refer to the "  
     "USB Specification for more information.")]  
     uint16 RequestIndex,  
     [IN, OUT, Description ("On input, RequestLength is the length (in "  
     "octets) of the Descriptor that should be returned. If this value "  
     "is less than the actual length of the Descriptor, only the requested "  
     "length will be returned. If it is more than the actual length, the "  
     "actual length is returned. On output, this parameter is the length, "  
     "in octets, of the Buffer being returned. If the requested "  
     "Descriptor does not exist, the contents of this parameter are "  
     "undefined.")]  
     uint16 RequestLength,  
     [OUT, Description ("Buffer returns the requested Descriptor "  
     "information. If the Descriptor does not exist, the contents of "  
     "the Buffer are undefined.")]  
     uint8 Buffer[]);  
 }; };
  
   
 // =================================================================== // ===================================================================
 // USBHub  // NonVolatileStorage
 // =================================================================== // ===================================================================
    [Description ("USB Hub Device.") ]  
 class CIM_USBHub : CIM_USBDevice  
 {  
       [Description (       [Description (
         "Indicates whether power to the Hub Ports is individually or "       "Capabilities and management of NV Storage. Non-volatile memory "
         "gang-switched. If this value is FALSE, power is switched "       "natively includes flash and ROM storage. In addition, NV memory "
         "individually for each Port. If this value is TRUE, power is "       "can be BasedOn VolatileStorage, if the volatile memory is backed "
         "switched to all Ports on the Hub at once.")       "by a Battery. This scenario would be completely described by an "
       ]       "instance of the AssociatedBattery relationship, referencing the "
    boolean GangSwitched;       "NonVolatileStorage as the Dependent and the Battery as the "
        "Antecedent, and an instance of the BasedOn relationship, "
        "referencing the NonVolatileStorage as the Dependent and the "
        "VolatileStorage as the Antecedent.") ]
   class CIM_NonVolatileStorage : CIM_Memory {
         [Description ("Indicating that the NV storage is writeable.") ]
      boolean IsWriteable;
       [Description (       [Description (
         "Number of downstream Ports on the Hub, including those "          "Boolean indicating that at least some portion of the "
         "embedded in the Hub's silicon. Individual USBPorts are "          "NonVolatileStorage is writeable by applications.") ]
         "associated with the Hub using the USBPortOnHub association.")     boolean ApplicationWriteable;
       ]        [Description (
    uint8 NumberOfPorts;          "When at least some portion of the NonVolatileStorage is "
           "writeable (ApplicationWriteable property = TRUE), StartAddress"
           "forApplcationWrite indicates the starting address for "
           "application data. If the ApplicationWriteable property is "
           "FALSE, this property is undefined."),
          ModelCorrespondence {
           "CIM_NonVolatileStorage.ApplicationWriteable"} ]
      uint64 StartAddressForApplicationWrite;
         [Description (
           "When at least some portion of the NonVolatileStorage is "
           "writeable (ApplicationWriteable property = TRUE), Application"
           "WritableSize indicates the number of bits available for "
           "application data. If the ApplicationWriteable property is "
           "FALSE, this property is undefined."),
          Units ("Bits"),
          ModelCorrespondence {
           "CIM_NonVolatileStorage.ApplicationWriteable"} ]
      uint64 ApplicationWriteableSize;
 }; };
  
   
 // =================================================================== // ===================================================================
 // USBPortOnHub  // BIOSLoadedInNV
 // =================================================================== // ===================================================================
    [Association,     [Association, Description (
     Description (       "A link between BIOSElement and NonVolatileStorage where "
        "USBPortOnHub associates a USBPort or connection point with the "       "the BIOS is loaded.") ]
        "USBHub that includes it.")  class CIM_BIOSLoadedInNV : CIM_Dependency {
    ]  
 class CIM_USBPortOnHub : CIM_PortOnDevice  
 {  
       [Override ("Antecedent"),       [Override ("Antecedent"),
        Min(1), Max(1),         Description ("The non-volatile storage.") ]
        Description ("The Hub that includes the USBPort.")     CIM_NonVolatileStorage REF Antecedent;
       ]  
    CIM_USBHub REF Antecedent;  
       [Override ("Dependent"),       [Override ("Dependent"),
        Min(1), Description ("The Port on the USBHub.") ]         Description ("The BIOS stored in the NonVolatile Extent.") ]
    CIM_USBPort REF Dependent;     CIM_BIOSElement REF Dependent;
         [Description (
           "The starting address where the BIOS is located in "
           "non-volatile storage.") ]
      uint64 StartingAddress;
         [Description (
           "The ending address where the BIOS is located in "
           "non-volatile storage.") ]
      uint64 EndingAddress;
 }; };
  
   
 // =================================================================== // ===================================================================
 // USBControllerHasHub  // VolatileStorage
 // =================================================================== // ===================================================================
    [Association,     [Description (
     Description (       "Capabilities and management of Volatile Storage.") ]
        "USBControllerHasHub defines the Hub(s) that are downstream "  class CIM_VolatileStorage : CIM_Memory {
        "of the USBController.")        [Description (
    ]          "Indicates whether this Memory can be cached or not."),
 class CIM_USBControllerHasHub : CIM_ControlledBy         MappingStrings {"MIF.DMTF|System Resource Memory Info|002"} ]
 {     boolean Cacheable;
       [Override ("Antecedent"),        [Description (
        Min(1), Max(1),          "An enumeration indicating the cache type that is "
        Description ("The USBController.")          "compatible with this Memory. For example, 4 indicates "
       ]          "write-through cache.  If the Cacheable property is "
    CIM_USBController REF Antecedent;          "set to false, then this property does not have meaning and "
       [Override ("Dependent"),          "should be set to 5, \"Not Applicable\"."),
        Min(1),         Values {"Other", "Unknown", "Write-Back", "Write-Through",
        Description (                 "Not Applicable"},
         "The USBHub that is associated with the Controller.")         MappingStrings {"MIF.DMTF|System Resource Memory Info|002"} ]
       ]     uint16 CacheType;
    CIM_USBHub REF Dependent;  
 }; };
  
   
 // =================================================================== // ===================================================================
 // USBConnection  // CacheMemory
 // =================================================================== // ===================================================================
    [Association,     [Description (
     Description (       "Capabilities and management of Cache Memory. Cache memory is "
      "USBConnection associates a Device with the USBPort to which it "       "dedicated or allocated RAM that a Processor searches first "
      "is connected.")       "for data, before going to 'regular' memory. CacheMemory is "
    ]       "used to speed up the delivery of data to a Processor. It is "
 class CIM_USBConnection: CIM_DeviceConnection       "usually described by its closeness to the Processor (for "
 {       "example, Primary or Secondary Cache).\n"
       [Override ("Antecedent"),       "If a DiskDrive includes RAM allocated for holding the disk's "
        Max(1),       "most recently read and/or adjacent data (in order to speed "
        Description ("The USBPort.")       "up retrieval), this also would be modeled as CacheMemory. "
       ]       "Note that CacheMemory is NOT operating system or application "
    CIM_USBPort REF Antecedent;       "level buffers but actual RAM allocated for caching data for "
       [Override ("Dependent"),       "a Processor, from a hard disk, etc.") ]
        Max(1),  class CIM_CacheMemory : CIM_Memory {
        Description ("The USBDevice that is connected to the Port.")        [Description (
       ]          "Defines whether this is the Primary (value=3), Secondary "
    CIM_USBDevice REF Dependent;          "(value=4) or Tertiary (value=5) Cache. Also, \"Other\" (1), "
           "\"Unknown\" (2) and \"Not Applicable\" (6) can be defined."),
          ValueMap {"1", "2", "3", "4", "5", "6"},
          Values {"Other", "Unknown", "Primary", "Secondary", "Tertiary",
                  "Not Applicable"},
          MappingStrings {"MIF.DMTF|System Cache|006"} ]
      uint16 Level;
         [Description (
           "Defines whether this is write-back (value=3) or write-through "
           "(value=4) Cache, or whether this information \"Varies with "
           "Address\" (5) or is defined individually for each I/O (6). "
           "Also, \"Other\" (1) and \"Unknown\" (2) can be specified."),
          ValueMap {"1", "2", "3", "4", "5", "6"},
          Values {"Other", "Unknown", "Write Back", "Write Through",
                  "Varies with Address", "Determination Per I/O"},
          MappingStrings {"MIF.DMTF|System Cache|006"} ]
      uint16 WritePolicy;
         [Description (
           "Defines whether this is for instruction caching (value=3), "
           "data caching (value=4) or both (value=5, \"Unified\"). "
           "Also, \"Other\" (1) and \"Unknown\" (2) can be defined."),
          ValueMap {"1", "2", "3", "4", "5"},
          Values {"Other", "Unknown", "Instruction", "Data", "Unified"},
          MappingStrings {"MIF.DMTF|System Cache|006"} ]
      uint16 CacheType;
         [Description (
           "Size, in bytes, of a single cache bucket or line."),
          Units ("Bytes"),
          MappingStrings {"MIF.DMTF|System Cache|006"} ]
      uint32 LineSize;
         [Description (
           "An integer enumeration describing the algorithm to "
           "determine which cache lines or buckets should be re-used."),
          ValueMap {"1", "2", "3", "4", "5", "6", "7", "8"},
          Values {"Other", "Unknown", "Least Recently Used (LRU)",
                  "First In First Out (FIFO)", "Last In First Out (LIFO)",
                  "Least Frequently Used (LFU)",
                  "Most Frequently Used (MFU)",
                  "Data Dependent Multiple Algorithms"},
          MappingStrings {"MIF.DMTF|System Cache|006"} ]
      uint16 ReplacementPolicy;
         [Description (
           "Policy that shall be employed by the Cache for handling "
           "read requests. For example, \"Read\", \"Read-Ahead\" or "
           "both can be specified using the values, 3, 4 or 5, "
           "respectively. If the read policy is determined individually "
           "(ie, for each request), then the value 6 (\"Determination "
           "per I/O\") should be specified. \"Other\" (1) and "
           "\"Unknown\" (2) are also valid values."),
          ValueMap {"1", "2", "3", "4", "5", "6"},
          Values {"Other", "Unknown", "Read", "Read-Ahead",
                  "Read and Read-Ahead", "Determination Per I/O"},
          MappingStrings {"MIF.DMTF|System Cache|006"} ]
      uint16 ReadPolicy;
         [Description (
           "Maximum amount of time, in seconds, dirty lines or "
           "buckets may remain in the Cache before they are flushed. "
           "A value of zero indicated that a cache flush is not "
           "controlled by a flushing timer."),
          Units ("Seconds"),
          MappingStrings {"MIF.DMTF|System Cache|006"} ]
      uint32 FlushTimer;
         [Description (
           "An integer enumeration defining the system cache "
           "associativity. For example, 6 indicates a fully associative "
           "cache."),
          ValueMap {"1", "2", "3", "4", "5", "6", "7", "8"},
          Values {"Other", "Unknown", "Direct Mapped",
                  "2-way Set-Associative",
                  "4-way Set-Associative", "Fully Associative",
                  "8-way Set-Associative", "16-way Set-Associative"},
          MappingStrings {"MIF.DMTF|System Cache|006"} ]
      uint16 Associativity;
 }; };
  
   
 // =================================================================== // ===================================================================
 // ManagementController  // MediaTransferDevice
 // =================================================================== // ===================================================================
    [Description (    [Description (
        "Capabilities and managment of a ManagementController.  An I2C "       "A MediaTransferDevice represents hardware that moves Physical"
        "microcontroller is a type of ManagementController.")       "Media. It is a superclass for Devices like PickerElement, "
    ]       "ChangerDevice and InterLibraryPort.") ]
 class CIM_ManagementController : CIM_Controller  class CIM_MediaTransferDevice : CIM_LogicalDevice {
 {  
 }; };
  
 // =================================================================== // ===================================================================
 // IDEController  // PickerElement
 // =================================================================== // ===================================================================
    [Description ("Capabilities and management of an IDEController.")]     [Description (
 class CIM_IDEController : CIM_Controller       "PickerElements represent hardware used to pick or place "
 {       "PhysicalMedia from/into StorageMediaLocations.") ]
   class CIM_PickerElement : CIM_MediaTransferDevice {
         [Description (
           "The maximum time in seconds for a PickerElement to grab "
           "a PhysicalMedia from a StorageMediaLocation, once the "
           "Picker has arrived at that Location. The maximum time "
           "interval for moving a Media from one point to another is "
           "the sum of the PickerElement's MaxPickTime, the Changer"
           "Device's MaxTransitTime and the PickerElement's MaxPutTime."),
          Units ("Seconds") ]
      uint32 MaxPickTime;
         [Description (
           "The maximum time in seconds for a PickerElement to place "
           "a PhysicalMedia into a StorageMediaLocation, once the "
           "Picker has arrived at that Location. The maximum time "
           "interval for moving a Media from one point to another is "
           "the sum of the PickerElement's MaxPickTime, the Changer"
           "Device's MaxTransitTime and the PickerElement's MaxPutTime."),
          Units ("Seconds") ]
      uint32 MaxPutTime;
         [Description (
           "String describing the location in the StorageLibrary "
           "where the Picker is currently positioned.") ]
      string CellLocation;
 }; };
  
 // ===================================================================  
 // PCMCIAController  
 // ===================================================================  
    [Description ("Capabilities and management of a PCMCIAController.")]  
 class CIM_PCMCIAController : CIM_Controller  
 {  
 };  
  
 // =================================================================== // ===================================================================
 // InfraredController  // ChangerDevice
 // =================================================================== // ===================================================================
    [Description (    [Description (
        "Capabilities and management of an InfraredController.")       "ChangerDevices represent hardware that moves PhysicalMedia "
    ]       "within a System, such as a StorageLibrary.") ]
 class CIM_InfraredController : CIM_Controller  class CIM_ChangerDevice : CIM_MediaTransferDevice {
 {        [Description (
           "The maximum time in seconds between a PickerElement pick "
           "and place. It should be reported as the transit time "
           "between the two most physically distant StorageMedia"
           "Locations in a System. The maximum time interval for "
           "moving a Media from one point to another is the sum of "
           "the PickerElement's MaxPickTime, the ChangerDevice's Max"
           "TransitTime and the PickerElement's MaxPutTime."),
          Units ("Seconds") ]
      uint32 MaxTransitTime;
         [Description (
           "Boolean set to TRUE if the Changer supports media flipping. "
           "Media needs to be flipped when multi-sided PhysicalMedia "
           "are placed into a MediaAccessDevice that does NOT support "
           "dual sided access.") ]
      boolean MediaFlipSupported;
         [Description (
           "Boolean set to TRUE if an audit is currently being performed "
           "by the Changer.") ]
      boolean AuditInProgress;
         [Description (
           "A count of the number of audits performed by the Changer."),
          Counter ]
      uint64 AuditsPerformed;
 }; };
  
   
 // =================================================================== // ===================================================================
 // ESCONController  // PickerForChanger
 // =================================================================== // ===================================================================
    [Description (     [Association, Description (
        "Capabilities and management of an ESCONController.")       "PickerForChanger indicates the PickerElement(s) that access "
    ]       "StorageMediaLocations and deliver PhysicalMedia to the Changer, "
 class CIM_ESCONController : CIM_Controller       "for movement through the System. A Changer may have several "
 {       "Pickers for faster exchange of Media.") ]
   class CIM_PickerForChanger : CIM_Dependency {
         [Override ("Antecedent"), Description (
           "The PickerElement that accesses StorageMediaLocations "
           "to deliver Media to the Changer.") ]
      CIM_PickerElement REF Antecedent;
         [Override ("Dependent"), Max (1),
          Description ("The ChangerDevice.") ]
      CIM_ChangerDevice REF Dependent;
 }; };
  
   
 // =================================================================== // ===================================================================
 // MediaAccessDevice  // LimitedAccessPort
 // =================================================================== // ===================================================================
    [Description (    [Description (
        "A MediaAccessDevice represents the ability to access one or "       "LimitedAccessPorts represent hardware that transports Physical"
        "more media and use this media to store and retrieve data.")       "Media into or out of a System, such as a StorageLibrary. They "
    ]       "are identified as 'limited' since these Ports do not provide "
 class CIM_MediaAccessDevice : CIM_LogicalDevice       "access to ALL the PhysicalMedia or StorageMediaLocations in a "
 {       "Library, but only to a subset.") ]
       [Description (  class CIM_LimitedAccessPort : CIM_MediaTransferDevice {
           "Capabilities of the MediaAccessDevice. For example, the "  
           "Device may support \"Random Access\", removeable media and "  
           "\"Automatic Cleaning\". In this case, the values 3, 7 and 9 "  
           "would be written to the array.\n"  
         "Several of the enumerated values require some explanation: "  
         "1) Value 11, Supports Dual Sided Media, distinguishes a "  
         "Device that can access both sides of dual sided Media, from "  
         "a Device that reads only a single side and requires the "  
         "Media to be flipped; and, 2) Value 12, Predismount Eject "  
         "Not Required, indicates that Media does not have to be "  
         "explicitly ejected from the Device before being accessed "  
         "by a PickerElement."),  
          ArrayType ("Indexed"),  
          Values {"Unknown", "Other", "Sequential Access",  
                "Random Access", "Supports Writing", "Encryption",  
                "Compression", "Supports Removeable Media",  
                  "Manual Cleaning", "Automatic Cleaning",  
              "SMART Notification", "Supports Dual Sided Media",  
              "Predismount Eject Not Required" },  
        MappingStrings {"MIF.DMTF|Storage Devices|001.9",  
                  "MIF.DMTF|Storage Devices|001.11",  
                  "MIF.DMTF|Storage Devices|001.12",  
                  "MIF.DMTF|Disks|003.7", "MIF.DMTF|Host Disk|001.2",  
              "MIF.DMTF|Host Disk|001.4"},  
          ModelCorrespondence {  
                "CIM_MediaAccessDevice.CapabilityDescriptions"}  
       ]  
    uint16 Capabilities[];  
         [Description (  
           "An array of free-form strings providing more detailed "  
           "explanations for any of the AccessDevice features indicated "  
           "in the Capabilities array. Note, each entry of this array "  
           "is related to the entry in the Capabilities array that "  
           "is located at the same index."),  
        ArrayType ("Indexed"),  
          ModelCorrespondence {"CIM_MediaAccessDevice.Capabilities"}  
       ]  
    string CapabilityDescriptions[];  
       [Description (  
           "ErrorMethodology is a free-form string describing "  
           "the type(s) of error detection and correction supported "  
           "by this Device.")  
       ]  
    string ErrorMethodology;  
       [Description (  
           "A free form string indicating the algorithm or tool used by "  
           "the device to support compression. "  
           "If it is not possible or not desired to describe the "  
           "compression scheme (perhaps because it is not known), "  
           "recommend using the following words: \"Unknown\" to "  
           "represent that it is not known whether the device supports "  
           "compression capabilities or not, \"Compressed\" to represent "  
           "that the device supports compression capabilities but either "  
           "its compression scheme is not known or not disclosed, and "  
           "\"Not Compressed\" to represent that the devices does not "  
           "support compression capabilities.")  
       ]  
    string CompressionMethod;  
       [Description (  
           "When the MediaAccessDevice supports multiple individual "  
           "Media, this property defines the maximum number which can "  
           "be supported or inserted.")  
       ]  
    uint32 NumberOfMediaSupported;  
       [Description (  
         "Maximum size, in KBytes, of media supported by this Device. "  
         "KBytes is interpreted as the number of bytes multiplied by "  
         "1000 (NOT the number of bytes multiplied by 1024)."),  
        MappingStrings {"MIF.DMTF|Sequential Access Devices|001.2",  
              "MIF.DMTF|Host Disk|001.5"}  
       ]  
    uint64 MaxMediaSize;  
       [Description ("Default block size, in bytes, for this Device."),  
        Units ("Bytes")  
       ]  
    uint64 DefaultBlockSize;  
       [Description (  
           "Maximum block size, in bytes, for media accessed by this "  
           "Device."),  
        Units ("Bytes")  
       ]  
    uint64 MaxBlockSize;  
       [Description (  
           "Minimum block size, in bytes, for media accessed by this "  
           "Device."),  
        Units ("Bytes")  
       ]  
    uint64 MinBlockSize;  
         [Description (  
           "Boolean indicating that the MediaAccessDevice needs cleaning. "  
           "Whether manual or automatic cleaning is possible is indicated "  
           "in the Capabilities array property. ")  
         ]  
    boolean NeedsCleaning;  
       [Description (  
         "True indicates that the media is locked in the Device "  
         "and can not be ejected. For non-removeable Devices, this "  
         "value should be true.")  
       ]  
    boolean MediaIsLocked;  
       [Description (  
         "An enumeration indicating the operational security defined "  
         "for the MediaAccessDevice. For example, information that "  
         "the Device is \"Read Only\" (value=4) or \"Boot Bypass\" "  
         "(value=6) can be described using this property."),  
        ValueMap {"1", "2", "3", "4", "5", "6", "7"},  
        Values {"Other", "Unknown", "None", "Read Only", "Locked Out",  
              "Boot Bypass", "Boot Bypass and Read Only"},  
        MappingStrings {"MIF.DMTF|Disks|003.22"}  
       ]  
    uint16 Security;  
       [Description (  
         "The date and time on which the Device was last cleaned.") ]  
    datetime LastCleaned;  
       [Description (  
         "Time in milliseconds to move from the first location on "  
         "the Media to the location that is furthest with respect to "  
         "time. For a DiskDrive, this represents full seek + full "  
         "rotational delay. For TapeDrives, this represents a search "  
         "from the beginning of the tape to the most physically "  
         "distant point. (The end of a tape may be at its most "  
         "physically distant point, but this is not necessarily "  
         "true.)"),  
        Units ("MilliSeconds")  
       ]  
    uint64 MaxAccessTime;  
       [Description (  
         "The sustained data transfer rate in KB/sec that the "  
         "Device can read from and write to a Media. This is a "  
         "sustained, raw data rate. Maximum rates or rates "  
         "assuming compression should not be reported in this "  
         "property."),  
        Units ("KiloBytes per Second")  
       ]  
    uint32 UncompressedDataRate;  
       [Description (  
         "Time in milliseconds from 'load' to being able to read "  
         "or write a Media. For example, for DiskDrives, this is "  
         "the interval between a disk not spinning to the disk "  
         "reporting that it is ready for read/write (ie, the disk "  
         "spinning at nominal speeds). For TapeDrives, this is "  
         "the time from a Media being injected to reporting that "  
         "it is ready for an application. This is usually at the "  
         "tape's BOT area."),  
        Units ("MilliSeconds")  
       ]  
    uint64 LoadTime;  
       [Description (  
         "Time in milliseconds from being able to read or write a "  
         "Media to its 'unload'. For example, for DiskDrives, "  
         "this is the interval between a disk spinning at nominal "  
         "speeds and a disk not spinning. For TapeDrives, this is "  
         "the time for a Media to go from its BOT to being fully "  
         "ejected and accessible to a PickerElement or human "  
         "operator."),  
        Units ("MilliSeconds")  
       ]  
    uint64 UnloadTime;  
       [Description (       [Description (
         "Method to lock and unlock the media in a removeable Access"          "Boolean indicating that the Port is 'locked' (TRUE) or "
         "Device. The method takes one parameter as input - a boolean "          "'unlocked' (FALSE). When the Port is locked, access its Media "
         "indicating whether to lock or unlock. TRUE indicates that "          "Locations is prevented without the use of a physical key, "
         "the media should be locked in the Device, FALSE indicates "          "front panel activity or the issuance of a software unlock "
         "that the media should be unlocked. The method returns 0 if "          "command.") ]
         "successful, 1 if not supported, and any other value if an "     boolean Locked;
         "error occurred. The set of possible return codes should be "  
         "specified in a ValueMap qualifier on the method. The strings "  
         "to which the ValueMap contents are 'translated' should be "  
         "specified as a Values array qualifier on the method.")  
       ]  
    uint32 LockMedia ([IN] boolean Lock);  
       [Description (       [Description (
         "For a MediaAccessDevice that supports removable Media, "          "When a Port is 'Extended' or 'open' (value=TRUE), its Storage"
         "the number of times that Media have been mounted for "          "MediaLocations are accessible to a human operator. If not "
         "data transfer or to clean the Device. For Devices "          "extended (value=FALSE), the Locations are accessible to a "
         "accessing nonremovable Media, such as hard disks, "          "PickerElement.") ]
         "this property is not applicable and should be set to 0."),     boolean Extended;
        Counter  
       ]  
    uint64 MountCount;  
       [Description (       [Description (
         "For a MediaAccessDevice that supports removable Media, "          "When a LimitedAccessPort is 'Extended', all related media-"
         "the most recent date and time that Media was mounted "          "transfer componentry may be stopped. The ExtendTimeout "
         "on the Device. For Devices accessing nonremovable Media, "          "property provides a mechanism to event on a Port left open "
         "such as hard disks, this property has no meaning and is "          "for a period of time (in seconds) exceeding the property's "
         "not applicable.")          "value."),
        ]         Units ("Seconds") ]
    datetime TimeOfLastMount;     uint32 ExtendTimeout;
         [Description ("Date and time that the Port was last extended.") ]
      datetime LastExtended;
         [Counter, Description (
           "The number of times that the LimitedAccessPort was used to "
           "move a PhysicalMedia into the System/StorageLibrary.") ]
      uint64 ImportCount;
         [Counter, Description (
           "The number of times that the LimitedAccessPort was used to "
           "move a PhysicalMedia out of the System/StorageLibrary.") ]
      uint64 ExportCount;
       [Description (       [Description (
         "For a MediaAccessDevice that supports removable Media, "          "An enumeration expressing whether the Port is used for "
         "the total time (in seconds) that Media have been mounted "          "import into the Library/System which scopes and names it "
         "for data transfer or to clean the Device. For Devices "          "(value=1), export from the Library/System (value=2), or "
         "accessing nonremovable Media, such as hard disks, "          "both (value=3)."),
         "this property is not applicable and should be set to 0.")         Values {"Unknown", "Import", "Export", "Both Import and Export"} ]
       ]     uint16 Direction;
    uint64 TotalMountTime;  };
   
   
   // ===================================================================
   // InterLibraryPort
   // ===================================================================
       [Description (       [Description (
         "Defines 'Units' relative to its use in the property, "       "InterLibraryPorts represent hardware that transports Physical"
         "MaxUnitsBeforeCleaning. This describes the criteria used "       "Media between connected StorageLibraries. The LibraryExchange "
         "to determine when the MediaAccessDevice should be cleaned."),       "association identifies the connected Libraries, by identifying "
        ModelCorrespondence {       "the connected InterLibraryPorts.") ]
            "CIM_MediaAccessDevice.MaxUnitsBeforeCleaning",  class CIM_InterLibraryPort : CIM_MediaTransferDevice {
            "CIM_MediaAccessDevice.UnitsUsed"}  
       ]  
    string UnitsDescription;  
       [Description (       [Description (
         "An unsigned integer indicating the maximum 'units' "          "Date and time that the Port was last accessed by its "
         "that can be used, with respect to the AccessDevice, "          "System/StorageLibrary. This value may be different "
         "before the Device should be cleaned. The property, "          "than that specified for the Port(s) to which this Inter"
         "UnitsDescription, defines how 'units' should be "          "LibraryPort is connected. Connected Ports are identified "
         "interpreted."),          "using the LibraryExchange association.") ]
        ModelCorrespondence {     datetime LastAccessed;
         "CIM_MediaAccessDevice.UnitsDescription"}        [Counter, Description (
       ]          "The number of times that the InterLibraryPort was used to "
    uint64 MaxUnitsBeforeCleaning;          "move a PhysicalMedia into the System/StorageLibrary.") ]
      uint64 ImportCount;
         [Counter, Description (
           "The number of times that the InterLibraryPort was used to "
           "move a PhysicalMedia out of the System/StorageLibrary.") ]
      uint64 ExportCount;
       [Description (       [Description (
         "An unsigned integer indicating the currently used "          "An enumeration expressing whether the Port is used for "
         "'units' of the AccessDevice, helpful to describe "          "import into the Library/System which scopes and names it "
         "when the Device may require cleaning. The property, "          "(value=1), export from the Library/System (value=2), or "
         "UnitsDescription, defines how 'units' should be "          "both (value=3)."),
         "interpreted."),         Values {"Unknown", "Import", "Export", "Both Import and Export"} ]
        Gauge,     uint16 Direction;
        ModelCorrespondence {  
         "CIM_MediaAccessDevice.UnitsDescription",  
         "CIM_MediaAccessDevice.MaxUnitsBeforeCleaning"}]  
    uint64 UnitsUsed;  
 }; };
  
   
 // =================================================================== // ===================================================================
 // DiskDrive  // LibraryExchange
 // =================================================================== // ===================================================================
      [Association, Description (
        "LibraryExchange indicates that two StorageLibraries are "
        "connected through their InterLibraryPorts.") ]
   class CIM_LibraryExchange : CIM_Dependency {
         [Override ("Antecedent"),
          Description ("The InterLibraryPort of one StorageLibrary.") ]
      CIM_InterLibraryPort REF Antecedent;
         [Override ("Dependent"),
          Description ("The InterLibraryPort of the connected Library.") ]
      CIM_InterLibraryPort REF Dependent;
    [Description (    [Description (
        "Capabilities and managment of a DiskDrive, a subtype of "          "Enumeration indicating whether the Antecedent (value=1), "
        "MediaAccessDevice.")          "Dependent (value=2), or neither Library (value=3) currently has "
    ]          "access to the Port."),
 class CIM_DiskDrive : CIM_MediaAccessDevice         Values {"Unknown", "Antecedent", "Dependent", "Neither"} ]
 {     uint16 CurrentlyAccessingPort;
 }; };
  
   
 // =================================================================== // ===================================================================
 // DisketteDrive  // LabelReader
 // =================================================================== // ===================================================================
    [Description (    [Description (
        "Capabilities and managment of a DisketteDrive, a subtype of "       "LabelReaders represent hardware capable of scanning or reading "
        "MediaAccessDevice.")       "a physical label or the NonVolatileMemory on a PhysicalMedia. "
    ]       "Examples of labels include barcode and OCR tags.") ]
 class CIM_DisketteDrive : CIM_MediaAccessDevice  class CIM_LabelReader : CIM_LogicalDevice {
 {        [Description (
           "An array of enumerated integers describing the formats of "
           "the labels that can be read or scanned by the LabelReader. "
           "The values specified for this property correspond to "
           "those defined for CIM_PhysicalMedia.LabelFormats."),
          Values {"Barcode", "Radio Frequency Identification",
                  "OCR (Optical Character Recognition)",
                  "MICR (Magnetic Ink Character Recognition)",
                  "7 Character Barcode", "9 Character Barcode"},
          ModelCorrespondence {"CIM_PhysicalMedia.LabelFormats"} ]
      uint16 SupportedFormats[];
         [Description (
           "The technology used by the LabelReader. One entry of the "
           "Values array requires some explanation - \"Memory Reader\". "
           "The latter describes the ability to access memory in a Physical"
           "Media's packaging (for example, memory on an AIT tape). The "
           "existence of this Memory is indicated by the MemoryWithMedia "
           "association on the physical side, or by AssociatedMemory on "
           "the logical side."),
          Values {"Unknown", "Other", "Laser", "Infrared", "RF",
                  "Camera", "Memory Reader"} ]
      uint16 Technology;
 }; };
  
   
 // =================================================================== // ===================================================================
 // CDROMDrive  // AssociatedLabelReader
 // =================================================================== // ===================================================================
    [Description (     [Association, Description (
        "Capabilities and managment of a CDROMDrive, a subtype of "       "A LogicalDevice may use or require one or more LabelReaders, to "
        "MediaAccessDevice.")       "scan barcodes or otherwise identify entities. This relationship "
    ]       "is described by the AssociatedLabelReader dependency. ") ]
 class CIM_CDROMDrive : CIM_MediaAccessDevice  class CIM_AssociatedLabelReader : CIM_Dependency {
 {        [Override ("Antecedent"),
          Description ("The LabelReader.") ]
      CIM_LabelReader REF Antecedent;
         [Override ("Dependent"), Description (
           "The Device that is dependent on the Reader Device.") ]
      CIM_LogicalDevice REF Dependent;
 }; };
  
   
 // =================================================================== // ===================================================================
 // WORMDrive  // PickerLabelReader
 // =================================================================== // ===================================================================
    [Description (     [Association, Description (
        "Capabilities and managment of a WORMDrive, a subtype of "       "PickerLabelReader is used to indicate that one or more Label"
        "MediaAccessDevice.")       "Readers works in conjunction with PickerElements, to identify "
    ]       "PhysicalMedia as they are being picked/placed.") ]
 class CIM_WORMDrive : CIM_MediaAccessDevice  class CIM_PickerLabelReader : CIM_AssociatedLabelReader {
 {        [Override ("Dependent"), Description (
           "The PickerElement that is dependent on the Reader Device.") ]
      CIM_PickerElement REF Dependent;
 }; };
  
   
 // =================================================================== // ===================================================================
 // MagnetoOpticalDrive  // AccessLabelReader
 // =================================================================== // ===================================================================
    [Description (     [Association, Description (
        "Capabilities and managment of a MagnetoOpticalDrive, a "       "AccessLabelReader is used to indicate that one or more Label"
        "subtype of MediaAccessDevice.")       "Readers works in conjunction with MediaAccessDevices, "
    ]       "to identify PhysicalMedia before read/write.") ]
 class CIM_MagnetoOpticalDrive : CIM_MediaAccessDevice  class CIM_AccessLabelReader : CIM_AssociatedLabelReader {
 {        [Override ("Dependent"),  Description (
           "The MediaAccessDevice that is dependent on the Reader "
           "Device.") ]
      CIM_MediaAccessDevice REF Dependent;
 }; };
  
   
 // =================================================================== // ===================================================================
 // TapeDrive  //
   //    Services and Printing
   //
 // =================================================================== // ===================================================================
    [Description (  
        "Capabilities and managment of a TapeDrive, a subtype of "  
        "MediaAccessDevice.")  // ===================================================================
    ]  // DeviceServiceImplementation
 class CIM_TapeDrive : CIM_MediaAccessDevice  // ===================================================================
 {     [Association, Description (
       [Description (       "An association between a Service and how it is implemented. "
           "EOTWarningZoneSize indicates the size, in bytes, of the "       "The cardinality of this association is many-to-many. "
           "area designated as 'end of tape'. Access in this area "       "A Service may be provided by more than one Logical"
           "generates an 'end of tape' warning."),       "Device, operating in conjunction.  And, any Device may "
        Units ("Bytes")       "provide more than one Service.  When multiple Devices are "
       ]       "associated with a single Service, it is assumed that these "
    uint32 EOTWarningZoneSize;       "elements operate in conjunction to provide the Service.  If "
       [Description ("Maximum partition count for the TapeDrive.")]       "different implementations of a Service exist, each of these "
    uint32 MaxPartitionCount;       "implementations would result in individual instantiations "
       [Description (       "of the Service object.  These individual instantiations "
           "Padding indicates the number of bytes inserted between "       "would then have associations to the unique implementations.") ]
           "blocks on a tape Media."),  class CIM_DeviceServiceImplementation : CIM_Dependency {
        Units ("Bytes")        [Override ("Antecedent"),
       ]         Description ("The LogicalDevice.") ]
    uint32 Padding;     CIM_LogicalDevice REF Antecedent;
       [Description (        [Override ("Dependent"),
         "Time in milliseconds to move from the most physically distant "         Description ("The Service implemented using the LogicalDevice.") ]
         "point on the tape to the beginning."),     CIM_Service REF Dependent;
        Units ("MilliSeconds")  
       ]  
    uint64 MaxRewindTime;  
 }; };
  
   
 // =================================================================== // ===================================================================
 // DVDDrive  // DeviceSAPImplementation
 // =================================================================== // ===================================================================
    [Description (     [Association, Description (
        "Capabilities and management of a DVDDrive, a subtype of "       "An association between a ServiceAccessPoint and how "
        "MediaAccessDevice.")       "it is implemented. The cardinality of this association "
    ]       "is many-to-many.  A SAP may be provided by more "
 class CIM_DVDDrive : CIM_MediaAccessDevice       "than one LogicalDevice, operating in conjunction.  And, any "
 {       "Device may provide more than one ServiceAccessPoint. "
       [Description (       "When many LogicalDevices are associated with a single "
         "The CD and DVD formats that are supported by this Device. "       "SAP, it is assumed that these elements operate in "
         "For example, the Drive may support \"CD-ROM\" and "       "conjunction to provide the AccessPoint.  If different "
         "\"DVD-RAM\". In this case, the values 16 and 24 would be "       "implementations of a SAP exist, each of these implementations "
         "written to the array. This property's values align with "       "would result in individual instantiations of the "
         "those defined in PhysicalMedia.MediaType."),       "ServiceAccessPoint object.  These individual instantiations "
        ValueMap {"0", "1", "16", "17", "18", "19", "22", "23", "24",       "would then have associations to the unique implementations.") ]
                "25", "26", "27", "33", "34", "35", "36", "37", "38",  class CIM_DeviceSAPImplementation : CIM_Dependency {
                "39", "40", "41", "42"},        [Override ("Antecedent"),
        Values {"Unknown", "Other", "CD-ROM", "CD-ROM/XA",         Description ("The LogicalDevice.") ]
              "CD-I", "CD Recordable", "DVD", "DVD-RW+",     CIM_LogicalDevice REF Antecedent;
              "DVD-RAM", "DVD-ROM", "DVD-Video", "Divx", "CD-RW",        [Override ("Dependent"),
              "CD-DA", "CD+", "DVD Recordable", "DVD-RW",         Description (
              "DVD-Audio", "DVD-5", "DVD-9", "DVD-10", "DVD-18"},          "The ServiceAccessPoint implemented using the LogicalDevice.") ]
        ModelCorrespondence {"CIM_PhysicalMedia.MediaType"}     CIM_ServiceAccessPoint REF Dependent;
       ]  
    uint16 FormatsSupported[];  
 }; };
  
   
 // =================================================================== // ===================================================================
 // Processor  // VideoBIOSFeature
 // =================================================================== // ===================================================================
    [Description (    [Description (
        "Capabilities and management of the Processor LogicalDevice.")       "VideoBIOSFeature represents the capabilities of the low-level "
    ]       "software that is used to bring up, configure and use a "
 class CIM_Processor : CIM_LogicalDevice       "ComputerSystem's VideoController and Display.")  ]
 {  class CIM_VideoBIOSFeature : CIM_SoftwareFeature {
       [Description (  
           "A free form string describing the role of the Processor - "  
           "for example, \"Central Processor\" or \"Math Processor\".")  
       ]  
    string Role;  
       [Description (  
           "The Processor family type. For example, values include "  
           "\"Pentium(R) processor with MMX(TM) technology\" (14) and \"68040\" (96)."),  
          ValueMap {  
                 "1", "2", "3", "4", "5", "6", "7", "8", "9", "10",  
                 "11", "12", "13", "14", "15", "16", "17", "18", "19",  
                 "24", "25", "26", "27", "28", "29", "30",  
                 "31", "32", "33", "34", "35", "36", "37", "38", "39",  
                 "48", "49", "50",  
                 "51", "52", "53", "54", "55",  
                 "64", "65", "66", "67", "68", "69",  
                 "80",  
                 "81", "82", "83", "84", "85", "86", "87", "88",  
                 "96", "97", "98", "99", "100",  
                 "101",  
                 "112", "120",  
                 "121", "128", "130",  
                 "144", "145", "146", "147", "148", "149", "150",  
                 "160",  
                 "176", "177", "180",  
                 "200", "201", "202",  
                 "250", "251",  
                 "260", "261",  
                 "280", "281",  
                 "300", "301", "302",  
                 "320", "350", "500"},  
        Values {  
                         "Other", "Unknown", "8086", "80286", "80386", "80486","8087", "80287", "80387", "80487",  
                         "Pentium(R) brand","Pentium(R) Pro", "Pentium(R) II",  
                         "Pentium(R) processor with MMX(TM) technology", "Celeron(TM)",  
                         "Pentium(R) II Xeon(TM)", "Pentium(R) III",  
                     "M1 Family", "M2 Family", "K5 Family", "K6 Family",  
                         "K6-2", "K6-3", "AMD Athlon(TM) Processor Family",  
                         "AMD(R) Duron(TM) Processor","AMD29000 Family", "K6-2+",  
                         "Power PC Family", "Power PC 601", "Power PC 603", "Power PC 603+",  
                 "Power PC 604", "Power PC 620", "Power PC X704",  
                 "Power PC 750", "Alpha Family", "Alpha 21064",  
                 "Alpha 21066", "Alpha 21164", "Alpha 21164PC",  
                 "Alpha 21164a", "Alpha 21264", "Alpha 21364",  
                 "MIPS Family", "MIPS R4000", "MIPS R4200",  
                 "MIPS R4400", "MIPS R4600", "MIPS R10000",  
                 "SPARC Family", "SuperSPARC", "microSPARC II",  
                 "microSPARC IIep", "UltraSPARC", "UltraSPARC II",  
                 "UltraSPARC IIi", "UltraSPARC III", "UltraSPARC IIIi",  
                 "68040", "68xxx Family", "68000", "68010", "68020",  
                 "68030", "Hobbit Family", "Crusoe(TM) TM5000 Family",  
                         "Crusoe(TM) TM3000 Family","Weitek", "Itanium(TM) Processor",  
                         "PA-RISC Family", "PA-RISC 8500", "PA-RISC 8000",  
                         "PA-RISC 7300LC", "PA-RISC 7200", "PA-RISC 7100LC",  
                         "PA-RISC 7100", "V30 Family", "Pentium(R) III Xeon(TM)",  
                         "Pentium(R) III Processor with Intel(R) SpeedStep(TM) Technology",  
                         "AS400 Family", "IBM390 Family", "G4", "G5", "i860", "i960",  
                         "SH-3", "SH-4", "ARM", "StrongARM", "6x86", "MediaGX", "MII",  
                 "WinChip", "DSP", "Video Processor"},  
        MappingStrings {"MIF.DMTF|Processor|013"},  
          ModelCorrespondence {"CIM_Processor.OtherFamilyDescription"}  
       ]  
    uint16 Family;  
         [Description (         [Description (
           "A string describing the Processor Family type - used when "          "An array of integers that specify the features supported by "
           "the Family property is set to 1 (\"Other\"). This string "          "the VideoBIOS. For example, one could indicate support for "
           "should be set to NULL when the Family property is any "          "VESA power management (value=6) or video BIOS shadowing (8). "
           "value other than 1."),          "The value, 3, is not valid in the CIM Schema since in DMI it "
          MaxLen (64),          "represents that no BIOS Features are supported.  In this "
          ModelCorrespondence {"CIM_Processor.Family"}          "case, the object should not be instantiated."),
         ]         ValueMap {"1", "2", "3", "4", "5", "6", "7", "8", "9"},
    string OtherFamilyDescription;         Values {"Other", "Unknown", "Undefined", "Standard Video BIOS",
                  "VESA BIOS Extensions Supported",
                  "VESA Power Management Supported",
                  "VESA Display Data Channel Supported",
                  "Video BIOS Shadowing Allowed", "Video BIOS Upgradeable"},
          ArrayType ("Indexed"),
          MappingStrings {"MIF.DMTF|Video BIOS Characteristic|001.3"},
          ModelCorrespondence {
           "CIM_VideoBIOSFeature.CharacteristicDescriptions"} ]
      uint16 Characteristics[];
       [Description (       [Description (
           "CPU socket information including data on how this "          "An array of free-form strings providing more detailed "
         "Processor can be upgraded (if upgrades are supported). "          "explanations for any of the VideoBIOS features indicated in "
           "This property is an integer enumeration."),          "the Characteristics array. Note, each entry of this array "
        ValueMap {"1", "2", "3", "4", "5", "6", "7", "8", "9",          "is related to the entry in the Characteristics array that "
                "10", "11", "12", "13", "14"},          "is located at the same index."),
          Values {"Other", "Unknown", "Daughter Board", "ZIF Socket",         ArrayType ("Indexed"),
                "Replacement/Piggy Back", "None", "LIF Socket", "Slot 1",         MappingStrings {"MIF.DMTF|Video BIOS Characteristic|001.4"},
                  "Slot 2", "370 Pin Socket", "Slot A", "Slot M", "Socket 423",         ModelCorrespondence {"CIM_VideoBIOSFeature.Characteristics"} ]
                  "Socket A (Socket 462)"},     string CharacteristicDescriptions[];
        MappingStrings {"MIF.DMTF|Processor|013"}  };
       ]  
    uint16 UpgradeMethod;  
       [Description ("The maximum speed (in MHz) of this Processor."),  // ===================================================================
        Units ("MegaHertz"),  // VideoBIOSElement
        MappingStrings {"MIF.DMTF|Processor|013"}  // ===================================================================
       ]  
    uint32 MaxClockSpeed;  
       [Description ("The current speed (in MHz) of this Processor."),  
        Units ("MegaHertz"),  
        MappingStrings {"MIF.DMTF|Processor|013"}  
       ]  
    uint32 CurrentClockSpeed;  
       [Description ("Processor data width in bits."),  
        Units ("Bits")  
       ]  
    uint16 DataWidth;  
       [Description ("Processor address width in bits."),  
        Units ("Bits")  
       ]  
    uint16 AddressWidth;  
       [Gauge, Description (  
           "Loading of this Processor, averaged over the last minute, "  
           "in Percent."),  
          Units ("Percent"),  
          MappingStrings {"MIB.IETF|HOST-RESOURCES-MIB.hrProcessorLoad"}  
         ]  
    uint16 LoadPercentage;  
         [Description (         [Description (
           "Stepping is a free-form string indicating the revision "       "VideoBIOSElement represents the low-level software that is "
           "level of the Processor within the Processor.Family."),       "loaded into non-volatile storage and used to bring up, "
          ModelCorrespondence {"CIM_Processor.Family"}       "configure and access a ComputerSystem's VideoController and "
       ]       "Display.") ]
    string Stepping;  class CIM_VideoBIOSElement : CIM_SoftwareElement {
         [Override ("Version"),
          MappingStrings {"MIF.DMTF|Video BIOS|001.3"} ]
      string Version;
         [Override ("Manufacturer"),
          MappingStrings {"MIF.DMTF|Video BIOS|001.2"} ]
      string Manufacturer;
       [Description (       [Description (
         "A globally unique identifier for the Processor. This "          "If true, indicates that the Video BIOS is shadowed."),
         "identifier may only be unique within a Processor Family.")         MappingStrings {"MIF.DMTF|Video BIOS|001.5"} ]
       ]     boolean IsShadowed;
    string UniqueID;  
       [Description (       [Description (
         "The CPUStatus property indicates the current status of "          "Date that this BIOS was released."),
         "the Processor. For example, it may be disabled by the user "         MappingStrings {"MIF.DMTF|Video BIOS|001.4"} ]
         "via BIOS (value=2), or disabled due to a POST error (value="     datetime ReleaseDate;
         "3). Information in this property can be obtained from SMBIOS, "  
         "the Type 4 structure, the Status attribute."),  
        ValueMap {"0", "1", "2", "3", "4", "7"},  
        Values {"Unknown", "CPU Enabled",  
              "CPU Disabled by User via BIOS Setup",  
              "CPU Disabled By BIOS (POST Error)", "CPU Is Idle", "Other"}  
       ]  
    uint16 CPUStatus;  
 }; };
  
   
 // =================================================================== // ===================================================================
 // ComputerSystemProcessor  // VideoBIOSFeatureVideoBIOSElements
 // =================================================================== // ===================================================================
    [Association,     [Association, Aggregation, Description (
     Aggregation,       "A link between VideoBIOSFeature and its aggregated "
     Description (       "VideoBIOSElements.") ]
        "Association indicating the processor(s) of a Unitary"  class CIM_VideoBIOSFeatureVideoBIOSElements :
        "ComputerSystem. At least one processor is required. Note "   CIM_SoftwareFeatureSoftwareElements {
          "that this relationship inherits from the SystemDevice "        [Override ("GroupComponent"), Aggregate,
          "association, and therefore, the System Processor is weak to "         Description ("The VideoBIOSFeature.") ]
          "the aggregating UnitaryComputerSystem.")     CIM_VideoBIOSFeature REF GroupComponent;
    ]  
 class CIM_ComputerSystemProcessor : CIM_SystemDevice  
 {  
       [Override ("GroupComponent"),  
        Aggregate,  
        Description ("The UnitaryComputerSystem.")  
       ]  
    CIM_UnitaryComputerSystem REF GroupComponent;  
       [Override ("PartComponent"),       [Override ("PartComponent"),
        Description (        Description (
           "The Processor which is part of the UnitaryComputerSystem.")          "The VideoBIOSElement that implements the capabilities "
       ]          "described by VideoBIOSFeature.") ]
    CIM_Processor REF PartComponent;     CIM_VideoBIOSElement REF PartComponent;
 }; };
  
   
 // =================================================================== // ===================================================================
 // StorageExtent  // DeviceSoftware
 // =================================================================== // ===================================================================
      [Association, Description (
        "The DeviceSoftware relationship identifies any software that "
        "is associated with a Device - such as drivers, configuration "
        "or application software, or firmware.") ]
   class CIM_DeviceSoftware : CIM_Dependency {
         [Override ("Antecedent"),
          Description ("The SoftwareElement.") ]
      CIM_SoftwareElement REF Antecedent;
         [Override ("Dependent"),
          Description (
           "The LogicalDevice that requires or uses the software.") ]
      CIM_LogicalDevice REF Dependent;
    [Description (    [Description (
        "StorageExtent describes the capabilities and management of "          "An enumerated integer to indicate the role this software "
        "the various media that exist to store data and allow data "          "plays in regards to its associated Device. For example, this "
        "retrieval. This superclass could be used to represent the "          "software could be instrumentation (value=5) or firmware (6)."),
          "various components of RAID (Hardware or Software) or as a "         Values {"Unknown", "Other", "Driver", "Configuration Software",
        "raw logical extent on top of physical media.")                 "Application Software", "Instrumentation", "Firmware",
    ]                 "BIOS", "Boot ROM"},
 class CIM_StorageExtent : CIM_LogicalDevice         ModelCorrespondence {"CIM_DeviceSoftware.PurposeDescription"},
 {         MappingStrings {"MIF.DMTF|SubComponent Software|001.2"}  ]
       [Description ("Type of data organization used."),     uint16 Purpose;
        Values {"Other", "Unknown", "Fixed Block", "Variable Block",  
              "Count Key Data"}  
       ]  
    uint16 DataOrganization;  
       [Description (       [Description (
           "A free form string describing the media and/or its use."),          "A free-form string to provide more information for "
           "the Purpose property, e.g. \"Application Software\"."),
          ModelCorrespondence {"CIM_DeviceSoftware.Purpose"} ]
      string PurposeDescription;
         [Description (
           "Boolean indicating that the software is 'burned into' or "
           "otherwise located on the hardware of the LogicalDevice.") ]
      boolean LoadedOnDevice;
         [Description (
           "Boolean indicating whether the software is upgradeable, "
           "when it is LoadedOnDevice. Software that is loaded as "
           "part of the OperatingSystem is typically changeable and "
           "upgradeable. However, when DeviceSoftware is burned into "
           "EEPROM or a chip that Realizes the LogicalDevice, then "
           "it may not be upgradeable. This property indicates the "
           "ability to update and upgrade DeviceSoftware.") ]
      boolean UpgradeableOnDevice;
   };
   
   
   // ===================================================================
   // Printer
   // ===================================================================
      [Description (
        "Capabilities and management of the Printer LogicalDevice.") ]
   class CIM_Printer : CIM_LogicalDevice {
         [Description (
           "Status information for a Printer, beyond that specified "
           "in the LogicalDevice Availability property. Values include "
           "\"Idle\" (3) and an indication that the Device is currently "
           "printing (4)."),
          ValueMap {"1", "2", "3", "4", "5", "6", "7"},
          Values {"Other", "Unknown", "Idle", "Printing", "Warmup",
                  "Stopped Printing", "Offline"},
          MappingStrings {"MIB.IETF|Printer-MIB.hrPrinterStatus"} ]
      uint16 PrinterStatus;
         [Description ("Printer error information."),
          Values {"Unknown", "Other", "No Error", "Low Paper",
                  "No Paper", "Low Toner",
                  "No Toner", "Door Open", "Jammed", "Offline",
                  "Service Requested", "Output Bin Full"},
          ModelCorrespondence {"CIM_Printer.ErrorInformation"},
          MappingStrings {          MappingStrings {
                "MIB.IETF|HOST-RESOURCES-MIB.hrStorageDescr"}          "MIB.IETF|Printer-MIB.hrPrinterDetectedErrorState"} ]
       ]     uint16 DetectedErrorState;
    string Purpose;  
       [Description (       [Description (
           "Access describes whether the media is readable (value=1), "          "An array providing supplemental information for the "
           "writeable (value=2), or both (value=3). \"Unknown\" (0) "          "current error state, indicated in DetectedErrorState."),
           "and \"Write Once\" (4) can also be defined."),         ModelCorrespondence {"CIM_Printer.DetectedErrorState"} ]
        Values {"Unknown", "Readable", "Writeable",     string ErrorInformation[];
                "Read/Write Supported", "Write Once"}        [Description (
       ]          "An integer array indicating the types of paper supported."),
    uint16 Access;         Values {"Unknown", "Other", "A", "B", "C", "D", "E",
                  "Letter", "Legal", "NA-10x13-Envelope", "NA-9x12-Envelope",
                  "NA-Number-10-Envelope", "NA-7x9-Envelope",
                  "NA-9x11-Envelope", "NA-10x14-Envelope",
                  "NA-Number-9-Envelope", "NA-6x9-Envelope",
                  "NA-10x15-Envelope", "A0", "A1", "A2", "A3", "A4", "A5",
                  "A6", "A7", "A8", "A9" "A10", "B0", "B1", "B2", "B3", "B4",
                  "B5", "B6", "B7", "B8", "B9", "B10", "C0", "C1", "C2" "C3",
                  "C4", "C5", "C6", "C7", "C8", "ISO-Designated", "JIS B0",
                  "JIS B1", "JIS B2", "JIS B3", "JIS B4", "JIS B5", "JIS B6",
                  "JIS B7", "JIS B8", "JIS B9", "JIS B10",
                  "NA-Letter", "NA-Legal", "B4-Envelope", "B5-Envelope",
                  "C3-Envelope", "C4-Envelope", "C5-Envelope", "C6-Envelope",
                  "Designated-Long-Envelope", "Monarch-Envelope",
                  "Executive", "Folio", "Invoice", "Ledger", "Quarto"} ]
      uint16 PaperSizesSupported[];
         [Description (
           "An array of free-form strings specifying the types of "
           "paper that are currently available on the Printer. Each "
           "string should be expressed in the form specified by "
           "ISO/IEC 10175 Document Printing Application (DPA) which "
           "is also summarized in Appendix C of RFC 1759 (Printer MIB). "
           "Examples of valid strings are \"iso-a4-colored\" and "
           "\"na-10x14-envelope\". By definition a paper size that "
           "is available and listed in PaperTypesAvailable should "
           "also appear in the PaperSizesSupported property."),
          ArrayType ("Indexed"),
          ModelCorrespondence {"CIM_PrintJob.RequiredPaperType",
           "CIM_PrintService.PaperTypesAvailable"},
          MappingStrings {"MIB.IETF|Printer-MIB.prtInputMediaName"} ]
      string PaperTypesAvailable[];
         [Description (
           "Specifies the paper type that the Printer will use if a "
           "PrintJob does not specify a particular type. The string "
           "should be expressed in the form specified by ISO/IEC "
           "10175 Document Printing Application (DPA) which is also "
           "summarized in Appendix C of RFC 1759 (Printer MIB)."),
          ModelCorrespondence {"CIM_Printer.PaperTypesAvailable"} ]
      string DefaultPaperType;
         [Description (
           "Specifies the paper type that the Printer is currently "
           "using. The string should be expressed in the form specified "
           "by ISO/IEC 10175 Document Printing Application (DPA) which "
           "is also summarized in Appendix C of RFC 1759 (Printer MIB)."),
          ModelCorrespondence {"CIM_Printer.PaperTypesAvailable"} ]
      string CurrentPaperType;
         [Description (
           "An array indicating the print languages natively supported."),
          ValueMap {"1", "2", "3", "4", "5", "6", "7", "8", "9", "10",
                    "11", "12", "13", "14", "15", "16", "17", "18", "19",
                    "20", "21", "22", "23", "24", "25", "26", "27", "28",
                    "29", "30", "31", "32", "33", "34", "35", "36", "37",
                    "38", "39", "40", "41", "42", "43", "44", "45", "46", "47"},
          Values {"Other", "Unknown", "PCL", "HPGL", "PJL", "PS",
                  "PSPrinter", "IPDS", "PPDS", "EscapeP", "Epson", "DDIF",
                  "Interpress", "ISO6429", "Line Data", "MODCA", "REGIS",
                  "SCS", "SPDL", "TEK4014", "PDS", "IGP", "CodeV", "DSCDSE",
                  "WPS", "LN03", "CCITT", "QUIC", "CPAP", "DecPPL",
                  "Simple Text", "NPAP", "DOC", "imPress", "Pinwriter",
                  "NPDL", "NEC201PL", "Automatic", "Pages", "LIPS", "TIFF",
                  "Diagnostic", "CaPSL", "EXCL", "LCDS", "XES", "MIME"},
          MappingStrings {"MIB.IETF|Printer-MIB.prtInterpreterLangFamily"},
          ModelCorrespondence {"CIM_Printer.MimeTypesSupported",
           "CIM_PrintJob.Language",
           "CIM_PrintService.LanguagesSupported"} ]
      uint16 LanguagesSupported[];
         [Description (
           "An array of free-form strings providing more detailed "
           "explanations of any mime types that are supported by "
           "the Printer. If data is provided for this property, then "
           "the value 47, \"Mime\", should be included in the Languages"
           "Supported property."),
          ModelCorrespondence {"CIM_Printer.LanguagesSupported",
           "CIM_PrintJob.MimeTypes",
           "CIM_PrintService.MimeTypesSupported"} ]
      string MimeTypesSupported[];
         [Description (
           "Indicates the current printer language being used. A "
           "language that is being used by the Printer should also be "
           "listed in LanguagesSupported."),
          ValueMap {"1", "2", "3", "4", "5", "6", "7", "8", "9", "10",
                    "11", "12", "13", "14", "15", "16", "17", "18", "19",
                    "20", "21", "22", "23", "24", "25", "26", "27", "28",
                    "29", "30", "31", "32", "33", "34", "35", "36", "37",
                    "38", "39", "40", "41", "42", "43", "44", "45", "46",
                    "47"},
          Values {"Other", "Unknown", "PCL", "HPGL", "PJL", "PS",
                  "PSPrinter", "IPDS", "PPDS", "EscapeP", "Epson", "DDIF",
                  "Interpress", "ISO6429", "Line Data", "MODCA", "REGIS",
                  "SCS", "SPDL", "TEK4014", "PDS", "IGP", "CodeV", "DSCDSE",
                  "WPS", "LN03", "CCITT", "QUIC", "CPAP", "DecPPL",
                  "Simple Text", "NPAP", "DOC", "imPress", "Pinwriter",
                  "NPDL", "NEC201PL", "Automatic", "Pages", "LIPS", "TIFF",
                  "Diagnostic", "CaPSL", "EXCL", "LCDS", "XES", "MIME"},
          ModelCorrespondence {"CIM_Printer.LanguagesSupported",
           "CIM_Printer.CurrentMimeType"} ]
      uint16 CurrentLanguage;
         [Description (
           "Specifies the mime type currently being used by the "
           "Printer if the CurrentLanguage is set to indicate a "
           "mime type is in use (value = 47)."),
          ModelCorrespondence {"CIM_Printer.CurrentLanguage"} ]
      string CurrentMimeType;
         [Description (
           "Indicates the default printer language. A language that "
           "is used as a default by the Printer should also be listed "
           "in LanguagesSupported."),
          ValueMap {"1", "2", "3", "4", "5", "6", "7", "8", "9", "10",
                    "11", "12", "13", "14", "15", "16", "17", "18", "19",
                    "20", "21", "22", "23", "24", "25", "26", "27", "28",
                    "29", "30", "31", "32", "33", "34", "35", "36", "37",
                    "38", "39", "40", "41", "42", "43", "44", "45", "46",
                    "47"},
          Values {"Other", "Unknown", "PCL", "HPGL", "PJL", "PS",
                  "PSPrinter", "IPDS", "PPDS", "EscapeP", "Epson", "DDIF",
                  "Interpress", "ISO6429", "Line Data", "MODCA", "REGIS",
                  "SCS", "SPDL", "TEK4014", "PDS", "IGP", "CodeV", "DSCDSE",
                  "WPS", "LN03", "CCITT", "QUIC", "CPAP", "DecPPL",
                  "Simple Text", "NPAP", "DOC", "imPress", "Pinwriter",
                  "NPDL", "NEC201PL", "Automatic", "Pages", "LIPS", "TIFF",
                  "Diagnostic", "CaPSL", "EXCL", "LCDS", "XES", "MIME"},
          ModelCorrespondence {"CIM_Printer.LanguagesSupported",
           "CIM_Printer.DefaultMimeType"} ]
      uint16 DefaultLanguage;
         [Description (
           "Specifies the default mime type used by the Printer if the "
           "DefaultLanguage is set to indicate a mime type is in use "
           "(value=47)."),
          ModelCorrespondence {"CIM_Printer.DefaultLanguage"} ]
      string DefaultMimeType;
         [Description (
           "Printer jobs processed since last reset.  These jobs may be "
           "processed from one or more PrintQueues."),
          Counter ]
      uint32 JobCountSinceLastReset;
         [Description ("Time of last reset of the Printer Device.") ]
      datetime TimeOfLastReset;
         [Description (
           "An array of integers indicating Printer capabilities. "
           "Information such as \"Duplex Printing\" (value=3) or "
           "\"Transparency Printing\" (7) is specified in this "
           "property."),
        ArrayType ("Indexed"),
          Values {"Unknown", "Other", "Color Printing",
                  "Duplex Printing", "Copies", "Collation", "Stapling",
                  "Transparency Printing", "Punch", "Cover", "Bind",
                  "Black and White Printing", "One Sided",
                  "Two Sided Long Edge", "Two Sided Short Edge",
                  "Portrait", "Landscape", "Reverse Portrait",
                  "Reverse Landscape", "Quality High", "Quality Normal",
                  "Quality Low"},
          ModelCorrespondence {"CIM_Printer.CapabilityDescriptions",
           "CIM_PrintJob.Finishing",
           "CIM_PrintService.Capabilities"} ]
      uint16 Capabilities[];
         [Description (
           "An array of free-form strings providing more detailed "
           "explanations for any of the Printer features indicated in "
           "the Capabilities array. Note, each entry of this array "
           "is related to the entry in the Capabilities array that "
           "is located at the same index."),
          ArrayType ("Indexed"),
        ModelCorrespondence {"CIM_Printer.Capabilities"} ]
      string CapabilityDescriptions[];
       [Description (       [Description (
           "ErrorMethodology is a free-form string describing "          "Specifies which finishings and other capabilities of "
           "the type of error detection and correction supported "          "the Printer will be used by default. An entry in Default"
           "by this StorageExtent.")          "Capabilities should also be listed in the Capabilities "
       ]          "array."),
    string ErrorMethodology;         Values {"Unknown", "Other", "Color Printing",
                  "Duplex Printing", "Copies", "Collation", "Stapling",
                  "Transparency Printing", "Punch", "Cover", "Bind",
                  "Black and White Printing", "One Sided",
                  "Two Sided Long Edge", "Two Sided Short Edge",
                  "Portrait", "Landscape", "Reverse Portrait",
                  "Reverse Landscape", "Quality High", "Quality Normal",
                  "Quality Low"},
          ModelCorrespondence {"CIM_Printer.Capabilities"} ]
      uint16 DefaultCapabilities[];
       [Description (       [Description (
         "Size in bytes of the blocks which form this StorageExtent. "          "Specifies which finishings and other capabilities of "
         "If variable block size, then the maximum block size in bytes "          "the Printer are currently being used. An entry in this "
         "should be specified. If the block size is unknown or if a "          "property should also be listed in the Capabilities array."),
         "block concept is not valid (for example, for Aggregate Extents, "         Values {"Unknown", "Other", "Color Printing",
         "Memory or LogicalDisks), enter a 1."),                 "Duplex Printing", "Copies", "Collation", "Stapling",
        Units ("Bytes"),                 "Transparency Printing", "Punch", "Cover", "Bind",
          MappingStrings {"MIF.DMTF|Host Storage|001.4",                 "Black and White Printing", "One Sided",
                "MIB.IETF|HOST-RESOURCES-MIB.hrStorageAllocationUnits,"                 "Two Sided Long Edge", "Two Sided Short Edge",
                    "MIF.DMTF|Storage Devices|001.5"}                 "Portrait", "Landscape", "Reverse Portrait",
       ]                 "Reverse Landscape", "Quality High", "Quality Normal",
    uint64 BlockSize;                 "Quality Low"},
          ModelCorrespondence {"CIM_Printer.Capabilities"} ]
      uint16 CurrentCapabilities[];
       [Description (       [Description (
           "Total number of logically contiguous blocks, of size Block"          "The maximum number of copies that can be produced by "
         "Size, which form this Extent. The total size of the Extent "          "the Printer from a single Job."),
         "can be calculated by multiplying BlockSize by NumberOfBlocks. "         ModelCorrespondence {"CIM_PrintJob.Copies"} ]
         "If the BlockSize is 1, this property is the total size of the "     uint32 MaxCopies;
         "Extent."),  
          MappingStrings {"MIF.DMTF|Host Storage|001.5",  
                "MIB.IETF|HOST-RESOURCES-MIB.hrStorageSize"}  
       ]  
    uint64 NumberOfBlocks;  
       [Description (       [Description (
         "The maximum number of blocks, of size BlockSize, which are "          "The number of copies that will be produced for a "
         "available for consumption when layering StorageExtents "          "single Job unless otherwise specified.") ]
         "using the BasedOn association. This property only has meaning "     uint32 DefaultCopies;
         "when this StorageExtent is an Antecedent reference in a "  
         "BasedOn relationship. For example, a StorageExtent could be "  
         "composed of 120 blocks. However, the Extent itself may use 20 "  
         "blocks for redundancy data. If another StorageExtent is BasedOn "  
         "this Extent, only 100 blocks would be available to it. This "  
         "information ('100 blocks is available for consumption') is "  
         "indicated in the ConsumableBlocks property.")  
       ]  
    uint64 ConsumableBlocks;  
       [Description (       [Description (
         "True indicates that the underlying StorageExtent(s) "          "The maximum number of print-stream pages that the "
         "participate in a StorageRedundancyGroup.")          "Printer can render onto a single media sheet."),
       ]         ModelCorrespondence {"CIM_PrintJob.NumberUp"} ]
    boolean IsBasedOnUnderlyingRedundancy;     uint32 MaxNumberUp;
       [Description (       [Description (
         "Boolean set to TRUE if the Storage is sequentially accessed "          "The number of print-stream pages that the Printer will "
         "by a MediaAccessDevice. A TapePartition is an example of a "          "render onto a single media sheet unless a Job specifies "
         "sequentially accessed StorageExtent. StorageVolumes, Disk"          "otherwise.") ]
         "Partitions and LogicalDisks represent randomly accessed "     uint32 DefaultNumberUp;
         "Extents.")  
       ]  
    boolean SequentialAccess;  
 };  
   
 // ===================================================================  
 // ResidesOnExtent  
 // ===================================================================  
    [Association,  
     Description (  
        "An association between a FileSystem and the StorageExtent "  
        "where it is located. Typically, a FileSystem ResidesOn "  
        "a LogicalDisk.")  
    ]  
 class CIM_ResidesOnExtent : CIM_Dependency  
 {  
       [Override ("Antecedent"),  
        Description ("The StorageExtent.")  
       ]  
    CIM_StorageExtent REF Antecedent;  
       [Override ("Dependent"),  
        Description (  
           "The FileSystem that is located on the StorageExtent.")  
       ]  
    CIM_FileSystem REF Dependent;  
 };  
   
 // ===================================================================  
 // ExtentRedundancyComponent  
 // ===================================================================  
    [Association,  
     Aggregation,  
     Description (  
        "Describes the StorageExtents participating in a Storage"  
        "RedundancyGroup.")  
    ]  
 class CIM_ExtentRedundancyComponent : CIM_RedundancyComponent  
 {  
       [Override ("GroupComponent"), Aggregate,  
        Description ("The StorageRedundancyGroup.")  
       ]  
    CIM_StorageRedundancyGroup REF GroupComponent;  
       [Override ("PartComponent"),  
        Description (  
         "The StorageExtent participating in the RedundancyGroup.")  
       ]  
    CIM_StorageExtent REF PartComponent;  
 };  
   
 // ===================================================================  
 // BasedOn  
 // ===================================================================  
    [Association,  
     Description (  
        "BasedOn is an association describing how StorageExtents can "  
        "be assembled from lower level Extents. For example, "  
        "ProtectedSpaceExtents are parts of PhysicalExtents, while "  
        "VolumeSets are assembled from one or more Physical or "  
        "ProtectedSpaceExtents. As another example, CacheMemory "  
        "can be defined independently and realized in a PhysicalElement "  
        "or can be 'based on' Volatile or NonVolatileStorageExtents.")  
    ]  
 class CIM_BasedOn : CIM_Dependency  
 {  
       [Override ("Antecedent"),  
        Description ("The lower level StorageExtent.")  
       ]  
    CIM_StorageExtent REF Antecedent;  
       [Override ("Dependent"),  
        Description ("The higher level StorageExtent.")  
       ]  
    CIM_StorageExtent REF Dependent;  
       [Description (       [Description (
           "StartingAddress indicates where in lower level storage, "          "Printer's horizontal resolution in Pixels per Inch."),
           "the higher level Extent begins.")         Units ("Pixels per Inch"),
       ]         ModelCorrespondence {"CIM_PrintJob.HorizontalResolution"} ]
    uint64 StartingAddress;     uint32 HorizontalResolution;
       [Description (       [Description (
           "EndingAddress indicates where in lower level storage, "          "Printer's vertical resolution in Pixels per Inch."),
           "the higher level Extent ends. This property is useful when "         Units ("Pixels per Inch"),
           "mapping non-contiguous Extents into a higher level grouping.")         ModelCorrespondence {"CIM_PrintJob.HorizontalResolution"} ]
       ]     uint32 VerticalResolution;
    uint64 EndingAddress;  
       [Description (       [Description (
         "If there is an order to the BasedOn associations that "          "Identifies the available character sets for the output "
         "describe how a higher level StorageExtent is assembled, the "          "of text related to managing the Printer. Strings "
         "OrderIndex property indicates this. When an order exists, "          "provided in this property should conform to the "
         "the instances of BasedOn with the same Dependent value "          "semantics and syntax specified by section 4.1.2 "
         "(i.e., the same higher level Extent) should place unique "          "(\"Charset parameter\") in RFC 2046 (MIME Part 2) and "
         "values in the OrderIndex property. The lowest value implies "          "contained in the IANA character-set registry. Examples "
         "the first member of the collection of lower level Extents, "          "include \"utf-8\", \"us-ascii\" and \"iso-8859-1\"."),
         "and increasing values imply successive members of the "         ArrayType ("Indexed"),
         "collection. If there is no ordered relationship, a value "         ModelCorrespondence {"CIM_PrintJob.CharSet"},
         "of zero should be specified. An example of the use of this "         MappingStrings {
         "property is to define a RAID-0 striped array of 3 disks. "          "MIB.IETF|Printer-MIB.prtLocalizationCharacterSet"} ]
         "The resultant RAID array is a StorageExtent that is "     string CharSetsSupported[];
         "dependent on (BasedOn) the StorageExtents that describe "  
         "each of the 3 disks. The OrderIndex of each BasedOn "  
         "association from the disk Extents to the RAID array could "  
         "be specified as 1, 2 and 3 to indicate the order in which "  
         "the disk Extents are used to access the RAID data.")  
       ]  
    uint16 OrderIndex;  
 };  
   
 // ===================================================================  
 // MediaPresent  
 // ===================================================================  
    [Association,  
     Description (  
        "Where a StorageExtent must be accessed through a MediaAccess"  
        "Device, this relationship is described by the MediaPresent "  
        "association."),  
            MappingStrings {"MIF.DMTF|Storage Devices|001.8"}  
    ]  
 class CIM_MediaPresent : CIM_Dependency  
 {  
       [Override ("Antecedent"),  
        Description ("The MediaAccessDevice.")  
       ]  
    CIM_MediaAccessDevice REF Antecedent;  
       [Override ("Dependent"),  
        Description (  
          "The StorageExtent accessed using the MediaAccessDevice.")  
       ]  
    CIM_StorageExtent REF Dependent;  
       [Description (       [Description (
         "Boolean indicating that the accessed StorageExtent is "          "Specifies the current character set being used for "
         "fixed in the MediaAccessDevice and can not be ejected.")          "the output of text relating to management of the "
       ]          "Printer. The character set described by this property "
    boolean FixedMedia;          "should also be listed in CharsetsSupported. The string "
 };          "specified by this property should conform to the "
           "semantics and syntax specified by section 4.1.2 "
 // ===================================================================          "(\"Charset parameter\") in RFC 2046 (MIME Part 2) and "
 // StorageError          "contained in the IANA character-set registry. Examples "
 // ===================================================================          "include \"utf-8\", \"us-ascii\" and \"iso-8859-1\"."),
          ModelCorrespondence {"CIM_Printer.CharSetsSupported"} ]
      string CurrentCharSet;
    [Description (    [Description (
        "StorageError defines blocks of media or memory space that are "          "Identifies the available languages for strings used by "
        "mapped 'out of use' due to errors. The Key of the class is "          "the Printer for the output of management information. "
        "the StartingAddress of the bytes in error.")          "The strings should conform to RFC 1766, for example "
    ]          "\"en\" is used for English."),
 class CIM_StorageError : CIM_ManagedElement         ArrayType ("Indexed"),
 {         MappingStrings {
       [Propagated("CIM_StorageExtent.SystemCreationClassName"),             "MIB.IETF|Printer-MIB.prtLocalizationLanguage"},
        Key, MaxLen (256),         ModelCorrespondence {"CIM_PrintJob.NaturalLanguage"} ]
        Description ("The scoping System's CreationClassName.")     string NaturalLanguagesSupported[];
       ]  
    string SystemCreationClassName;  
       [Propagated("CIM_StorageExtent.SystemName"),  
        Key, MaxLen (256),  
          Description ("The scoping System's Name.")  
       ]  
    string SystemName;  
       [Propagated("CIM_StorageExtent.CreationClassName"),  
        Key, MaxLen (256),  
        Description ("The scoping StorageExtent's CreationClassName.")  
       ]  
    string DeviceCreationClassName;  
       [Propagated("CIM_StorageExtent.DeviceID"),  
        Key, MaxLen (64),  
          Description ("The scoping StorageExtent's DeviceID.")  
       ]  
    string DeviceID;  
       [Key,  
        Description ("The starting address of the bytes in error.")  
       ]  
    uint64 StartingAddress;  
       [Description ("The ending address of the bytes in error.")]  
    uint64 EndingAddress;  
 };  
   
 // ===================================================================  
 // StorageDefect  
 // ===================================================================  
    [Association,  
     Aggregation,  
     Description (  
        "The StorageDefect aggregation collects the StorageErrors for "  
        "a StorageExtent.")  
    ]  
 class CIM_StorageDefect  
 {  
       [Key, Aggregate,  
        Description (  
          "The Extent reference defines the StorageExtent on which the "  
          "errors occurred."),  
        Min (1), Max (1)  
       ]  
    CIM_StorageExtent REF Extent;  
       [Key, Description (  
          "Error references the Error object, defining the starting "  
          "and ending addresses that are 'mapped out' of the Storage"  
          "Extent."),  
        Weak  
       ]  
    CIM_StorageError REF Error;  
 };  
   
 // ===================================================================  
 // PhysicalExtent  
 // ===================================================================  
    [Description (    [Description (
      "A PhysicalExtent is used to model an SCC RAID "          "Identifies the current language being used by the "
      "implementation. It defines the consecutive addressable "          "Printer for management. The language listed in the "
      "block addresses on a single storage device, that are "          "CurrentNaturalLanguage property should also be listed "
      "treated as a single StorageExtent and that are in the "          "in NaturalLanguagesSupported."),
      "same StorageRedundancyGroup. An alternate possibility, "         ModelCorrespondence {"CIM_Printer.NaturalLanguagesSupported"} ]
      "if automatic configuration is used, is to instantiate or "     string CurrentNaturalLanguage;
      "extend the AggregatePExtent class.")  
    ]  
 class CIM_PhysicalExtent : CIM_StorageExtent  
 {  
       [Override ("BlockSize"),  
 // Override is used to define the MappingString qualifier  
        MappingStrings {"MIF.DMTF|Physical Extent|001.4"}  
       ]  
    uint64 BlockSize;  
       [Override ("NumberOfBlocks"),  
 // Override is used to define the MappingString qualifier  
        MappingStrings {"MIF.DMTF|Physical Extent|001.3"}  
       ]  
    uint64 NumberOfBlocks;  
       [Description (       [Description (
           "Number of bytes of user data to skip before "          "Specifies the largest Job (as a byte stream) that the "
           "starting the check data interleave."),          "Printer will accept in units of Kbytes. A value of zero "
          Units ("Bytes"),          "indicates that no limit has been set."),
        MappingStrings {"MIF.DMTF|Physical Extent|001.6"}         Units ("KiloBytes"),
       ]         ModelCorrespondence {"CIM_PrintJob.JobSize"} ]
    uint64 UnitsBeforeCheckDataInterleave;     uint32 MaxSizeSupported;
       [Description (       [Description (
           "Number of bytes to be reserved for check data."),          "Describes all of the job sheets that are available on "
          Units ("Bytes"),          "the Printer. This can also be used to describe the banner "
        MappingStrings {"MIF.DMTF|Physical Extent|001.7"}          "that a Printer might provide at the beginning of each Job, "
       ]          "or can describe other user specified options."),
    uint64 UnitsOfCheckData;         ModelCorrespondence {"CIM_PrintJob.RequiredJobSheets"} ]
      string AvailableJobSheets[];
       [Description (       [Description (
           "Number of bytes to be reserved for user data."),          "Specifies the marking technology used by the Printer."),
          Units ("Bytes"),         ValueMap {"1", "2", "3", "4", "5", "6", "7", "8", "9",
        MappingStrings {"MIF.DMTF|Physical Extent|001.8"}                   "10", "11", "12", "13", "14", "15", "16", "17",
       ]                   "18", "19", "20", "21", "22", "23", "24", "25",
    uint64 UnitsOfUserData;                   "26", "27"},
          Values {"Other", "Unknown", "Electrophotographic LED",
                  "Electrophotographic Laser",
                  "Electrophotographic Other",
                  "Impact Moving Head Dot Matrix 9pin",
                  "Impact Moving Head Dot Matrix 24pin",
                  "Impact Moving Head Dot Matrix Other",
                  "Impact Moving Head Fully Formed",
                  "Impact Band", "Impact Other", "Inkjet Aqueous",
                  "Inkjet Solid", "Inkjet Other", "Pen",
                  "Thermal Transfer", "Thermal Sensitive",
                  "Thermal Diffusion", "Thermal Other",
                  "Electroerosion", "Electrostatic",
                  "Photographic Microfiche",
                  "Photographic Imagesetter", "Photographic Other",
                  "Ion Deposition", "eBeam", "Typesetter"},
          MappingStrings {"MIB.IETF|Printer-MIB.prtMarkerMarkTech"} ]
      uint16 MarkingTechnology;
 }; };
  
 // ===================================================================  
 // PExtentRedundancyComponent  
 // ===================================================================  
    [Association,  
     Aggregation,  
     Description (  
        "Describes the PhysicalExtents participating in a Storage"  
        "RedundancyGroup.")  
    ]  
 class CIM_PExtentRedundancyComponent : CIM_ExtentRedundancyComponent  
 {  
       [Override ("GroupComponent"),  
        Aggregate,  
        Description ("The StorageRedundancyGroup.")  
       ]  
    CIM_StorageRedundancyGroup REF GroupComponent;  
       [Override ("PartComponent"),  
        Description (  
           "The PhysicalExtent participating in the RedundancyGroup.")  
       ]  
    CIM_PhysicalExtent REF PartComponent;  
 };  
  
 // =================================================================== // ===================================================================
 // ProtectedSpaceExtent  // PrintQueue
 // =================================================================== // ===================================================================
    [Description (    [Description (
      "A ProtectedSpaceExtent is used to model an SCC RAID "       "Capabilities and management of a Printer Queue. A PrintQueue "
      "implementation. ProtectedSpaceExtent defines addressable logical "       "holds PrintJobs - which are placed on the Queue by a Print"
      "block addresses, treated as a single Extent, located on one or "       "Service. Jobs can move from Queue to Queue.") ]
      "more PhysicalExtents. ProtectedSpaceExtents exclude any logical "  class CIM_PrintQueue : CIM_JobDestination {
      "blocks mapped as check data and contain user data stripe depth "  
      "mapping information. An alternate possibility, if automatic "  
      "configuration is used, is to instantiate or extend the Aggregate"  
      "PSExtent class.")  
    ]  
 class CIM_ProtectedSpaceExtent : CIM_StorageExtent  
 {  
       [Override ("BlockSize"),  
 // Override is used to define the MappingString qualifier  
        MappingStrings {"MIF.DMTF|Protected Space Extent|001.4"}  
       ]  
    uint64 BlockSize;  
       [Override ("NumberOfBlocks"),  
        Description (  
         "The number of user data blocks contained in this Extent."),  
        MappingStrings {"MIF.DMTF|Protected Space Extent|001.3"}  
       ]  
    uint64 NumberOfBlocks;  
                 [Description (                 [Description (
         "For a ProtectedSpaceExtent that is allocated to a VolumeSet, "          "Indicates that Jobs on the Queue will be passed to a "
         "(i.e. is named in a CIM_VolumeSetBasedOnPSExtent "          "Printer. When FALSE, a Job will remain on the Queue and "
         "association), this property is the number of user data bytes "          "will not be passed to a Printer for output.") ]
                 "placed on this ProtectedSpaceExtent before moving on to the "     boolean QueueEnabled;
                 "next ProtectedSpaceExtent in the VolumeSet.  Otherwise, this "  
                 "ProtectedSpaceExtent is considered to be unallocated and "  
                 "this property shall be set to zero (0h.)"),  
                 Units ("Bytes"),  
                 MappingStrings {"MIF.DMTF|Protected Space Extent|001.6"}  
                 ]  
         uint64 UserDataStripeDepth;  
 };  
   
 // ===================================================================  
 // PSExtentBasedOnPExtent  
 // ===================================================================  
    [Association,  
     Description (  
        "ProtectedSpaceExtents are BasedOn a PhysicalExtent. This "  
        "relationship is made explicit in this association.")  
    ]  
 class CIM_PSExtentBasedOnPExtent : CIM_BasedOn  
 {  
       [Override ("Antecedent"),  
        Description ("The PhysicalExtent.")  
       ]  
    CIM_PhysicalExtent REF Antecedent;  
       [Override ("Dependent"),  
        Description (  
           "The ProtectedSpaceExtent which is built on the Physical"  
           "Extent.")  
       ]  
    CIM_ProtectedSpaceExtent REF Dependent;  
       [Override ("StartingAddress"),  
        Description (  
         "The starting logical block address of the PhysicalExtent "  
         "from which this ProtectedSpaceExtent is derived."),  
        MappingStrings {"MIF.DMTF|Protected Space Extent|001.2"}  
       ]  
    uint64 StartingAddress;  
 };  
   
 // ===================================================================  
 // StorageVolume  
 // ===================================================================  
    [Description (    [Description (
      "A StorageVolume is an Extent that is presented to the Operating"          "When FALSE, no PrintService can place PrintJobs on the "
      "System (for example, by a hardware RAID cabinet), to a File"          "PrintQueue. The ability of an individual PrintService "
      "System (for example, by a software volume manager) or to another "          "to place a Job on the Queue can be specified using the "
      "entity. StorageVolumes do NOT participate in StorageRedundancy"          "QueueAcceptingFromService property in the QueueForPrint"
      "Groups. They are directly Realized in hardware or are the end "          "Service association.") ]
      "result of assembling lower level Extents.")     boolean QueueAccepting;
    ]        [Description ("The current number of Jobs on the Queue."),
 class CIM_StorageVolume : CIM_StorageExtent         Gauge ]
 {     uint32 NumberOnQueue;
 };  
   
 // ===================================================================  
 // VolumeSet  
 // ===================================================================  
    [Description (    [Description (
        "A VolumeSet is used to model an SCC RAID implementation. "          "Gives Queue-specific status information, beyond the "
        "VolumeSets represent a contiguous range of logical blocks "          "ManagedSystemElement.Status property. This may be used to "
        "presented to the operating environment. VolumeSets may overlap. "          "provide further qualification as to the status of the "
        "However, the underlying PhysicalExtents within the overlap "          "Queue or to indicate a secondary condition (e.g. spool "
        "shall not contain any check data. They are BasedOn one or more "          "area is full)."),
        "ProtectedSpaceExtents. These BasedOn associations should be "         Values {"Other", "Unknown", "No Additional Status",
        "instantiated or subclassed as needed.")                 "QueueSpoolAreaFull"} ]
    ]     uint16 QueueStatus;
 class CIM_VolumeSet : CIM_StorageVolume  
 {  
       [Override ("NumberOfBlocks"),  
 // Override is used to define the MappingString qualifier  
        MappingStrings {"MIF.DMTF|Volume Set|001.3"}  
       ]  
    uint64 NumberOfBlocks;  
       [Description (       [Description (
         "Number of contiguous ProtectedSpaceExtents counted "          "Provides a textual explanation for the status of the Queue. "
         "before looping back to the first ProtectedSpaceExtent "          "The settings of both QueueStatus and the Status property "
         "of the current stripe. It is the number of Extents forming "          "inherited from ManagedSystemElement may be described by "
         "the user data stripe."),          "QueueStatusInfo. For example, if \"Stopping\" is the value "
        MappingStrings {"MIF.DMTF|Volume Set|001.4"}          "assigned to Status, then this property may contain an "
       ]          "explanation as to why the Queue is being stopped.") ]
    uint64 PSExtentStripeLength;     string QueueStatusInfo;
       [Description (       [Description (
         "Number of ProtectedSpaceExtents to stripe as a collective "          "Specifies the largest possible Job (in terms of a single "
         "set. In SCC, this value is defined as the number of stripes "          "byte stream) that may be submitted to this Queue. A value "
         "to count before continuing to map into the next contiguous "          "of zero indicates that no limit has been set. Units "
         "set of Extents, beyond the current stripe."),          "are Kbytes."),
        MappingStrings {"MIF.DMTF|Volume Set|001.5"}         Units ("KiloBytes"),
       ]         ModelCorrespondence {"CIM_PrintJob.JobSize"} ]
    uint64 PSExtentInterleaveDepth;     uint32 MaxJobSize;
       [Description (       [Description (
         "VolumeSets in SCC have additional status information "          "Specifies the priority that will be assigned to a new Job "
         "beyond that captured in the Availability and StatusInfo "          "being submitted to this Queue, if the Job does not "
         "properties, inherited from ManagedSystemElement. This "          "explicitly specify a priority. The range of valid priorities "
         "additional information (for example, \"Protection Disabled\", "          "and the interpretation of priorities may be determined from "
         "value=9) is captured in the VolumeStatus property."),          "the JobPriorityHigh and JobPriorityLow properties."),
        Values {"Other", "Unknown", "None/Not Applicable", "Broken",         ModelCorrespondence {"CIM_PrintQueue.JobPriorityHigh",
              "Data Lost", "Dynamic Reconfig", "Exposed",          "CIM_PrintQueue.JobPriorityLow"} ]
              "Fractionally Exposed", "Partially Exposed",     uint32 DefaultJobPriority;
              "Protection Disabled", "Readying", "Rebuild",        [Description (
              "Recalculate", "Spare in Use", "Verify In Progress"}          "Specifies the numeric value that is used to represent the "
       ]          "highest priority Jobs that are submitted to this Queue. The "
    uint16 VolumeStatus;          "range of numeric values for priority may be inversed, e.g. "
           "a high priority job is represented by a low integer value. "
           "This is indicated by JobPriorityLow being greater than "
           "JobPriorityHigh. If both values (PriorityLow and Priority"
           "High) are assigned to zero, then the Queue does not support "
           "Job priorities."),
          ModelCorrespondence {"CIM_PrintQueue.JobPriorityLow",
           "CIM_Job.Priority"} ]
      uint32 JobPriorityHigh;
         [Description (
           "Specifies the numeric value that is used to represent the "
           "lowest priority Jobs that are submitted to this Queue. The "
           "range of numeric values for priority may be inversed, e.g. "
           "a low priority job is represented by a high integer value. "
           "This is indicated by JobPriorityLow being greater than "
           "JobPriorityHigh. If both values (PriorityLow and PriorityHigh) "
           "are assigned to zero, then the Queue does not support "
           "Job priorities."),
          ModelCorrespondence {"CIM_PrintQueue.JobPriorityHigh",
           "CIM_Job.Priority"} ]
      uint32 JobPriorityLow;
         [Description (
           "Specifies the job sheets that are supported by this Queue. "
           "Typically the job sheets provided by a Queue will be the "
           "union or aggregation of those provided by all the Printers "
           "that it supports. However, a system administrator may choose "
           "to restrict access to some job sheets on a particular Queue. "
           "A Queue might also support additional job sheets through the "
           "use of a filter that adds a banner or some other page when a "
           "Job is taken from the Queue."),
          ModelCorrespondence {"CIM_PrintJob.RequiredJobSheets"} ]
      string AvailableJobSheets[];
 }; };
  
   
 // =================================================================== // ===================================================================
 // VolumeSetBasedOnPSExtent  // PrintJob
 // =================================================================== // ===================================================================
    [Association,     [Description (
     Description (       "Description of a print request that is either waiting on a "
        "VolumeSets are BasedOn on one or more ProtectedSpaceExtents. "       "Queue for a Printer to become available, in the process of "
        "This relationship is made explicit in this association.")       "being output on a Printer, or that has previously been "
    ]       "printed on a Printer. PrintJobs are weak to their current "
 class CIM_VolumeSetBasedOnPSExtent : CIM_BasedOn       "Queue, or to the last Queue that held them.") ]
 {  class CIM_PrintJob : CIM_Job {
       [Override ("Antecedent"),        [Propagated ("CIM_PrintQueue.SystemCreationClassName"),
        Description ("The ProtectedSpaceExtent."),         Key, MaxLen (256),
        Min (1)         Description ("The scoping System's CreationClassName.") ]
       ]     string SystemCreationClassName;
    CIM_ProtectedSpaceExtent REF Antecedent;        [Propagated ("CIM_PrintQueue.SystemName"),
       [Override ("Dependent"),         Key, MaxLen (256),
          Description ("The scoping System's Name.") ]
      string SystemName;
         [Propagated ("CIM_PrintQueue.CreationClassName"),
          Key, MaxLen (256),
          Description ("The scoping Queue's CreationClassName.") ]
      string QueueCreationClassName;
         [Propagated ("CIM_PrintQueue.Name"),
          Key, MaxLen (256),
          Description ("The scoping Queue's Name.") ]
      string QueueName;
         [Override("JobStatus"),
        Description (        Description (
         "The VolumeSet which is built on the ProtectedSpaceExtent.")          "The inherited JobStatus is used to provide additional "
       ]          "information about the status of a PrintJob beyond that "
    CIM_VolumeSet REF Dependent;          "enumerated by PrintJobStatus."),
          ModelCorrespondence {"CIM_PrintJob.PrintJobStatus"} ]
      string JobStatus;
         [Key, Description (
           "Uniquely identifies this Job within its scoping Queue.")]
      string JobID;
       [Description (       [Description (
         "True if logical blocks in the ProtectedSpaceExtent are mapped "          "Provides additional textual descriptions of how this "
         "in decrementing order. This property corresponds to the INCDEC "          "Job should be scheduled.") ]
         "value in the SCC-2 Volume Set PS_Extent Descriptor.")     string SchedulingInformation;
       ]        [Description (
    boolean LBAsMappedByDecrementing;          "Specifies the size of the PrintJob (as a byte stream) in "
           "units of Kbytes."),
          Units ("KiloBytes"),
          ModelCorrespondence {"CIM_Printer.MaxSizeSupported",
           "CIM_PrintQueue.MaxJobSize"} ]
      uint32 JobSize;
         [Description (
           "Specifies the print language used by this Job."),
          ValueMap {"1", "2", "3", "4", "5", "6", "7", "8", "9", "10",
                    "11", "12", "13", "14", "15", "16", "17", "18", "19",
                    "20", "21", "22", "23", "24", "25", "26", "27", "28",
                    "29", "30", "31", "32", "33", "34", "35", "36", "37",
                    "38", "39", "40", "41", "42", "43", "44", "45", "46",
                    "47"},
          Values {"Other", "Unknown", "PCL", "HPGL", "PJL", "PS",
                  "PSPrinter", "IPDS", "PPDS", "EscapeP", "Epson", "DDIF",
                  "Interpress", "ISO6429", "Line Data", "MODCA", "REGIS",
                  "SCS", "SPDL", "TEK4014", "PDS", "IGP", "CodeV", "DSCDSE",
                  "WPS", "LN03", "CCITT", "QUIC", "CPAP", "DecPPL",
                  "Simple Text", "NPAP", "DOC", "imPress", "Pinwriter",
                  "NPDL", "NEC201PL", "Automatic", "Pages", "LIPS", "TIFF",
                  "Diagnostic", "CaPSL", "EXCL", "LCDS", "XES", "MIME"},
          ArrayType ("Indexed"),
          MappingStrings {"MIB.IETF|Printer-MIB.prtInterpreterLangFamily"},
          ModelCorrespondence {"CIM_Printer.LanguagesSupported",
           "CIM_PrintService.LanguagesSupported",
           "CIM_PrintJob.MimeTypes"} ]
      uint16 Language;
       [Description (       [Description (
         "True if the logical block mapping algorithm includes check data "          "Specifies the mime types used by the PrintJob if "
         "bytes. This property corresponds to the NOCHKSKIP attribute in "          "Language is set to indicate a mime type is in use (value=47)."),
         "the SCC-2 Volume Set PS_Extent Descriptor.")         ModelCorrespondence {"CIM_PrintJob.Language",
       ]          "CIM_Printer.MimeTypesSupported",
    boolean LBAMappingIncludesCheckData;          "CIM_PrintService.MimeTypesSupported"} ]
 };     string MimeTypes[];
   
 // ===================================================================  
 // MediaPartition  
 // ===================================================================  
    [Description (    [Description (
        "A MediaPartition is a presentation of a contiguous range "          "A string specifying the type of paper that is required by "
        "of logical blocks and has identifying data written on/to it. "          "this PrintJob. Each string should be expressed in the form "
        "It may include a signature written by the OS or by "          "specified by ISO/IEC 10175 Document Printing Application (DPA) "
        "an application.  This class is a common superclass for Disk and "          "which is also summarized in Appendix C of RFC 1759 (Printer "
        "TapePartions. Partitions are directly realized by Physical"          "MIB). Examples of valid strings are \"iso-a4-colored\" and "
        "Media (indicated by the RealizesExtent association) or built "          "\"na-10x14-envelope\"."),
        "on StorageVolumes (indicated by the BasedOn association.")         ModelCorrespondence {"CIM_Printer.PaperTypesAvailable",
    ]          "CIM_PrintService.PaperTypesAvailable"} ]
 class CIM_MediaPartition : CIM_StorageExtent     string RequiredPaperType;
 {  
       [Description (       [Description (
         "Boolean indicating that the Partition is labeled as "          "An array of integers indicating the type of finishing "
         "bootable. (Note that this does not mean that an Operating"          "required by this Job. It is equivalent to the Capabilities "
         "System is actually loaded on the Partition.) With the advent "          "property provided by the Printer."),
         "of bootable Tape and other bootable media, this property is "         ArrayType ("Indexed"),
         "included in the higher level MediaPartition class, rather "         Values {"Unknown", "Other", "Color Printing",
         "than in a subclass such as DiskPartition.")                 "Duplex Printing", "Copies", "Collation", "Stapling",
       ]                 "Transparency Printing", "Punch", "Cover", "Bind",
    boolean Bootable;                 "Black and White Printing", "One Sided",
                  "Two Sided Long Edge", "Two Sided Short Edge",
                  "Portrait", "Landscape", "Reverse Portrait",
                  "Reverse Landscape", "Quality High", "Quality Normal",
                  "Quality Low"},
          ModelCorrespondence {"CIM_Printer.Capabilities",
           "CIM_PrintService.Capabilities"} ]
      uint16 Finishing[];
       [Description (       [Description (
         "Boolean indicating that the Partition is available and "          "The number of physical copies of the output that will be "
         "may be allocated for use.")          "produced from this Job."),
       ]         ModelCorrespondence {"CIM_Printer.MaxCopies"} ]
    boolean Allocatable;     uint32 Copies;
       [Description (       [Description (
         "An identifying string written to the Partition. Additional "          "The horizontal resolution in Pixels per Inch for the Job."),
         "information related to this 'Signature' may be found in the "         Units ("Pixels per Inch"),
         "properties, SignatureState and SignatureAlgorithm."),         ModelCorrespondence {"CIM_Printer.HorizontalResolution"} ]
        ModelCorrespondence {"CIM_MediaPartition.SignatureState",     uint32 HorizontalResolution;
            "CIM_MediaPartition.SignatureAlgorithm"}  
       ]  
    string Signature;  
       [Description (       [Description (
         "A free-form string describing the algorithm used to "          "The vertical resolution in Pixels per Inch for the Job."),
         "define the Partition Signature. The value of this property "         Units ("Pixels per Inch"),
         "is dependent on the Signature's State. "),         ModelCorrespondence {"CIM_Printer.VerticalResolution"} ]
        ModelCorrespondence {"CIM_MediaPartition.Signature",     uint32 VerticalResolution;
            "CIM_MediaPartition.SignatureState"}  
       ]  
    string SignatureAlgorithm;  
       [Description (       [Description (
         "An enumeration describing the state of the Partition's "          "Specifies the character set and encoding method that "
         "identifying Signature string. Information such as "          "should be used by the Printer for the management of "
         "\"Uninitialized\" (value=2), or \"Assigned by Owning "          "this Job. The strings should conform to the semantics and "
         "Application\" (value=5) are possible entries. "),          "syntax specified by section 4.1.2 (\"Charset parameter\") "
        Values {"Unknown", "Unimplemented", "Uninitialized",          "in RFC 2046 (MIME Part 2) and contained in the IANA "
            "Calculated by Operating System",          "character-set registry. Examples include \"utf-8\", "
      "Calculated by a Media Manager",          "\"us-ascii\" and \"iso-8859-1\"."),
      "Assigned by Owning Application"},         ModelCorrespondence {"CIM_Printer.CharSetsSupported"} ]
        ModelCorrespondence {"CIM_MediaPartition.Signature",     string CharSet;
            "CIM_MediaPartition.SignatureAlgorithm"}  
       ]  
    string SignatureState;  
                 [Description (                 [Description (
         "Boolean indicating that the Partition can be grown/extended "          "Identifies the language that should be used by the Printer "
         "without reformatting.")          "for the management of this Job. The specified value should "
                 ]          "conform to RFC 1766. For example, \"en\" is used for "
    boolean Extendable;          "English."),
 };         ModelCorrespondence {"CIM_Printer.NaturalLanguagesSupported"} ]
      string NaturalLanguage;
 // ===================================================================  
 // DiskPartition  
 // ===================================================================  
    [Description (    [Description (
        "A DiskPartition is a presentation of a contiguous range "          "The number of print-stream pages that should be rendered "
        "of logical blocks that is identifiable by the Operating"          "onto a single media sheet when the Printer outputs this "
        "System via the Partition's type and subtype fields. Disk"          "PrintJob."),
        "Partitions should be directly realized by PhysicalMedia "         ModelCorrespondence {"CIM_Printer.MaxNumberUp"} ]
        "(indicated by the RealizesDiskPartition association) or built "     uint32 NumberUp;
        "on StorageVolumes (indicated by the PartitionBasedOnVolume "  
        "association.")  
    ]  
 class CIM_DiskPartition : CIM_MediaPartition  
 {  
       [Description (       [Description (
           "Boolean indicating that the DiskPartition is labelled as "          "Describes the current state of this Job with respect "
           "the primary partition for a ComputerSystem.")          "to the PrintQueue and the Printer. Additional information "
       ]          "may be specified in JobStatus."),
    boolean PrimaryPartition;         ValueMap {"1", "2", "3", "4", "5", "6", "7"},
       [Description ("The type of Partition."),         Values {"Other", "Unknown", "Pending", "Blocked",
        Values {"Unknown", "Primary", "Extended", "Logical"}                 "Complete", "Completed With Error", "Printing"},
       ]         ModelCorrespondence {"CIM_PrintJob.TimeCompleted",
    uint16 PartitionType;          "CIM_PrintJob.JobStatus"} ]
      uint16 PrintJobStatus;
       [Description (       [Description (
         "The 'sub' type of a primary, extended, or logical Partition. "          "Time when this Job was completed. This value is only "
         "The list of possible values corresponds to the decimal "          "valid if the PrintJobStatus has been assigned to "
         "representation of the typical values in the Partition record."),          "\"Complete\" (value=5) or \"Completed With Error\" "
        ValueMap {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9",          "(value=6)."),
                "10", "11", "12", "14", "15", "16", "17", "18",         ModelCorrespondence {"CIM_PrintJob.PrintJobStatus"} ]
                "20", "22", "23", "27", "28", "33", "35", "36",     datetime TimeCompleted;
                "38", "49", "51", "52", "53", "54", "55", "60",  
                "64", "65", "66", "67", "80", "81", "82", "83",  
                "84", "85", "86", "97", "99", "100", "101", "102",  
                "103", "104", "105", "113", "115", "116", "117",  
                "118", "119", "120", "121", "128", "129", "130",  
                "131", "132", "134", "135", "147", "148", "161",  
                "163", "164", "165", "166", "177", "179", "180",  
                "182", "183", "184", "193", "196", "198", "199",  
                "216", "219", "225", "227", "228", "229", "230",  
                "239", "240", "241", "242", "243", "244", "246",  
                "254", "255", "65535"},  
        Values {"Empty | Microsoft", "DOS 12-bit FAT",  
              "XENIX root", "XENIX usr", "DOS 16-bit FAT",  
              "DOS Extended", "DOS 16-bit FAT (> 32MB)",  
              "OS/2 HPFS | Win NTFS | QNX Ver 2 | Adv UNIX",  
              "AIX Boot | OS /2 | Dell (Array) | Commodore DOS",  
              "AIX Data, Coherent", "OS/2 Boot Manager",  
              "32-bit FAT", "32-bit FAT", "Microsoft 16-bit FAT",  
              "Microsoft DOS Extended", "OPUS | OS/2 2.0",  
              "OS/2 (MOSS) Inactive Type 1",  
              "Compaq Diagnostics Partition | Microsoft",  
              "OS/2 (MOSS) Inactive Type 4",  
              "OS/2 (MOSS) Inactive Type 6",  
              "OS/2 (MOSS) Inactive Type 7",  
              "OS/2 (MOSS) Inactive Type B",  
              "OS/2 (MOSS) Inactive Type C", "Microsoft",  
              "Microsoft", "Microsoft", "Microsoft", "Microsoft",  
              "Microsoft", "Microsoft", "OS/2 Logical Volume Manager",  
              "Microsoft", "OS/2 JFS Log", "PowerQuest",  
              "VENIX 80286 | Series/1 Disk", "Personal RISC Boot",  
              "Veritas", "Veritas", "OnTrack Disk Manager Read Only DOS",  
              "OnTrack Disk Manager Read/Write DOS",  
              "CPM | Microport System V/386 | OnTrack Disk Mgr | Microsoft",  
              "OnTrack Disk Manager", "OnTrack Disk Manager Non-DOS",  
              "Micro House EZ-Drive Non-DOS",  
              "Golden Bow Vfeature | Microsoft",  
              "Storage Dimensions SpeedStor | Microsoft",  
              "UNIX - AT&T System V/386 | SCO UNIX",  
              "Novell NetWare | Speedstore", "Novell NetWare",  
              "Novell NetWare", "Novell", "Novell", "Novell",  
              "Microsoft", "Microsoft", "Microsoft", "PC/IX IBM",  
              "Microsoft", "QNX POSIX", "QNX POSIX (Secondary)",  
              "QNX POSIX (Secondary)",  
              "Minix (<=1.4a) | Linux | Microsoft",  
              "Minix (>=1.4b) | Microsoft", "Linux Swap | Prime",  
              "Linux Native | Apple", "System Hibernation for APM",  
              "Microsoft", "HPFS FT mirror", "Amoeba | Microsoft",  
              "Amoeba BBT | Microsoft", "Microsoft", "Microsoft",  
              "Microsoft", "BSD/386", "Microsoft", "Microsoft",  
              "Microsoft", "Microsoft", "Microsoft",  
              "BSDI fs | Microsoft", "BSDI Swap | Microsoft",  
              "Microsoft", "Microsoft", "Microsoft",  
              "Syrinx | HPFS FT Disabled Mirror", "CP/M 86",  
              "Digital Research CPM-86 | Concurrent DOS | OUTRIGGER",  
              "SpeedStor 12-bit FAT Extended",  
              "DOS Read-Only | Storage Dimensions",  
              "SpeedStor 16-bit FAT Extended", "Microsoft",  
              "Microsoft", "Intel", "OS/2 Raw Data",  
              "Storage Dimensions", "DOS (Secondary)", "Microsoft",  
              "SpeedStor Large | Storage Dimensions", "Microsoft",  
              "Lan Step | SpeedStor | IBM PS/2 IML",  
              "Bad Block Tables", "Unknown"}  
       ]  
    uint16 PartitionSubtype;  
 };  
   
 // ===================================================================  
 // DiskPartitionBasedOnVolume  
 // ===================================================================  
    [Association,  
     Description (  
        "DiskPartitions should be BasedOn a single StorageVolume (for "  
        "example, exposed by a hardware RAID cabinet), an SCC VolumeSet, "  
        "or realized directly in PhysicalMedia. The first two "  
        "relationships are made explicit in this association. The latter "  
        "is conveyed by the RealizesDiskPartition association.")  
    ]  
 class CIM_DiskPartitionBasedOnVolume : CIM_BasedOn  
 {  
       [Override ("Antecedent"), Max (1),  
        Description ("The StorageVolume.") ]  
    CIM_StorageVolume REF Antecedent;  
       [Override ("Dependent"),  
        Description ("The DiskPartition which is built on the Volume.")  
       ]  
    CIM_DiskPartition REF Dependent;  
 };  
   
 // ===================================================================  
 // TapePartition  
 // ===================================================================  
    [Description (    [Description (
        "Capabilities and management of a TapePartition StorageExtent. "          "Describes the job sheets that should be used when this "
        "Note that if a PhysicalTape is not partitioned, only a "          "Job is output on the Printer."),
        "generic StorageExtent that represents the entire Tape should "         ModelCorrespondence {"CIM_Printer.AvailableJobSheets"} ]
        "be instantiated. TapePartitions may be BasedOn other "     string RequiredJobSheets[];
        "StorageExtents or directly Realized on a PhysicalTape.")        [Description (
    ]          "Provides additional information, beyond Job Owner "
 class CIM_TapePartition : CIM_MediaPartition          "inherited from CIM_Job, to identify the origins of the "
 {          "PrintJob. This property could include information such as "
       [Gauge, Description (          "the System, application or Process that created the Job.") ]
         "Number of blocks that are currently unused/not written on "     string JobOrigination;
         "the Partition. When this number is multiplied by the "  
         "BlockSize, inherited from StorageExtent, the total number "  
         "of bytes available for writing can be computed.")  
       ]  
    uint64 UnusedBlocks;  
   
 };  
   
 // ===================================================================  
 // TapePartitionOnSurface  
 // ===================================================================  
    [Association,  
     Description (  
        "TapePartitionOnSurface represents the ability to have one or "  
        "more TapePartitions on each surface of a PhysicalTape. The "  
        "individual surfaces are represented as instances of "  
        "CIM_StorageExtent.")  
    ]  
 class CIM_TapePartitionOnSurface : CIM_BasedOn  
 {  
       [Override ("Antecedent"),  
        Max (1),  
        Description (  
         "The StorageExtent that represents the Tape's surface.")  
       ]  
    CIM_StorageExtent REF Antecedent;  
       [Override ("Dependent"),  
        Description ("The TapePartition which is built on the Extent.")  
       ]  
    CIM_TapePartition REF Dependent;  
 }; };
  
   
 // =================================================================== // ===================================================================
 // LogicalDisk  // PrintSAP
 // =================================================================== // ===================================================================
      [Description ("The ServiceAccessPoint for a printing Service.") ]
   class CIM_PrintSAP : CIM_ServiceAccessPoint {
    [Description (    [Description (
        "A LogicalDisk is a presentation of a contiguous range of "          "Specifies the print procotols that this AccessPoint uses. "
        "logical blocks that is identifiable by a FileSystem via the "          "Note that each entry of this array is related to the entry in "
        "Disk's DeviceId (key) field. For example in a Windows "          "the PrintProtocolInfo array that is located at the same "
        "environment, the DeviceID field would contain a drive letter. "          "index."),
        "In a Unix environment, it would contain the access path; and in "         ArrayType ("Indexed"),
        "a NetWare environment, DeviceID would contain the volume name. "         Values {"Unknown", "Other", "SMB", "BSD", "SYSV","HPNP", "IPP",
        "LogicalDisks are typically built on a DiskPartition or Storage"                 "Local"},
        "Volume (for example, exposed by a software volume manager) "         ModelCorrespondence {"CIM_PrintSAP.PrintProtocolInfo"} ]
        "using the LogicalDiskBasedOnPartition or LogicalDiskBasedOn"     uint16 PrintProtocol[];
        "Volume associations. However, it can be based on other "        [Description (
        "StorageExtents, like CIM_Memory, in the case of a RAM disk. "          "Provides clarifying or additional information about the "
        "The latter is described using the LogicalDiskBasedOnExtent "          "protocols supported by this AccessPoint. Note, each entry "
        "relationship. (Indeed, the BasedOnExtent association is the "          "of this array is related to the entry in the PrintProtocol "
        "superclass for the BasedOnPartition and BasedOnVolume "          "array that is located at the same index."),
        "relationships.)")         ArrayType ("Indexed"),
    ]         ModelCorrespondence {"CIM_PrintSAP.PrintProtocol"} ]
 class CIM_LogicalDisk : CIM_StorageExtent     string PrintProtocolInfo[];
 {  
 }; };
  
 // ===================================================================  
 // LogicalDiskBasedOnExtent  
 // ===================================================================  
    [Association,  
     Description (  
        "LogicalDisks can be BasedOn a single StorageVolume, Memory "  
        "(in the case of a RAM Disk), a DiskPartition or other "  
        "StorageExtent. These relationships are made explicit in this "  
        "association. Subclasses of the association, LogicalDiskBasedOn"  
        "Partition and LogicalDiskBasedOnVolume, detail the 'typical' "  
        "semantics.")  
    ]  
 class CIM_LogicalDiskBasedOnExtent : CIM_BasedOn  
 {  
       [Override ("Antecedent"), Max (1),  
        Description ("The StorageExtent.")  
       ]  
    CIM_StorageExtent REF Antecedent;  
       [Override ("Dependent"),  
        Description (  
         "The LogicalDisk which is built on the StorageExtent.")  
       ]  
    CIM_LogicalDisk REF Dependent;  
 };  
  
 // =================================================================== // ===================================================================
 // LogicalDiskBasedOnVolume  // PrintService
 // =================================================================== // ===================================================================
    [Association,     [Description (
     Description (       "The Service that provides support for printing. The basic "
        "LogicalDisks can be BasedOn a single Volume (for example, "       "assumption of the Printing Model is that a PrintService accepts "
        "exposed by a software volume manager), or be BasedOn a Disk"       "a PrintJob for processing, via its PrintSAP. The Job is then "
        "Partition directly. The former relationship is made explicit "       "placed on a PrintQueue (indicated by the QueueForPrintService "
        "in this association.")       "association). Printers take Jobs from Queues (indicated by the "
    ]       "PrinterServicingQueue association).") ]
 class CIM_LogicalDiskBasedOnVolume : CIM_LogicalDiskBasedOnExtent  class CIM_PrintService : CIM_Service {
 {        [Description (
       [Override ("Antecedent"), Max (1),          "An array of free-form strings specifying the types of "
        Description ("The StorageVolume.")          "paper that may be used by Jobs that are submitted to this "
       ]          "PrintService. This may be different than the paper types that "
 CIM_StorageVolume REF Antecedent;          "are installed on the Printer, because the PrintService may "
           "include support for manually making other types available or "
           "only a subset of paper types may be exported via this Service. "
           "Each string should be expressed in the form specified by "
           "ISO/IEC 10175 Document Printing Application (DPA) which is "
           "also summarized in Appendix C of RFC 1759 (Printer MIB). "
           "Examples of valid strings are \"iso-a4-colored\" and "
           "\"na-10x14-envelope\"."),
          ModelCorrespondence {"CIM_Printer.PaperTypesAvailable",
           "CIM_PrintJob.RequiredPaperType"} ]
      string PaperTypesAvailable[];
         [Description (
           "An array indicating the print languages supported by the "
           "PrintService. A PrintService may support more languages "
           "than those available on the underlying Printer through the "
           "use of filters. An administrator may also choose to prevent "
           "some languages from being exported by the PrintService."),
          ValueMap {"1", "2", "3", "4", "5", "6", "7", "8", "9", "10",
                    "11", "12", "13", "14", "15", "16", "17", "18", "19",
                    "20", "21", "22", "23", "24", "25", "26", "27", "28",
                    "29", "30", "31", "32", "33", "34", "35", "36", "37",
                    "38", "39", "40", "41", "42", "43", "44", "45", "46",
                    "47"},
          Values {"Other", "Unknown", "PCL", "HPGL", "PJL", "PS",
                  "PSPrinter", "IPDS", "PPDS", "EscapeP", "Epson", "DDIF",
                  "Interpress", "ISO6429", "Line Data", "MODCA", "REGIS",
                  "SCS", "SPDL", "TEK4014", "PDS", "IGP", "CodeV", "DSCDSE",
                  "WPS", "LN03", "CCITT", "QUIC", "CPAP", "DecPPL",
                  "Simple Text", "NPAP", "DOC", "imPress", "Pinwriter",
                  "NPDL", "NEC201PL", "Automatic", "Pages", "LIPS", "TIFF",
                  "Diagnostic", "CaPSL", "EXCL", "LCDS", "XES", "MIME"},
          ArrayType ("Indexed"),
          MappingStrings {"MIB.IETF|Printer-MIB.prtInterpreterLangFamily"},
          ModelCorrespondence {"CIM_Printer.LanguagesSupported",
           "CIM_PrintJob.Language",
           "CIM_PrintService.MimeTypesSupported"} ]
      uint16 LanguagesSupported[];
         [Description (
           "An array of free-form strings providing more detailed "
           "explanations for any mime types that are supported by "
           "the PrintService. Support for mime types is indicated "
           "by specifying a value of 47 in the LanguagesSupported array."),
          ModelCorrespondence {"CIM_Printer.MimeTypesSupported",
           "CIM_PrintJob.MimeTypes",
           "CIM_PrintService.LanguagesSupported"} ]
      string MimeTypesSupported[];
         [Description (
           "An array of integers indicating the capabilities supported "
           "by this service. Information such as \"Duplex Printing\" "
           "(value=3) or \"Transparency Printing\" (7) is specified in "
           "this property."),
          ArrayType ("Indexed"),
          Values {"Unknown", "Other", "Color Printing", "Duplex Printing",
                  "Copies", "Collation", "Stapling", "Transparency Printing",
                  "Punch", "Cover", "Bind", "Black and White Printing",
                  "One Sided", "Two Sided Long Edge", "Two Sided Short Edge",
                  "Portrait", "Landscape", "Reverse Portrait",
                  "Reverse Landscape", "Quality High", "Quality Normal",
                  "Quality Low"},
          ModelCorrespondence {"CIM_Printer.Capabilities",
           "CIM_PrintJob.Finishing",
           "CIM_PrintService.CapabilityDescriptions"} ]
      uint16 Capabilities[];
         [Description (
           "An array of free-form strings providing more detailed "
           "explanations for any of the Printer features indicated in "
           "the Capabilities array. Note, each entry of this array "
           "is related to the entry in the Capabilities array that "
           "is located at the same index."),
          ArrayType ("Indexed"),
          ModelCorrespondence {"CIM_PrintService.Capabilities"} ]
      string CapabilityDescriptions[];
         [Description (
           "Describes the filters that are available within this Print"
           "Service. For example, a PrintService may be able to convert "
           "a Job submitted in one page description language to another, "
           "so that it can be passed to an available Printer.") ]
      string AvailableFilters[];
 }; };
  
   
 // =================================================================== // ===================================================================
 // LogicalDiskBasedOnVolumeSet  // PrinterServicingQueue
 // =================================================================== // ===================================================================
    [Association,     [Association, Description (
     Description (       "This association indicates that a Printer can be passed "
        "LogicalDisks can be BasedOn a VolumeSet. This association is "       "PrintJobs from a particular Queue.") ]
        "an optimization where software RAID doesn't exist and the "  class CIM_PrinterServicingQueue : CIM_Dependency {
        "LogicalDisk is built right on top of a VolumeSet presented by "        [Override ("Antecedent"), Description (
        "an SCC cabinet. However, this would be better modeled by a "          "A destination Printer for Jobs enqueued on the Dependent "
        "DiskPartition BasedOn the VolumeSet (described using the "          "Queue.") ]
        "DiskPartitionBasedOnVolume association) and then basing the "     CIM_Printer REF Antecedent;
        "LogicalDisk on the DiskPartition (using the LogicalDisk"        [Override ("Dependent"), Description (
        "BasedOnPartition association).")          "A Queue that is providing Jobs to the Printer.") ]
    ]     CIM_PrintQueue REF Dependent;
 class CIM_LogicalDiskBasedOnVolumeSet : CIM_LogicalDiskBasedOnVolume  
 {  
       [Override ("Antecedent"),  
          Max (1),  
        Description ("The VolumeSet.")  
       ]  
    CIM_VolumeSet REF Antecedent;  
 }; };
  
   
 // =================================================================== // ===================================================================
 // LogicalDiskBasedOnPartition  // PrinterServicingJob
 // =================================================================== // ===================================================================
    [Association,     [Association, Description (
     Description (       "This association indicates that a Printer is currently "
        "LogicalDisks can be BasedOn a DiskPartition. For example, a "       "servicing a particular PrintJob.") ]
        "personal computer's C: drive may be located on a Partition on "  class CIM_PrinterServicingJob : CIM_Dependency {
        "local PhysicalMedia. In this association of LogicalDisks to "  
        "Partitions, note that the cardinality of the Antecedent, Disk"  
        "Partition, is Max(1). This dictates that a LogicalDisk can not "  
        "span more than one Partition. However, there are cases where "  
        "this is true. When it occurs, the LogicalDisk is really based "  
        "on some kind of RAID configuration (for example, a mirror or "  
        "stripe set). In these scenarios, the LogicalDisk is more "  
        "correctly BasedOn a StorageVolume. To prevent incorrectly using "  
        "the LogicalDiskBasedOnPartition association, the Max(1) "  
        "qualifier was put on the Antecedent reference to the "  
        "DiskPartition.")  
    ]  
 class CIM_LogicalDiskBasedOnPartition : CIM_LogicalDiskBasedOnExtent  
 {  
       [Override ("Antecedent"),       [Override ("Antecedent"),
          Max (1),         Description ("The destination Printer for a PrintJob.") ]
        Description ("The DiskPartition.")     CIM_Printer REF Antecedent;
       ]        [Override ("Dependent"), Description ("The PrintJob.") ]
    CIM_DiskPartition REF Antecedent;     CIM_PrintJob REF Dependent;
 }; };
  
 // ===================================================================  
 // AggregatePExtent  
 // ===================================================================  
    [Description (  
        "An AggregatePExtent is used to model an SCC RAID "  
        "implementation. AggregatePExtents provide summary information "  
        "about the addressable logical blocks which are in the same "  
        "StorageRedundancyGroup and reside on the same storage device. "  
        "This is an alternative grouping for PhysicalExtents, when only "  
        "summary information is needed or when automatic configuration "  
        "is used.")  
    ]  
 class CIM_AggregatePExtent : CIM_StorageExtent  
 {  
       [Override ("NumberOfBlocks"),  
        Description (  
           "Total number of blocks (including the check data blocks) "  
           "contained in this AggregatePExtent.  The block size (an "  
         "inherited property) should be set to the same value as for "  
           "the MediaAccessDevice associated with this Extent."),  
        MappingStrings {"MIF.DMTF|Aggregate Physical Extent|001.2"}  
       ]  
    uint64 NumberOfBlocks;  
       [Description (  
         "The number of blocks contained in this AggregatePExtent "  
         "to be used as check data. If this AggregatePExtent is "  
         "available, then this value shall be zero."),  
        MappingStrings {"MIF.DMTF|Aggregate Physical Extent|001.3"}  
       ]  
    uint64 BlocksOfCheckData;  
 };  
  
 // =================================================================== // ===================================================================
 // AggregateRedundancyComponent  // PrintJobFile
 // =================================================================== // ===================================================================
    [Association,     [Association, Aggregation, Description (
     Aggregation,       "This association indicates which files are associated with "
     Description (       "a PrintJob.") ]
        "Describes the AggregatePExtent in a StorageRedundancyGroup.")  class CIM_PrintJobFile : CIM_Component {
    ]        [Override ("GroupComponent"), Aggregate,
 class CIM_AggregateRedundancyComponent : CIM_ExtentRedundancyComponent         Description ("The PrintJob that is based on one or more Files.") ]
 {     CIM_PrintJob REF GroupComponent;
       [Override ("GroupComponent"),  
        Aggregate,  
        Description ("The StorageRedundancyGroup.")  
       ]  
    CIM_StorageRedundancyGroup REF GroupComponent;  
       [Override ("PartComponent"),       [Override ("PartComponent"),
        Description (         Description ("The File(s) that make up a PrintJob.") ]
           "The AggregatePExtent participating in the RedundancyGroup.")     CIM_DataFile REF PartComponent;
       ]  
    CIM_AggregatePExtent REF PartComponent;  
 }; };
  
 // ===================================================================  
 // AggregatePSExtent  
 // ===================================================================  
    [Description (  
        "An AggregatePSExtent is used to model an SCC RAID "  
        "implementation. AggregatePSExtents define the number of "  
        "addressable logical blocks on a single storage device, "  
        "excluding any logical blocks mapped as check data. "  
        "This is an alternative grouping for ProtectedSpaceExtents, "  
        "when only summary information is needed or when automatic "  
        "configuration is used.")  
    ]  
 class CIM_AggregatePSExtent : CIM_StorageExtent  
 {  
       [Override ("NumberOfBlocks"),  
        Description (  
           "Total number of user data blocks that are contained in this "  
         "Extent."),  
        MappingStrings {  
                "MIF.DMTF|Aggregate Protected Space Extent|001.2"}  
       ]  
    uint64 NumberOfBlocks;  
 };  
  
 // =================================================================== // ===================================================================
 // AggregatePSExtentBasedOnPExtent  // QueueForPrintService
 // =================================================================== // ===================================================================
    [Association,     [Association, Description (
     Description (       "This association indicates that a PrintService utilizes a "
        "AggregatePSExtents are BasedOn a single PhysicalExtent. This "       "particular PrintQueue.") ]
        "relationship is made explicit in this association.")  class CIM_QueueForPrintService : CIM_Dependency {
    ]  
 class CIM_AggregatePSExtentBasedOnPExtent : CIM_BasedOn  
 {  
       [Override ("Antecedent"),       [Override ("Antecedent"),
        Description ("The PhysicalExtent."),         Description ("The PrintQueue that the Service utilizes.") ]
        Max (1)     CIM_PrintQueue REF Antecedent;
       ]  
    CIM_PhysicalExtent REF Antecedent;  
       [Override ("Dependent"),       [Override ("Dependent"),
        Description (         Description ("The PrintService that puts Jobs on the Queue.") ]
         "The AggregatePSExtent which is built on the PhysicalExtent.")     CIM_PrintService REF Dependent;
       ]        [Description (
    CIM_AggregatePSExtent REF Dependent;          "Indicates that the PrintService can accept Jobs and "
           "place them on the Queue.") ]
      boolean QueueAcceptingFromService;
 }; };
  
   
 // =================================================================== // ===================================================================
 // AggregatePSExtentBasedOnAggregatePExtent  // QueueForwardsToPrintSAP
 // =================================================================== // ===================================================================
    [Association,     [Association, Description (
     Description (       "This association indicates that the Jobs from a PrintQueue "
        "AggregatePSExtents are BasedOn a single AggregatePExtent. This "       "can be sent to the referenced PrintSAP, to be handled by the "
        "relationship is made explicit in this association.")       "SAP's backing PrintService.") ]
    ]  class CIM_QueueForwardsToPrintSAP : CIM_Dependency {
 class CIM_AggregatePSExtentBasedOnAggregatePExtent : CIM_BasedOn  
 {  
       [Override ("Antecedent"),       [Override ("Antecedent"),
        Description ("The AggregatePExtent."),         Description ("The PrintSAP for the PrintService.") ]
        Max (1)     CIM_PrintSAP REF Antecedent;
       ]  
    CIM_AggregatePExtent REF Antecedent;  
       [Override ("Dependent"),       [Override ("Dependent"),
        Description (         Description ("The PrintQueue that forwards Jobs to the SAP.") ]
         "The AggregatePSExtent which is built on the AggregatePExtent.")     CIM_PrintQueue REF Dependent;
       ]  
    CIM_AggregatePSExtent REF Dependent;  
 }; };
  
   
 // =================================================================== // ===================================================================
 // Snapshot  // OwningPrintQueue
 // =================================================================== // ===================================================================
      [Association, Description (
        "This association indicates which Queue holds a PrintJob and "
        "where the Job is located within that Queue. A Job may remain on "
        "its final Queue once it has been printed with a PrintJobStatus "
        "of \"Complete\" or \"Completed With Error\".") ]
   class CIM_OwningPrintQueue : CIM_JobDestinationJobs {
         [Override ("Antecedent"), Min(1), Max(1),
          Description ("The PrintQueue on which the Job is held.") ]
      CIM_PrintQueue REF Antecedent;
         [Override ("Dependent"), Weak,
          Description ("The PrintJob.") ]
      CIM_PrintJob REF Dependent;
    [Description (    [Description (
                 "The Snapshot class is an optional construct. It can be "          "The position of the PrintJob on the Queue. The top of the "
                 "used to represent an Extent that contains a full copy of "          "Queue is indicated by a value of 1 with higher values being "
                 "another Extent, or the changes to that Extent when performing "          "used to represent Jobs that are further away from the top of "
                 "a delta-based (delta before or delta after) copy.\n"          "the Queue. A QueuePosition of zero indicate that the Job has "
                 "Snapshot's definition in CIM is not equivalent to the act "          "completed (either with or without error).") ]
                 "of creating a volume or file-based snapshot, or a point in "     uint32 QueuePosition;
                 "time copy. It is at a much lower level and represents the "  
                 "use of storage to hold a copied image of an Extent, or to hold "  
                 "changes to an Extent.  Use of the Snapshot object when making "  
                 "a full copy is only recommended if the purpose is to describe "  
                 "the existence of a copy. (This use will be very infrequent.) "  
                 "The problem with describing an Extent solely as a 'snapshot' "  
                 "is that when the snapshot/copy is broken, the object must be "  
                 "destroyed. Typically, this object still holds valid data, and "  
                 "would have to be reinstantiated. If the 'full copy' object "  
                 "is to be treated as a StorageVolume or more general Extent, "  
                 "then it should be modeled as such from the beginning - "  
                 "i.e., not as an instance of Snapshot but as an instance of a "  
                 "generic StorageExtent or StorageVolume. In this case, the "  
                 "Synchronized association would be used to describe that one "  
                 "StorageExtent is synchronized with another.\n"  
                 "When describing a delta-based snapshot/point in time copy, "  
                 "the Snapshot object represents the store holding the before/after "  
                 "image changes to the original Extent. For example, when doing a "  
                 "'delta before' Snapshot, the resultant target would be modeled "  
                 "as a StorageExtent that is BasedOn the original Extent and the "  
                 "instance of Snapshot (that holds the changes to the original Extent).")  
    ]  
 class CIM_Snapshot : CIM_StorageExtent  
 {  
       [Description ("True indicates that the snapshot is synced.") ]  
    boolean IsSynced;  
       [Description (  
         "The time stamp indicating when the sync occurred.") ]  
    datetime SyncTime;  
 }; };
  
 // ===================================================================  
 // SnapshotOfExtent  
 // ===================================================================  
    [Association,  
     Description (  
        "SnapshotOfExtent is an association between an Extent and "  
        "its Snapshot. This relationship is made explicit in this "  
        "association.")  
    ]  
 class CIM_SnapshotOfExtent : CIM_Dependency  
 {  
       [Override ("Antecedent"),  
        Description ("The StorageExtent."),  
        Max(1)  
       ]  
    CIM_StorageExtent REF Antecedent;  
       [Override ("Dependent"),  
        Description ("The Snapshot.")  
       ]  
    CIM_Snapshot REF Dependent;  
       [Description ("The type of snapshot."),  
        Values {"Other", "Unknown", "Copy", "Before Delta",  
              "After Delta"}  
       ]  
    uint16 SnapshotType;  
 };  
  
 // =================================================================== // ===================================================================
 // Memory  // CIM_OOBAlertService
 // =================================================================== // ===================================================================
    [Description (    [Description (
        "Capabilities and management of Memory-related LogicalDevices.")       "This Service is implemented by a LogicalDevice (e.g. a "
    ]       "NetworkAdapter or Modem) that is capable of sending alert "
 class CIM_Memory : CIM_StorageExtent       "messages to a remote destination. The alert messages reflect "
 {       "the state of one or more ManagedSystemElements. The Elements "
       [Override ("ErrorMethodology"),       "for which alert messages are forwarded, are defined by "
        Description (       "enumerating the ProvidesServiceToElement association for the "
           "ErrorMethodology for Memory is a string property that "       "Service. Out of Band (OOB) refers to the mechanisms in use when "
           "indicates whether parity or CRC algorithms, ECC or other "       "normal OS-based management mechanisms are not possible. This "
           "mechanisms are used. Details on the algorithm can also "       "occurs when the OS is down or not functioning properly.") ]
           "be supplied."),  class CIM_OOBAlertService : CIM_Service {
        MappingStrings {"MIF.DMTF|Physical Memory Array|001.7"}  
       ]  
    string ErrorMethodology;  
       [Description (  
           "The beginning address, referenced by an application or "  
           "operating system and mapped by a memory controller, for "  
           "this Memory object. The starting address is specified in "  
           "KBytes."),  
        Units ("KiloBytes"),  
        MappingStrings {"MIF.DMTF|Memory Array Mapped Addresses|001.3",  
              "MIF.DMTF|Memory Device Mapped Addresses|001.4"}  
       ]  
    uint64 StartingAddress;  
       [Description (  
           "The ending address, referenced by an application or "  
           "operating system and mapped by a memory controller, for "  
           "this Memory object. The ending address is specified in "  
           "KBytes."),  
        Units ("KiloBytes"),  
        MappingStrings {"MIF.DMTF|Memory Array Mapped Addresses|001.4",  
              "MIF.DMTF|Memory Device Mapped Addresses|001.5"}  
       ]  
    uint64 EndingAddress;  
         [Description (         [Description (
           "An integer enumeration describing the type of error that "          "The type of the alert destination. For example, the alert "
           "occurred most recently. For example, single (value=6) or "          "may be received by an application listening on a UDP Port on "
           "double bit errors (7) can be specified using this property. "          "a remote destination, or could be sent to a pager (values "
           "The values, 12-14, are undefined in the CIM Schema since in "          "4 or 2, respectively)."),
           "DMI, they mix the semantics of the type of error and whether "         Values {"Unknown", "Other", "Pager", "TCP Port", "UDP Port"},
           "it was correctable or not.  The latter is indicated in the "         ModelCorrespondence {
           "property, CorrectableError."),          "CIM_OOBAlertService.OtherDestinationTypeDescription"} ]
          ValueMap {"1", "2", "3", "4", "5", "6", "7", "8", "9", "10",     uint16 DestinationType;
                "11", "12", "13", "14"},  
        Values {"Other", "Unknown", "OK", "Bad Read", "Parity Error",  
                "Single-Bit Error", "Double-Bit Error", "Multi-Bit Error",  
                "Nibble Error", "Checksum Error", "CRC Error", "Undefined",  
              "Undefined", "Undefined"},  
        MappingStrings {"MIF.DMTF|Memory Device|005",  
              "MIF.DMTF|Physical Memory Array|001.8"},  
          ModelCorrespondence {"CIM_Memory.OtherErrorDescription"}  
       ]  
    uint16 ErrorInfo;  
         [Description (         [Description (
           "Free form string providing more information if the Error"          "The description of the alert DestinationType. This is used "
           "Type property is set to 1, \"Other\". If not set to 1, this "          "when the DestinationType is set to \"Other\" (value=1)."),
           "string has no meaning."),         ModelCorrespondence {"CIM_OOBAlertService.DestinationType"} ]
          ModelCorrespondence {"CIM_Memory.ErrorInfo"}     string OtherDestinationTypeDescription;
         ]  
    string OtherErrorDescription;  
         [Description (         [Description (
           "Boolean indicating that the most recent error was "          "The address where this Service sends the alerts. The "
           "correctable. If the ErrorInfo property is equal to 3, "          "format of this address depends on the DestinationType. For "
           "\"OK\", then this property has no meaning."),          "example, if the DestinationType is a UDP Port (value=4), "
          MappingStrings {"MIF.DMTF|Memory Device|005",          "then this property contains a string identifying the IP "
              "MIF.DMTF|Physical Memory Array|001.8"}          "address of the Port (for example, 111.222.333.444:4567). "
       ]          "If DestinationType is a pager (value=2), then the "
    boolean CorrectableError;          "address is a Pager number (for example, 18002257654).") ]
      string DestinationAddress;
       [Description (       [Description (
           "The time that the last memory error occurred. The type of "          "The format of the Alert Message sent by the Service."),
           "error is described by the ErrorInfo property. If the Error"          Values {"Unknown", "Other", "Numeric", "AlphaNumeric",
           "Info property is equal to 3, \"OK\", then this property has "                  "Free Form Text", "Platform Event Trap"},
           "no meaning.")          ModelCorrespondence {
       ]           "CIM_OOBAlertService.OtherMessageFormatDescription"} ]
    datetime ErrorTime;     uint16 MessageFormat;
       [Description (       [Description (
           "An integer enumeration indicating the memory access "          "The description of the format of the alert message used "
           "operation that caused the last error. The type of error is "          "by the Service when the AlertMessageFormat property is "
           "described by the ErrorInfo property. If the ErrorInfo "          "set to \"Other\" (value=1)."),
           "property is equal to 3, \"OK\", then this property "         ModelCorrespondence {"CIM_OOBAlertService.MessageFormat"} ]
           "has no meaning."),     string OtherMessageFormatDescription;
          ValueMap {"1", "2", "3", "4", "5"},  
        Values {"Other", "Unknown", "Read", "Write", "Partial Write"},  
        MappingStrings {"MIF.DMTF|Memory Device|005",  
              "MIF.DMTF|Physical Memory Array|001.10"}  
       ]  
    uint16 ErrorAccess;  
       [Description (       [Description (
           "The size of the data transfer in bits that caused the last "          "If the AlertService only uses a fixed message to send "
           "error. 0 indicates no error. If the ErrorInfo property "          "an alert, then this flag should be set to TRUE.") ]
           "is equal to 3, \"OK\", then this property should be set "     boolean OnlySendsFixedMessage;
           "to 0."),  
          Units ("Bits"),  
        MappingStrings {"MIF.DMTF|Memory Device|005",  
              "MIF.DMTF|Physical Memory Array|001.11"}  
       ]  
    uint32 ErrorTransferSize;  
       [OctetString, Description (  
           "Data captured during the last erroneous mebmory access. "  
           "The data occupies the first n octets of the array necessary "  
           "to hold the number of bits specified by the ErrorTransferSize "  
           "property. If ErrorTransferSize is 0, then this property "  
           "has no meaning."),  
        ArrayType ("Indexed"),  
        MappingStrings {"MIF.DMTF|Memory Device|005",  
              "MIF.DMTF|Physical Memory Array|001.12"}  
       ]  
    uint8 ErrorData[64];  
       [Description (       [Description (
           "The ordering for data stored in the ErrorData property. "          "The AlertService may require some fixed data to send as "
           "\"Least Significant Byte First\" (value=1) or "          "part of the message. This may include things like the "
           "\"Most Significant Byte First\" (2) can be specified. If "          "address or name of the System. This string contains the "
           "ErrorTransferSize is 0, then this property has no meaning."),          "complete message when the property, OnlySendsFixedMessage, "
        Values {"Unknown", "Least Significant Byte First",          "is set to TRUE.") ]
                "Most Significant Byte First"}     string FixedPartOfMessage;
       ]  
    uint16 ErrorDataOrder;  
       [Description (       [Description (
           "Specifies the address of the last memory error. The type "          "If the destination is capable of sending an acknowledgement "
           "of error is described by the ErrorInfo property. "          "to the alert, then this flag is set to TRUE. The format of "
           "If the ErrorInfo property is equal to 3, \"OK\", then this "          "the acknowledgement is determined by the DestinationType "
           "property has no meaning."),          "and the MessageFormat.") ]
        MappingStrings {"MIF.DMTF|Memory Device|005",     boolean DestinationIsAckCapable;
                "MIF.DMTF|Memory Device|005",  
                "MIF.DMTF|Physical Memory Array|001.14"}  
       ]  
    uint64 ErrorAddress;  
         [Description (         [Description (
           "Boolean indicating whether the address information in "          "The AlertService may retry and send an alert more than "
           "the property, ErrorAddress, is a system-level address (TRUE) "          "once. The RetryCount identifies how often the operation will "
           "or a physical address (FALSE). If the ErrorInfo property is "          "be repeated. If DestinationIsAckCapable is set to TRUE, then "
           "equal to 3, \"OK\", then this property has no meaning.")          "the retry will only be done if an Ack is not received. "
         ]          "Otherwise, the retries are done unconditionally.") ]
    boolean SystemLevelAddress;     uint16 RetryCount;
       [Description (       [Description (
           "Specifies the range, in bytes, to which the last error can be "          "The interval between each successive retry, in seconds. "
           "resolved. For example, if error addresses are resolved to bit "          "If DestinationIsAckCapable is set to TRUE, then this "
           "11 (ie, on a typical page basis), then errors can be "          "interval is used as a timeout interval, before the next "
           "resolved to 4K boundaries and this property is set to 4000. "          "retry is done."),
           "If the ErrorInfo property is equal to 3, \"OK\", then this "         Units ("Seconds") ]
           "property has no meaning."),     uint16 RetryInterval;
        Units ("Bytes"),  
        MappingStrings {"MIF.DMTF|Memory Device|005",  
              "MIF.DMTF|Physical Memory Array|001.15"}  
       ]  
    uint64 ErrorResolution;  
         [OctetString, Description (  
           "An array of octets holding additional error information. "  
           "An example is ECC Syndrome or the return of the check bits "  
           "if a CRC-based ErrorMethodology is used. In the latter case, "  
           "if a single bit error is recognized and the CRC algorithm "  
           "is known, it is possible to determine the exact bit that "  
           "failed.  This type of data (ECC Syndrome, Check Bit or "  
           "Parity Bit data, or other vendor supplied information) is "  
           "included in this field. If the ErrorInfo property is "  
           "equal to 3, \"OK\", then AdditionalErrorData has no meaning."),  
          MappingStrings {"MIF.DMTF|Memory Device|005",  
              "MIF.DMTF|Physical Memory Array|001.13"}  
         ]  
    uint8 AdditionalErrorData[64];  
 };  
   
 // ===================================================================  
 // AssociatedMemory  
 // ===================================================================  
    [Association,  
     Description (  
        "LogicalDevices may have Memory installed on them or "  
        "otherwise associated with them - such as CacheMemory. "  
        "This is made explicit in this association.")  
    ]  
 class CIM_AssociatedMemory : CIM_Dependency  
 {  
       [Override ("Antecedent"),  
        Description ("Memory installed on or associated with a Device.")  
       ]  
    CIM_Memory REF Antecedent;  
       [Override ("Dependent"),  
        Description ("The LogicalDevice.")  
       ]  
    CIM_LogicalDevice REF Dependent;  
 }; };
  
   
 // =================================================================== // ===================================================================
 // ComputerSystemMemory  // WakeUpService
 // =================================================================== // ===================================================================
    [Association,     [Description (
     Aggregation,       "WakeUpService allows a UnitaryComputerSystem to be woken up "
     Description (       "from a low power sleep state. This Service is implemented "
        "Association indicating that memory is installed and required "       "by a LogicalDevice (e.g. NetworkAdapter or Modem) that is "
        "for the UnitaryComputerSystem to operate. At least one "       "capable of receiving wakeup messages, and notifying the "
        "Memory StorageExtent is required. Note that this relationship "       "System.") ]
        "inherits from the SystemDevice association, and therefore, "  class CIM_WakeUpService : CIM_Service {
        "the Memory StorageExtent is weak to the aggregating Unitary"        [Description ("The Type of the WakeUp Service."),
        "ComputerSystem.")         Values {"Unknown", "Other", "Wake On LAN - Magic Packet",
    ]                 "Wake on LAN - Packet Filtering", "Wake On Ring"},
 class CIM_ComputerSystemMemory : CIM_SystemDevice         ModelCorrespondence {
 {          "CIM_WakeUpServcice.OtherWakeUpTypeDescription"} ]
       [Override ("GroupComponent"),     uint16 WakeUpType;
        Aggregate,        [Description (
        Description ("The UnitaryComputerSystem.")          "A description of the type of WakeUpService used when "
       ]          "WakeUpType is set to \"Other\" (value=1)."),
    CIM_UnitaryComputerSystem REF GroupComponent;         ModelCorrespondence {"CIM_WakeUpService.WakeUpType"} ]
       [Override ("PartComponent"),     string OtherWakeUpTypeDescription;
        Description (        [Description (
           "The Memory StorageExtent which is part of the "          "The filter type on the packets/messages that trigger "
           "UnitaryComputerSystem.")          "the WakeUpService. This field is only used when the WakeUp"
       ]          "Type is set to \"Wake On LAN - Packet Filtering\" (value"
    CIM_Memory REF PartComponent;          "=3)."),
          Values {"Unknown", "Other", "ARP Broadcast",
                  "Neighbor Discovery Multicast",
                  "IP Packet with Directed MAC Address",
                  "IPX Diagnostic Responder", "NBT Name Query",
                  "Binary Match"},
          ModelCorrespondence {
           "CIM_WakeUpService.OtherFilterTypeDescription"} ]
      uint16 FilterType;
         [OctetString, Description (
           "The binary data that is used to compare the contents "
           "of the received packet. This is used when the FilterType is "
           "set to \"Binary Match\" (value=7). This could also be used "
           "when the FilterType is set to \"Other\" (value=1).") ]
      uint8 FilterData[];
         [Description (
           "The description of the format of the FilterType used by "
           "the Service when the FilterType is set to \"Other\" "
           "(value=1)."),
          ModelCorrespondence {"CIM_WakeUpService.FilterType"} ]
      string OtherFilterTypeDescription;
 }; };
  
   
 // =================================================================== // ===================================================================
 // AssociatedProcessorMemory  // OOBAlertServiceOnModem
 // =================================================================== // ===================================================================
    [Association,     [Association, Description (
     Description (       "OOBAlertServiceOnModem defines where the out of band alerting "
          "Associates the Processor and system Memory, or a Processor's "       "Service is implemented. The Service can either employ a Modem "
          "Cache. ")       "or NetworkAdapter to send alerts.") ]
    ]  class CIM_OOBAlertServiceOnModem : CIM_DeviceServiceImplementation {
 class CIM_AssociatedProcessorMemory : CIM_AssociatedMemory        [Override ("Antecedent"), Max (1),
 {         Description ("The Modem which implements the alerting Service.") ]
      CIM_Modem REF Antecedent;
         [Override ("Dependent"),         [Override ("Dependent"),
          Description (         Description ("The alerting Service provided on the Modem.") ]
           "The Processor that accesses the Memory or uses the Cache.")     CIM_OOBAlertService REF Dependent;
         ]  
    CIM_Processor REF Dependent;  
         [Description (  
           "Speed of the bus, in MHertz, between the Processor and "  
           "Memory. "),  
          Units ("MegaHertz")  
         ]  
    uint32 BusSpeed;  
 }; };
  
   
 // =================================================================== // ===================================================================
 // NonVolatileStorage  // WakeUpServiceOnModem
 // =================================================================== // ===================================================================
    [Description (     [Association, Description (
         "Capabilities and management of NV Storage. Non-volatile memory "       "WakeUpServiceOnModem defines where the WakeUpService is "
         "natively includes flash and ROM storage. In addition, NV memory can be "       "implemented. The Service can either employ a Modem or "
         "BasedOn VolatileStorage, if the volatile memory is backed by a Battery. "       "NetworkAdapter to receive a wakeup signal.") ]
         "This scenario would be completely described by an instance of the "  class CIM_WakeUpServiceOnModem : CIM_DeviceServiceImplementation {
         "AssociatedBattery relationship, referencing the NonVolatileStorage as "        [Override ("Antecedent"), Max (1),
         "the Dependent and the Battery as the Antecedent, and an instance of the "         Description ("The Modem which implements the WakeUpService.") ]
         "BasedOn relationship, referencing the NonVolatileStorage as the "     CIM_Modem REF Antecedent;
         "Dependent and the VolatileStorage as the Antecedent.")        [Override ("Dependent"),
         ]         Description ("The wakeup Service provided on the Modem.") ]
 class CIM_NonVolatileStorage : CIM_Memory     CIM_WakeUpService REF Dependent;
 {  
       [Description ("Indicating that the NV storage is writeable.")]  
    boolean IsWriteable;  
       [Description (  
         "Boolean indicating that at least some portion of the "  
         "NonVolatileStorage is writeable by applications.")  
       ]  
    boolean ApplicationWriteable;  
       [Description (  
         "When at least some portion of the NonVolatileStorage is "  
         "writeable (ApplicationWriteable property = TRUE), StartAddress"  
         "forApplcationWrite indicates the starting address for "  
         "application data. If the ApplicationWriteable property is "  
         "FALSE, this property is undefined."),  
        ModelCorrespondence {  
              "CIM_NonVolatileStorage.ApplicationWriteable"}  
       ]  
    uint64 StartAddressForApplicationWrite;  
       [Description (  
         "When at least some portion of the NonVolatileStorage is "  
         "writeable (ApplicationWriteable property = TRUE), Application"  
         "WritableSize indicates the number of bits available for "  
         "application data. If the ApplicationWriteable property is "  
         "FALSE, this property is undefined."),  
        Units ("Bits"),  
        ModelCorrespondence {  
              "CIM_NonVolatileStorage.ApplicationWriteable"}  
       ]  
    uint64 ApplicationWriteableSize;  
 }; };
  
   
 // =================================================================== // ===================================================================
 // BIOSLoadedInNV  // OOBAlertServiceOnNetworkAdapter
 // =================================================================== // ===================================================================
    [Association,    [Association,
     Description (     Description (
        "A link between BIOSElement and NonVolatileStorage where "         "OOBAlertServiceOnNetworkAdapter defines where the out of band "
        "the BIOS is loaded.")         "alerting Service is implemented. Currently, the Service can "
    ]         "either employ a Modem or a NetworkAdapter to send alerts.") ]
 class CIM_BIOSLoadedInNV : CIM_Dependency  class CIM_OOBAlertServiceOnNetworkAdapter : CIM_DeviceServiceImplementation {
 {        [Override ("Antecedent"), Max (1), Description (
       [Override ("Antecedent"),          "The NetworkAdapter which implements the Service.") ]
        Description ("The non-volatile storage.")     CIM_NetworkAdapter REF Antecedent;
       ]        [Override ("Dependent"), Description (
    CIM_NonVolatileStorage REF Antecedent;          "The alerting Service provided on the NetworkAdapter.") ]
       [Override ("Dependent"),     CIM_OOBAlertService REF Dependent;
        Description ("The BIOS stored in the NonVolatile Extent.")  
       ]  
    CIM_BIOSElement REF Dependent;  
       [Description (  
           "The starting address where the BIOS is located in "  
           "non-volatile storage.")  
       ]  
    uint64 StartingAddress;  
       [Description (  
           "The ending address where the BIOS is located in "  
           "non-volatile storage.")  
       ]  
    uint64 EndingAddress;  
 }; };
  
   
 // =================================================================== // ===================================================================
 // VolatileStorage  // WakeUpServiceOnNetworkAdapter
 // =================================================================== // ===================================================================
    [Description ("Capabilities and management of Volatile Storage.")]     [Association, Description (
 class CIM_VolatileStorage : CIM_Memory       "WakeUpServiceOnNetworkAdapter defines where the WakeUpService "
 {       "is implemented. Currently, the Service can either employ a Modem "
       [Description (       "or a NetworkAdapter for wakeup.") ]
           "Indicates whether this Memory can be cached or not."),  class CIM_WakeUpServiceOnNetworkAdapter : CIM_DeviceServiceImplementation {
        MappingStrings {"MIF.DMTF|System Resource Memory Info|002"}        [Override ("Antecedent"), Max (1), Description (
       ]          "The NetworkAdapter which implements the Service.") ]
    boolean Cacheable;     CIM_NetworkAdapter REF Antecedent;
         [Override ("Dependent"), Description (
           "The wakeup Service provided on the NetworkAdapter.") ]
      CIM_WakeUpService REF Dependent;
   };
   
   
   // ==================================================================
   // FibreProtocolService
   // ==================================================================
       [Description (       [Description (
           "An enumeration indicating the cache type that is "       "FibreProtocolService abstracts and allows the management of "
           "compatible with this Memory. For example, 4 indicates "       "the Alias, Management, Time, Security, Directory (Naming) and "
           "write-through cache.  If the Cacheable property is "       "other services and functions available in a Fibre Channel "
           "set to false, then this property does not have meaning and "       "network. This class will be further defined in a later "
           "should be set to 5, \"Not Applicable\"."),       "release of CIM.") ]
        Values {"Other", "Unknown", "Write-Back", "Write-Through",  class CIM_FibreProtocolService : CIM_Service {
                "Not Applicable"},  
        MappingStrings {"MIF.DMTF|System Resource Memory Info|002"}  
       ]  
    uint16 CacheType;  
 }; };
  
   
 // =================================================================== // ===================================================================
 // CacheMemory  // AGPSoftwareFeature
 // =================================================================== // ===================================================================
    [Description (    [Description (
         "Capabilities and management of Cache Memory. Cache memory is "       "AGPSoftwareFeature adds two attributes to SoftwareFeature "
         "dedicated or allocated RAM that a Processor searches first for "       "to represent the capabilities of an AGP device driver. An "
         "data, before going to 'regular' memory. CacheMemory is used to "       "instance of this class would be associated with the "
         "speed up the delivery of data to a Processor. It is usually "       "Driver's SoftwareElement using the SoftwareFeatureSoftware"
         "described by its closeness to the Processor (for example, Primary "       "Elements relationship. The driver's SoftwareElement is "
         "or Secondary Cache).\n"       "associated with the AGPVideoController via the Device"
         "If a DiskDrive includes RAM allocated for holding the disk's most "       "Software relationship.") ]
         "recently read and/or adjacent data (in order to speed up retrieval), "  class CIM_AGPSoftwareFeature : CIM_SoftwareFeature {
         "this also would be modeled as CacheMemory. Note that CacheMemory is "  
         "NOT operating system or application level buffers but actual "  
         "RAM allocated for caching data for a Processor, from a hard disk, etc.")  
         ]  
 class CIM_CacheMemory : CIM_Memory  
 {  
       [Description (  
           "Defines whether this is the Primary (value=3), Secondary "  
           "(value=4) or Tertiary (value=5) Cache. Also, \"Other\" (1), "  
           "\"Unknown\" (2) and \"Not Applicable\" (6) can be defined."),  
          ValueMap {"1", "2", "3", "4", "5", "6"},  
        Values {"Other", "Unknown", "Primary", "Secondary", "Tertiary",  
              "Not Applicable"},  
        MappingStrings {"MIF.DMTF|System Cache|006"}  
       ]  
    uint16 Level;  
       [Description (  
           "Defines whether this is write-back (value=3) or write-through "  
           "(value=4) Cache, or whether this information \"Varies with "  
         "Address\" (5) or is defined individually for each I/O (6). "  
         "Also, \"Other\" (1) and \"Unknown\" (2) can be specified."),  
          ValueMap {"1", "2", "3", "4", "5", "6"},  
        Values {"Other", "Unknown", "Write Back", "Write Through",  
                "Varies with Address", "Determination Per I/O"},  
        MappingStrings {"MIF.DMTF|System Cache|006"}  
       ]  
    uint16 WritePolicy;  
       [Description (  
           "Defines whether this is for instruction caching (value=3), "  
           "data caching (value=4) or both (value=5, \"Unified\"). "  
           "Also, \"Other\" (1) and \"Unknown\" (2) can be defined."),  
          ValueMap {"1", "2", "3", "4", "5"},  
        Values {"Other", "Unknown", "Instruction", "Data", "Unified"},  
        MappingStrings {"MIF.DMTF|System Cache|006"}  
       ]  
    uint16 CacheType;  
       [Description (  
           "Size, in bytes, of a single cache bucket or line."),  
        Units ("Bytes"),  
        MappingStrings {"MIF.DMTF|System Cache|006"}  
       ]  
    uint32 LineSize;  
       [Description (  
           "An integer enumeration describing the algorithm to "  
           "determine which cache lines or buckets should be re-used."),  
          ValueMap {"1", "2", "3", "4", "5", "6", "7", "8"},  
        Values {"Other", "Unknown", "Least Recently Used (LRU)",  
                "First In First Out (FIFO)", "Last In First Out (LIFO)",  
                "Least Frequently Used (LFU)",  
                "Most Frequently Used (MFU)",  
              "Data Dependent Multiple Algorithms"},  
        MappingStrings {"MIF.DMTF|System Cache|006"}  
       ]  
    uint16 ReplacementPolicy;  
       [Description (  
           "Policy that shall be employed by the Cache for handling "  
           "read requests. For example, \"Read\", \"Read-Ahead\" or "  
           "both can be specified using the values, 3, 4 or 5, "  
           "respectively. If the read policy is determined individually "  
         "(ie, for each request), then the value 6 (\"Determination "  
         "per I/O\") should be specified. \"Other\" (1) and "  
         "\"Unknown\" (2) are also valid values."),  
          ValueMap {"1", "2", "3", "4", "5", "6"},  
        Values {"Other", "Unknown", "Read", "Read-Ahead",  
                "Read and Read-Ahead", "Determination Per I/O"},  
        MappingStrings {"MIF.DMTF|System Cache|006"}  
       ]  
    uint16 ReadPolicy;  
       [Description (  
           "Maximum amount of time, in seconds, dirty lines or "  
           "buckets may remain in the Cache before they are flushed. "  
           "A value of zero indicated that a cache flush is not "  
           "controlled by a flushing timer."),  
        Units ("Seconds"),  
        MappingStrings {"MIF.DMTF|System Cache|006"}  
       ]  
    uint32 FlushTimer;  
       [Description (       [Description (
           "An integer enumeration defining the system cache "          "An array of integers indicating various capabilities and "
           "associativity. For example, 6 indicates a fully associative "          "characteristics of the AGPVideoController."),
           "cache."),         ArrayType ("Indexed"),
          ValueMap {"1", "2", "3", "4", "5", "6", "7", "8"},         Values {"Unknown", "Other", "OS support",
        Values {"Other", "Unknown", "Direct Mapped",                 "Hardware Acceleration", "Hardware Blit",
                "2-way Set-Associative",                 "OpenGL Support", "Cache Coherency"},
                "4-way Set-Associative", "Fully Associative",         ModelCorrespondence {
                    "8-way Set-Associative", "16-way Set-Associative"},          "CIM_AGPSoftwareFeature.CharacteristicDescriptions"} ]
        MappingStrings {"MIF.DMTF|System Cache|006"}     uint16 Characteristics[];
       ]  
    uint16 Associativity;  
 };  
   
 // ==============================================================  
 // DiskGroup  
 // ==============================================================  
    [Description (    [Description (
        "A DiskGroup is a named collection of DiskDrives and the "          "An array of free-form strings providing more detailed "
        "StorageExtent(s) accessed via those Drives. The "          "explanations for any of the features indicated in the "
        "collection is used to limit the BasedOn relationships of "          "Characteristics array. Each entry in this array is "
        "the Extents in the DiskGroup. Extents in the Group can NOT "          "related to the Characteristics array entry located at "
        "be BasedOn storage accessed from Drives outside of the "          "the same index."),
        "Group. For example, a SoftwareVolume created 'within the "        ArrayType ("Indexed"),
        "DiskGroup' is restricted to be completely accessed using "        ModelCorrespondence {"CIM_AGPSoftwareFeature.Characteristics"} ]
        "Drives in the Group. Actions such as 'replicate' or "     string CharacteristicDescriptions[];
        "'migrate' on an Extent must operate within the scope of "  
        "the Extents present in the DiskGroup.")  
    ]  
 class CIM_DiskGroup : CIM_CollectionOfMSEs  
 {  
       [Override ("CollectionID"), Key ]  
    string CollectionID;  
 }; };
  
 // ===================================================================  
 // DriveInDiskGroup  
 // ===================================================================  
    [Association,  
     Aggregation,  
     Description (  
        "CIM_DriveInDiskGroup defines the DiskDrive(s) that participate "  
        "in the Group.")  
    ]  
 class CIM_DriveInDiskGroup : CIM_CollectedMSEs  
 {  
       [Override ("Collection"), Aggregate, Description (  
         "The DiskGroup. A Drive is a member of at most one DiskGroup."),  
        Max(1)  
       ]  
    CIM_DiskGroup REF Collection;  
       [Override ("Member"),  
        Description ("The DiskDrive in the Group.") ]  
    CIM_DiskDrive REF Member;  
 };  
  
 // =================================================================== // ===================================================================
 // ExtentInDiskGroup  //
   //    Settings, Logs, and Redundancy
   //
 // =================================================================== // ===================================================================
    [Association,  
     Aggregation,  
     Description (  
        "CIM_ExtentInDiskGroup defines the StorageExtent(s) that are "  
        "located within and restricted by the Group.")  
    ]  
 class CIM_ExtentInDiskGroup : CIM_CollectedMSEs  
 {  
       [Override ("Collection"), Aggregate,  
        Description (  
         "The DiskGroup. An Extent is defined within at most one Disk"  
         "Group."),  
        Max(1)  
       ]  
    CIM_DiskGroup REF Collection;  
       [Override ("Member"), Description (  
         "The StorageExtent restricted by and participating in the "  
         "Group.")  
       ]  
    CIM_StorageExtent REF Member;  
 };  
  
 // ===================================================================  
 // GroupInDiskGroup  
 // ===================================================================  
    [Association,  
     Aggregation,  
     Description (  
        "CIM_GroupInDiskGroup describes that a DiskGroup may be "  
        "divided into smaller named Collections.")  
    ]  
 class CIM_GroupInDiskGroup : CIM_CollectedCollections  
 {  
       [Override ("Collection"), Aggregate, Description (  
         "The DiskGroup that is subsetted into smaller Collections."),  
        Max(1)  
       ]  
    CIM_DiskGroup REF Collection;  
       [Override ("CollectionInCollection"), Description (  
         "The DiskGroup that is a subset of the larger Group.")  
       ]  
    CIM_DiskGroup REF CollectionInCollection;  
 };  
  
 // ====================================================================  // ===================================================================
 // AlarmDevice  // RedundancyGroup
 // =================================================================== // ===================================================================
    [Description (    [Description (
          "An AlarmDevice is a type of Device that emits audible or "       "A class derived from LogicalElement that is a special "
          "visible indications related to a problem situation. ")       "collection of ManagedSystemElements. This collection indicates "
    ]       "that the aggregated components together provide redundancy. "
 class CIM_AlarmDevice : CIM_LogicalDevice       "All elements aggregated in a RedundancyGroup should be "
 {       "instantiations of the same object class.") ]
         [Description ("Boolean indicating that the Alarm is audible. ")]  class CIM_RedundancyGroup : CIM_LogicalElement {
    boolean AudibleAlarm;        [Key, MaxLen (256), Description (
         [Description ("Boolean indicating that the Alarm is visible. ")]          "CreationClassName indicates the name of the class or "
    boolean VisibleAlarm;          "the subclass used in the creation of an instance. When "
       [Description (          "used with the other key properties of this class, this "
         "Boolean indicating that the Alarm causes motion of the "          "property allows all instances of this class and its "
         "Device.")          "subclasses to be uniquely identified.")  ]
       ]     string CreationClassName;
    boolean MotionAlarm;        [Override("Name"),
         [Description (         Key, MaxLen (256), Description (
           "Urgency is an enumerated value that indicates the relative "        "The RedundancyGroup Name serves as the key for the "
           "frequency at which the Alarm flashes, vibrates and/or emits "        "Group's instance in an enterprise environment.") ]
           "audible tones. "),     string Name;
          Values {"Unknown", "Other", "Not Supported", "Informational",  
                "Non-Critical", "Critical", "Unrecoverable"}  
         ]  
    uint16 Urgency;  
       [Description ("The current state of the alarm."),  
        Values {"Unknown", "Off", "Steady", "Alternating"}  
       ]  
    uint16 AlarmState;  
       [Description (  
         "True indicates that the audio of an AlarmState indicator "  
         "has been disabled (i.e. muted). A disabled state here "  
         "does not imply that the AlarmState is off.")  
       ]  
    boolean AudioIndicatorIsDisabled;  
       [Description (  
         "True indicates that the visual of an AlarmState indicator "  
         "has been disabled (i.e. dimmed). A disabled state here "  
         "does not imply that the AlarmState is off.")  
       ]  
    boolean VisualIndicatorIsDisabled;  
       [Description (  
         "True indicates that the motion of an AlarmState indicator "  
         "has been disabled (i.e. stopped). A disabled state here "  
         "does not imply that the AlarmState is off.")  
       ]  
    boolean MotionIndicatorIsDisabled;  
       [Description (  
         "SetAlarmState is a method for defining the current state "  
         "of the Alarm. Its input parameter, RequestedAlarmState, is "  
         "specified using the Values list of AlarmDevice's AlarmState "  
         "property. SetAlarmState returns 0 if the request is "  
         "successfully implemented, 1 if the specified RequestedAlarm"  
         "State is not supported, and some other value if any other "  
         "error occurred. In a subclass, the set of possible return "  
         "codes should be specified using a ValueMap qualifier on the "  
         "method. The strings to which the ValueMap contents are "  
         "'translated' should be specified as a Values array "  
         "qualifier.")  
       ]  
    uint32 SetAlarmState (  
     [IN, Values {"Unknown", "Off", "Steady", "Alternating"}]  
     uint16 RequestedAlarmState);  
       [Description (  
         "SetAlarmIndicator is a method for enabling or disabling the "  
         "indicator of the AlarmState function, without changing the "  
         "current AlarmState. It has 3 input parameters, Audio"  
         "Indicator, VisualIndicator and MotionIndicator. For all of "  
         "the input parameters, a value of 0 indicates no change to "  
         "the AlarmState indicator, 1 indicates Disable, and 2 "  
         "indicates Enable. The method returns 0 if the request is "  
         "successfully implemented, 1 if the specified request is not "  
         "supported, and some other value if any other error occurred. "  
         "In a subclass, the set of possible return codes should be "  
         "specified using a ValueMap qualifier on the method. The "  
         "strings to which the ValueMap contents are 'translated' "  
         "should be specified as a Values array qualifier.")  
       ]  
    uint32 SetAlarmIndicator ([IN,  
     Values {"No Change", "Disable", "Enable"}]  
     uint16 AudioIndicator,  
     [IN, Values {"No Change", "Disable", "Enable"}]  
     uint16 VisualIndicator,  
     [IN, Values {"No Change", "Disable", "Enable"}]  
     uint16 MotionIndicator);  
       [Description (       [Description (
           "SetUrgency is a method for defining the desired urgency "          "RedundancyStatus provides information on the state of the "
           "level for the Alarm. Its input parameter, RequestedUrgency, "          "RedundancyGroup. \"Fully Redundant\" (value=2) means that "
           "is specified using the Values list of AlarmDevice's Urgency "          "all of the configured redundancy is still available; "
           "property. SetUrgency returns 0 if the request is successfully "          "\"Degraded Redundancy\" (3) means that some failures have "
           "implemented, 1 if the specified Urgency level is not "          "been experienced but some reduced amount of redundancy is "
           "supported, and some other value if any other error occurred. "          "still available; \"Redundancy Lost\" (4) means that a "
         "In a subclass, the set of possible return codes should be "          "sufficient number of failures have been experienced such "
         "specified using a ValueMap qualifier on the method. The "          "that no redundancy is available and the next failure "
         "strings to which the ValueMap contents are 'translated' "          "experienced will cause overall failure. Also, the values, "
         "should be specified as a Values array qualifier.")          "\"Other\" (1) and \"Unknown\" (0), are defined."),
         ]         Values {"Unknown", "Other", "Fully Redundant",
    uint32 SetUrgency ([IN, ValueMap {"1", "3", "4", "5", "6"},                 "Degraded Redundancy", "Redundancy Lost"} ]
     Values {"Other", "Informational", "Non-Critical", "Critical",     uint16 RedundancyStatus;
     "Unrecoverable"}] uint16 RequestedUrgency);  
 }; };
  
   
 // =================================================================== // ===================================================================
 // AssociatedAlarm  // RedundancyComponent
 // =================================================================== // ===================================================================
    [Association,     [Association, Aggregation, Description (
        "A RedundancyGroup aggregates Managed System Elements and "
        "indicates that these elements, taken together, provide "
        "redundancy. All elements aggregated in a RedundancyGroup "
        "should be instantiations of the same object class.") ]
   class CIM_RedundancyComponent : CIM_Component {
         [Override ("GroupComponent"), Aggregate,
     Description (     Description (
          "LogicalDevices may have one or more AlarmDevices "          "The RedundancyComponent association indicates that "
          "associated with them, in order to indicate problem situations. "          "'this set of fans' or 'these physical extents' participate "
          "This relationship is indicated by the AssociatedAlarm "          "in a single RedundancyGroup.") ]
          "dependency. ")     CIM_RedundancyGroup REF GroupComponent;
    ]  
 class CIM_AssociatedAlarm : CIM_Dependency  
 {  
         [Override ("Antecedent"),  
          Description ("The AlarmDevice. ")  
         ]  
    CIM_AlarmDevice REF Antecedent;  
         [Override ("Dependent"),  
          Description ("The LogicalDevice that is alarmed. ")  
         ]  
    CIM_LogicalDevice REF Dependent;  
 }; };
  
   
 // =================================================================== // ===================================================================
 // Door  // SpareGroup
 // =================================================================== // ===================================================================
    [Description (    [Description (
        "A Door is the abstraction of hardware providing access to "       "A class derived from RedundancyGroup indicating that one or "
        "the internal componentry of a System. When a Door is 'opened', "       "more of the aggregated elements can be spared. (The actual "
        "typically all accessible, moving components are stopped or "       "Spares are defined using the ActsAsSpare association.) An "
        "suspended to prevent physical harm.")       "example is the use of redundant NICs in a ComputerSystem - "
    ]       "where one NIC is primary and the other is Spare. The 'primary' "
 class CIM_Door : CIM_LogicalDevice       "NIC would be a member of the SpareGroup (associated using the "
 {       "RedundancyComponent class) and the 'other' NIC would be "
       [Description (       "associated using the ActsAsSpare relationship.") ]
         "Boolean indicating the 'open' (TRUE) or 'closed' (FALSE) "  class CIM_SpareGroup : CIM_RedundancyGroup {
         "status of the Door.")  
       ]  
    boolean Open;  
       [Description (  
         "Boolean indicating that the Door is 'locked' (TRUE) or "  
         "'unlocked' (FALSE). When the Door is locked, access to the "  
         "componentry is prevented, without the use of a physical "  
         "key or the issuance of a software unlock command.")  
       ]  
    boolean Locked;  
       [Description (  
         "When a Door is 'Open', all accessible, moving componentry "  
         "and Device operation are typically stopped. The Timeout "  
         "property provides a mechanism to event on a Door left open "  
         "for a period of time (in seconds) exceeding the property's "  
         "value."),  
        Units ("Seconds")  
       ]  
    uint32 Timeout;  
       [Description ("Date and time that the Door was last opened.") ]  
    datetime LastOpened;  
       [Description (       [Description (
         "The Capabilities of the Door. For example, information on "          "This method is forces a failover from one ManagedSystemElement "
         "whether the Door is \"Host System Lockable\" (value=2) and/or "          "to another.  There are two parameters to the Failover method, "
         "whether a key is available (value=3) are specified in this "          "FailoverFrom and FailoverTo. The FailoverFrom parameter is a "
         "property. The value 4, \"All Drives Dismounted Before "          "reference to the primary ManagedSystemElement that will become "
         "Access\", pertains to a Door on a StorageLibrary or set of "          "inactive after the method. This Element should be associated "
         "drive bays. If specified for the Door, it means that it can "          "with the SpareGroup through the RedundancyComponent relationship. "
         "not be opened unless all Media are first unloaded from the "          "The FailoverTo parameter is a reference to the ManagedSystem"
         "accessible MediaAccessDevices."),          "Element that will take over for the primary. This Element "
        Values {"Unknown", "Other", "Host System Lockable",          "should be associated with the SpareGroup through the ActsAsSpare "
              "Physical Key", "All Drives Dismounted Before Access"}          "association. Once the failover has occurred, the SpareGroup and "
       ]          "the RedundancyComponent and ActsAsSpare associations will be "
    uint16 Capabilities[];          "updated with current status.  For example, the ActsAsSpare "
           "association that contained the FailoverTo Element will "
           "be deleted and a new RedundancyComponent association instantiated "
           "in its place. 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' may "
           "also be specified in the subclass as a Values array qualifier.") ]
      uint32 Failover(
          [IN] CIM_ManagedSystemElement REF FailoverFrom,
          [IN] CIM_ManagedSystemElement REF FailoverTo);
 }; };
  
 // ===================================================================  
 // DoorAccessToPhysicalElement  
 // ===================================================================  
    [Association,  
     Description (  
        "Doors provide access to PhysicalElements for hot swap, repair "  
        "and similar activities. The entities accessed through a Door "  
        "are indicated in this relationship.")  
    ]  
 class CIM_DoorAccessToPhysicalElement : CIM_Dependency  
 {  
       [Override ("Antecedent"),  
        Description ("The Door that provides access.")  
       ]  
    CIM_Door REF Antecedent;  
       [Override ("Dependent"),  
        Description ("The PhysicalElement that is accessed.")  
       ]  
    CIM_PhysicalElement REF Dependent;  
 };  
  
 // =================================================================== // ===================================================================
 // DoorAccessToDevice  // ActsAsSpare
 // =================================================================== // ===================================================================
    [Association,    [Association,
     Description (     Description (
        "Doors provide access to PhysicalElements for hot swap, repair "       "The ActsAsSpare association indicates which elements can spare "
        "and similar activities. In turn, PhysicalElements 'Realize' "       "or replace the other aggregated elements.  The fact that a "
        "LogicalDevices. Since it may not be possible to define all the "       "spare can operate in \"hot standby\" mode is specified on an "
        "PhysicalElements that exist, and optimizing the retrieval of "       "element by element basis.") ]
        "Devices 'behind' the Door may be desirable, the DoorAccessTo"  class CIM_ActsAsSpare  {
        "Device association provides a shortcut mechanism for defining "        [Key, Description ("The SpareGroup") ]
        "the LogicalDevices ('hardware') accessed through a Door.")     CIM_SpareGroup REF Group;
    ]        [Key, Description (
 class CIM_DoorAccessToDevice : CIM_Dependency          "A ManagedSystemElement acting as a spare and participating "
 {          "in the SpareGroup.") ]
       [Override ("Antecedent"),     CIM_ManagedSystemElement REF Spare;
        Description ("The Door that provides access.")        [Description (
       ]          "HotStandby is a boolean indicating that the spare is "
    CIM_Door REF Antecedent;          "operating as a hot standby.") ]
       [Override ("Dependent"),     boolean HotStandby;
        Description ("The LogicalDevice that is accessed.")  
       ]  
    CIM_LogicalDevice REF Dependent;  
 }; };
  
   
 // =================================================================== // ===================================================================
 // MediaTransferDevice  // StorageRedundancyGroup
 // =================================================================== // ===================================================================
    [Description (    [Description (
        "A MediaTransferDevice represents hardware that moves Physical"       "A class derived from RedundancyGroup containing mass "
        "Media. It is a superclass for Devices like PickerElement, "       "storage-related redundancy information. StorageRedundancy"
        "ChangerDevice and InterLibraryPort.")       "Groups are used to protect user data.  They are made up of one "
    ]       "or more PhysicalExtents, or one or more AggregatePExtents. "
 class CIM_MediaTransferDevice : CIM_LogicalDevice       "StorageRedundancyGroups may overlap.  However, the "
 {       "underlying Extents within the overlap should not contain "
        "any check data.") ]
   class CIM_StorageRedundancyGroup : CIM_RedundancyGroup  {
         [Description (
           "The TypeOfAlgorithm specifies the algorithm used for data "
           "redundancy and reconstruction. For example, \"P+Q\" (value"
           "=5) or \"P+S\" (7) may be specified. The value of 0, is "
           "defined as \"None\" to indicate that data redundancy is not "
           "active. An inactive redundancy should only be instantiated "
           "if data striping or concatenation are active. These are "
           "indicated by the IsStriped or IsConcatentated boolean "
           "properties of this RedundancyGroup."),
          Values {"None", "Other", "Unknown", "Copy", "XOR", "P+Q",
                  "S", "P+S"},
          MappingStrings {"MIF.DMTF|Redundancy Group|001.2"} ]
      uint16 TypeOfAlgorithm;
         [Description (
           "StorageRedundancy provides additional information on the "
           "state of the RedundancyGroup, beyond the RedundancyStatus "
           "property. Information like \"Reconfig In Progress\" (value"
           "=1) or \"Redundancy Disabled\" can be specified using "
           "this property."),
          Values {"No Additional Status", "Reconfig In Progress",
                  "Data Lost", "Not Currently Configured",
                  "Protected Rebuild", "Redundancy Disabled",
                  "Unprotected Rebuild", "Recalculating", "Verifying"} ]
      uint16 StorageRedundancy;
         [Description (
           "True indicates that the data is striped across the various "
           "StorageExtents in the Group.") ]
      boolean IsStriped;
         [Description (
           "True indicates that the data is concatenated across the "
           "various StorageExtents in the Group.") ]
      boolean IsConcatenated;
 }; };
  
   
 // =================================================================== // ===================================================================
 // PickerElement  // ExtraCapacityGroup
 // =================================================================== // ===================================================================
    [Description (    [Description (
        "PickerElements represent hardware used to pick or place "       "A class derived from RedundancyGroup indicating that the "
        "PhysicalMedia from/into StorageMediaLocations.")       "aggregated elements have more capacity or capability than is "
    ]       "needed.  An example of this type of redundancy is the "
 class CIM_PickerElement : CIM_MediaTransferDevice       "installation of N+1 power supplies or fans in a system.") ]
 {  class CIM_ExtraCapacityGroup : CIM_RedundancyGroup {
       [Description (  
         "The maximum time in seconds for a PickerElement to grab "  
         "a PhysicalMedia from a StorageMediaLocation, once the "  
         "Picker has arrived at that Location. The maximum time "  
         "interval for moving a Media from one point to another is "  
         "the sum of the PickerElement's MaxPickTime, the Changer"  
         "Device's MaxTransitTime and the PickerElement's MaxPutTime."),  
        Units ("Seconds")  
       ]  
    uint32 MaxPickTime;  
       [Description (       [Description (
         "The maximum time in seconds for a PickerElement to place "          "MinNumberNeeded indicates the smallest number of elements "
         "a PhysicalMedia into a StorageMediaLocation, once the "          "that must be operational in order to have redundancy.  "
         "Picker has arrived at that Location. The maximum time "          "For example, in an N+1 redundancy relationship, "
         "interval for moving a Media from one point to another is "          "the MinNumberNeeded property should be set equal to N.") ]
         "the sum of the PickerElement's MaxPickTime, the Changer"     uint32 MinNumberNeeded;
         "Device's MaxTransitTime and the PickerElement's MaxPutTime."),  
        Units ("Seconds")  
       ]  
    uint32 MaxPutTime;  
       [Description (       [Description (
         "String describing the location in the StorageLibrary "          "Boolean indicating whether load balancing is supported by "
         "where the Picker is currently positioned.")          "the ExtraCapacityGroup.") ]
       ]     boolean LoadBalancedGroup;
    string CellLocation;  
   
 }; };
  
   
 // =================================================================== // ===================================================================
 // ChangerDevice  // MonitorResolution
 // =================================================================== // ===================================================================
    [Description (    [Description (
        "ChangerDevices represent hardware that moves PhysicalMedia "       "MonitorResolution describes the relationship between "
        "within a System, such as a StorageLibrary.")       "horizontal and vertical resolutions, refresh rate and scan "
    ]       "mode for a DesktopMonitor. The actual resolutions, etc. that "
 class CIM_ChangerDevice : CIM_MediaTransferDevice       "are in use, are the values specified in the VideoController "
 {       "object.") ]
   class CIM_MonitorResolution : CIM_Setting {
         [Override ("SettingID"),
          Key, MaxLen (256),
          Description (
           "The inherited SettingID serves as part of the key for a "
           "MonitorResolution instance.") ]
      string SettingID;
         [Description ("Monitor's horizontal resolution in Pixels."),
          Units ("Pixels"),
          ModelCorrespondence {
           "CIM_VideoController.CurrentHorizontalResolution"},
          MappingStrings {"MIF.DMTF|Monitor Resolutions|002.2"} ]
      uint32 HorizontalResolution;
         [Description ("Monitor's vertical resolution in Pixels."),
          Units ("Pixels"),
          ModelCorrespondence {
           "CIM_VideoController.CurrentVerticalResolution"},
          MappingStrings {"MIF.DMTF|Monitor Resolutions|002.3"} ]
      uint32 VerticalResolution;
       [Description (       [Description (
         "The maximum time in seconds between a PickerElement pick "          "Monitor's refresh rate in Hertz. If a range of rates is "
         "and place. It should be reported as the transit time "          "supported, use the MinRefreshRate and MaxRefreshRate "
         "between the two most physically distant StorageMedia"          "properties, and set RefreshRate (this property) to 0."),
         "Locations in a System. The maximum time interval for "         Units ("Hertz"),
         "moving a Media from one point to another is the sum of "         ModelCorrespondence {
         "the PickerElement's MaxPickTime, the ChangerDevice's Max"          "CIM_VideoController.CurrentRefreshRate"},
         "TransitTime and the PickerElement's MaxPutTime."),         MappingStrings {"MIF.DMTF|Monitor Resolutions|002.4"} ]
        Units ("Seconds")     uint32 RefreshRate;
       ]  
    uint32 MaxTransitTime;  
       [Description (       [Description (
         "Boolean set to TRUE if the Changer supports media flipping. "          "Monitor's minimum refresh rate in Hertz, when a range of "
         "Media needs to be flipped when multi-sided PhysicalMedia "          "rates is supported at the specified resolutions."),
         "are placed into a MediaAccessDevice that does NOT support "         Units ("Hertz"),
         "dual sided access.")         ModelCorrespondence {
       ]          "CIM_VideoController.MinRefreshRate"},
    boolean MediaFlipSupported;         MappingStrings {"MIF.DMTF|Monitor Resolutions|002.6"} ]
      uint32 MinRefreshRate;
       [Description (       [Description (
         "Boolean set to TRUE if an audit is currently being performed "          "Monitor's maximum refresh rate in Hertz, when a range of "
         "by the Changer.")          "rates is supported at the specified resolutions."),
       ]         Units ("Hertz"),
    boolean AuditInProgress;         ModelCorrespondence {
           "CIM_VideoController.MaxRefreshRate"},
          MappingStrings {"MIF.DMTF|Monitor Resolutions|002.7"} ]
      uint32 MaxRefreshRate;
       [Description (       [Description (
         "A count of the number of audits performed by the Changer."),          "Integer indicating whether the monitor operates in "
        Counter          "interlaced (value=5) or non-interlaced (4) mode."),
       ]         ValueMap {"1", "2", "3", "4", "5"},
    uint64 AuditsPerformed;         Values {"Other", "Unknown", "Not Supported",
                  "Non-Interlaced Operation", "Interlaced Operation"},
          ModelCorrespondence {
           "CIM_VideoController.CurrentScanMode"},
          MappingStrings {"MIF.DMTF|Monitor Resolutions|002.5"} ]
      uint16 ScanMode;
 }; };
  
   
 // =================================================================== // ===================================================================
 // PickerForChanger  // MonitorSetting
 // =================================================================== // ===================================================================
    [Association,     [Association, Description (
     Description (       "MonitorSetting associates the MonitorResolution Setting object "
        "PickerForChanger indicates the PickerElement(s) that access "       "with the DesktopMonitor to which it applies.") ]
        "StorageMediaLocations and deliver PhysicalMedia to the Changer, "  class CIM_MonitorSetting : CIM_ElementSetting {
        "for movement through the System. A Changer may have several "        [Override ("Element"), Description (
        "Pickers for faster exchange of Media.")          "The DesktopMonitor.") ]
    ]     CIM_DesktopMonitor REF Element;
 class CIM_PickerForChanger : CIM_Dependency        [Override ("Setting"), Description (
 {          "The MonitorResolution associated with the DesktopMonitor.") ]
       [Override ("Antecedent"),     CIM_MonitorResolution REF Setting;
        Description (  
         "The PickerElement that accesses StorageMediaLocations "  
         "to deliver Media to the Changer.")  
       ]  
    CIM_PickerElement REF Antecedent;  
       [Override ("Dependent"),  
        Max (1),  
        Description ("The ChangerDevice.")  
       ]  
    CIM_ChangerDevice REF Dependent;  
 }; };
  
   
 // =================================================================== // ===================================================================
 // LimitedAccessPort  // NetworkAdapterRedundancyComponent
 // =================================================================== // ===================================================================
      [Association, Description (
        "CIM_NetworkAdapterRedundancyComponent indicates the role that "
        "a NetworkAdapter plays in a ExtraCapacityGroup, providing "
        "load balancing.") ]
   class CIM_NetworkAdapterRedundancyComponent : CIM_RedundancyComponent {
         [Override("GroupComponent"), Aggregate,
          Description (
           "The RedundancyGroup representing a set of load balanced "
           "NetworkAdapters.") ]
      CIM_ExtraCapacityGroup REF GroupComponent;
         [Override("PartComponent"),
          Description (
           "The Network Adapter(s) belonging to the RedundancyGroup.") ]
      CIM_NetworkAdapter REF PartComponent;
    [Description (    [Description (
        "LimitedAccessPorts represent hardware that transports Physical"          "Indicates the scope of load balancing for the NetworkAdapters "
        "Media into or out of a System, such as a StorageLibrary. They "          "involved in the RedundancyGroup. Load balancing may be "
        "are identified as 'limited' since these Ports do not provide "          "restricted to transmitting data only (value=1), "
        "access to ALL the PhysicalMedia or StorageMediaLocations in a "          "receiving data only (value=2), or used for both transmit "
        "Library, but only to a subset.")          "and receive (value=3)."),
    ]         Values {"Unknown", "Load Balancing - Transmit Only",
 class CIM_LimitedAccessPort : CIM_MediaTransferDevice                 "Load Balancing - Receive Only", "Full Load Balancing"} ]
 {     uint16 ScopeOfBalancing;
       [Description (  
         "Boolean indicating that the Port is 'locked' (TRUE) or "  
         "'unlocked' (FALSE). When the Port is locked, access its Media "  
         "Locations is prevented without the use of a physical key, "  
         "front panel activity or the issuance of a software unlock "  
         "command.")  
       ]  
    boolean Locked;  
       [Description (  
         "When a Port is 'Extended' or 'open' (value=TRUE), its Storage"  
         "MediaLocations are accessible to a human operator. If not "  
         "extended (value=FALSE), the Locations are accessible to a "  
         "PickerElement.")  
       ]  
    boolean Extended;  
       [Description (  
         "When a LimitedAccessPort is 'Extended', all related media-"  
         "transfer componentry may be stopped. The ExtendTimeout "  
         "property provides a mechanism to event on a Port left open "  
         "for a period of time (in seconds) exceeding the property's "  
         "value."),  
        Units ("Seconds")  
       ]  
    uint32 ExtendTimeout;  
       [Description ("Date and time that the Port was last extended.") ]  
    datetime LastExtended;  
       [Counter, Description (  
         "The number of times that the LimitedAccessPort was used to "  
         "move a PhysicalMedia into the System/StorageLibrary.")  
       ]  
    uint64 ImportCount;  
       [Counter, Description (  
         "The number of times that the LimitedAccessPort was used to "  
         "move a PhysicalMedia out of the System/StorageLibrary.")  
       ]  
    uint64 ExportCount;  
       [Description (       [Description (
         "An enumeration expressing whether the Port is used for "          "Boolean indicating whether the Network Adapter is an original "
         "import into the Library/System which scopes and names it "          "primary adapter (value=1), a preferred primary adapter (2), "
         "(value=1), export from the Library/System (value=2), or "          "or both (3). Values of \"Unknown\" and \"Not Applicable\" may "
         "both (value=3)."),          "also be specified."),
        Values {"Unknown", "Import", "Export", "Both Import and Export"}         Values {"Unknown", "Original Primary", "Preferred Primary",
       ]                 "Both", "Not Applicable"} ]
    uint16 Direction;     uint16 PrimaryAdapter;
   };
  
   
   // ===================================================================
   // NetworkVirtualAdapter
   // ===================================================================
      [Association, Description (
        "NetworkVirtualAdapter describes that an instance of Network"
        "Adapter is actually the result of several Adapters "
        "participating in a load balanced RedundancyGroup.") ]
   class CIM_NetworkVirtualAdapter : CIM_LogicalIdentity {
         [Override ("SystemElement"),
          Description ("The 'virtual' NetworkAdapter.") ]
      CIM_NetworkAdapter REF SystemElement;
         [Override ("SameElement"),
          Description (
           "The ExtraCapacity RedundancyGroup that describes the load "
           "balancing. The result of the load balancing is the 'virtual' "
           "Adapter.")  ]
      CIM_ExtraCapacityGroup REF SameElement;
 }; };
  
   
 // =================================================================== // ===================================================================
 // InterLibraryPort  // VideoControllerResolution
 // =================================================================== // ===================================================================
    [Description (    [Description (
        "InterLibraryPorts represent hardware that transports Physical"       "VideoControllerResolution describes the various video modes "
        "Media between connected StorageLibraries. The LibraryExchange "       "that a VideoController can support. Video modes are defined by "
        "association identifies the connected Libraries, by identifying "       "the possible horizontal and vertical resolutions, refresh "
        "the connected InterLibraryPorts.")       "rate, scan mode and number of colors settings supported by a "
    ]       "Controller. The actual resolutions, etc. that are in use, are "
 class CIM_InterLibraryPort : CIM_MediaTransferDevice       "the values specified in the VideoController object.") ]
 {  class CIM_VideoControllerResolution : CIM_Setting {
         [Override ("SettingID"),
          Key, MaxLen (256), Description (
           "The inherited SettingID serves as part of the key for a "
           "VideoControllerResolution instance.") ]
      string SettingID;
         [Description ("Controller's horizontal resolution in Pixels."),
          Units ("Pixels"),
          ModelCorrespondence {
           "CIM_VideoController.CurrentHorizontalResolution"},
          MappingStrings {"MIF.DMTF|Monitor Resolutions|002.2"} ]
      uint32 HorizontalResolution;
         [Description ("Controller's vertical resolution in Pixels."),
          Units ("Pixels"),
          ModelCorrespondence {
           "CIM_VideoController.CurrentVerticalResolution"},
          MappingStrings {"MIF.DMTF|Monitor Resolutions|002.3"} ]
      uint32 VerticalResolution;
       [Description (       [Description (
         "Date and time that the Port was last accessed by its "          "Refresh rate in Hertz. If a range of rates is supported, use "
         "System/StorageLibrary. This value may be different "          "the MinRefreshRate and MaxRefreshRate properties, and set "
         "than that specified for the Port(s) to which this Inter"          "RefreshRate (this property) to 0."),
         "LibraryPort is connected. Connected Ports are identified "         Units ("Hertz"),
         "using the LibraryExchange association.")         ModelCorrespondence {"CIM_VideoController.CurrentRefreshRate"},
       ]         MappingStrings {"MIF.DMTF|Monitor Resolutions|002.4"} ]
    datetime LastAccessed;     uint32 RefreshRate;
       [Counter, Description (        [Description (
         "The number of times that the InterLibraryPort was used to "          "Minimum refresh rate in Hertz, when a range of rates is "
         "move a PhysicalMedia into the System/StorageLibrary.")          "supported at the specified resolutions."),
       ]         Units ("Hertz"),
    uint64 ImportCount;         ModelCorrespondence {"CIM_VideoController.MinRefreshRate"},
       [Counter, Description (         MappingStrings {"MIF.DMTF|Monitor Resolutions|002.6"} ]
         "The number of times that the InterLibraryPort was used to "     uint32 MinRefreshRate;
         "move a PhysicalMedia out of the System/StorageLibrary.")        [Description (
       ]          "Maximum refresh rate in Hertz, when a range of rates is "
    uint64 ExportCount;          "supported at the specified resolutions."),
          Units ("Hertz"),
          ModelCorrespondence {"CIM_VideoController.MaxRefreshRate"},
          MappingStrings {"MIF.DMTF|Monitor Resolutions|002.7"} ]
      uint32 MaxRefreshRate;
          [Description (          [Description (
         "An enumeration expressing whether the Port is used for "          "Integer indicating whether the Controller operates in "
         "import into the Library/System which scopes and names it "          "interlaced (value=5) or non-interlaced (4) mode."),
         "(value=1), export from the Library/System (value=2), or "         ValueMap {"1", "2", "3", "4", "5"},
         "both (value=3)."),         Values {"Other", "Unknown", "Not Supported",
        Values {"Unknown", "Import", "Export", "Both Import and Export"}                 "Non-Interlaced Operation", "Interlaced Operation"},
       ]         ModelCorrespondence {"CIM_VideoController.CurrentScanMode"},
    uint16 Direction;         MappingStrings {"MIF.DMTF|Monitor Resolutions|002.5"} ]
      uint16 ScanMode;
         [Description (
           "Number of colors supported at the current resolutions."),
          ModelCorrespondence {
           "CIM_VideoController.CurrentNumberOfColors"} ]
      uint64 NumberOfColors;
 }; };
  
   
 // =================================================================== // ===================================================================
 // LibraryExchange  // VideoSetting
 // =================================================================== // ===================================================================
    [Association,     [Association, Description (
        "VideoSetting associates the VideoControllerResolution Setting "
        "with the Controller(s) to which it applies.") ]
   class CIM_VideoSetting : CIM_ElementSetting {
         [Override ("Element"),
          Description ("The VideoController.") ]
      CIM_VideoController REF Element;
         [Override ("Setting"),
     Description (     Description (
        "LibraryExchange indicates that two StorageLibraries are "          "The resolutions, refresh rates, scan mode and number of colors "
        "connected through their InterLibraryPorts.")          "that can be set for the Controller.") ]
    ]     CIM_VideoControllerResolution REF Setting;
 class CIM_LibraryExchange : CIM_Dependency  
 {  
       [Override ("Antecedent"),  
        Description ("The InterLibraryPort of one StorageLibrary.")  
       ]  
    CIM_InterLibraryPort REF Antecedent;  
       [Override ("Dependent"),  
        Description ("The InterLibraryPort of the connected Library.")  
       ]  
    CIM_InterLibraryPort REF Dependent;  
       [Description (  
         "Enumeration indicating whether the Antecedent (value=1), "  
         "Dependent (value=2), or neither Library (value=3) currently has "  
         "access to the Port."),  
        Values {"Unknown", "Antecedent", "Dependent", "Neither"}  
       ]  
    uint16 CurrentlyAccessingPort;  
 }; };
  
   
 // =================================================================== // ===================================================================
 // LabelReader  // ExtentRedundancyComponent
 // =================================================================== // ===================================================================
    [Description (     [Association, Aggregation, Description (
        "LabelReaders represent hardware capable of scanning or reading "       "Describes the StorageExtents participating in a Storage"
        "a physical label or the NonVolatileMemory on a PhysicalMedia. "       "RedundancyGroup.") ]
        "Examples of labels include barcode and OCR tags.")  class CIM_ExtentRedundancyComponent : CIM_RedundancyComponent {
    ]        [Override ("GroupComponent"), Aggregate,
 class CIM_LabelReader : CIM_LogicalDevice         Description ("The StorageRedundancyGroup.") ]
 {     CIM_StorageRedundancyGroup REF GroupComponent;
       [Description (        [Override ("PartComponent"),  Description (
         "An array of enumerated integers describing the formats of "          "The StorageExtent participating in the RedundancyGroup.") ]
         "the labels that can be read or scanned by the LabelReader. "     CIM_StorageExtent REF PartComponent;
         "The values specified for this property correspond to "  
         "those defined for CIM_PhysicalMedia.LabelFormats."),  
         Values {"Barcode", "Radio Frequency Identification",  
              "OCR (Optical Character Recognition)",  
              "MICR (Magnetic Ink Character Recognition)",  
              "7 Character Barcode", "9 Character Barcode"},  
        ModelCorrespondence {"CIM_PhysicalMedia.LabelFormats"}  
       ]  
    uint16 SupportedFormats[];  
       [Description (  
         "The technology used by the LabelReader. One entry of the "  
         "Values array requires some explanation - \"Memory Reader\". "  
         "The latter describes the ability to access memory in a Physical"  
         "Media's packaging (for example, memory on an AIT tape). The "  
         "existence of this Memory is indicated by the MemoryWithMedia "  
         "association on the physical side, or by AssociatedMemory on "  
         "the logical side."),  
        Values {"Unknown", "Other", "Laser", "Infrared", "RF",  
              "Camera", "Memory Reader"}  
       ]  
    uint16 Technology;  
 }; };
  
   
 // =================================================================== // ===================================================================
 // AssociatedLabelReader  // PExtentRedundancyComponent
 // =================================================================== // ===================================================================
    [Association,     [Association, Aggregation, Description (
     Description (       "Describes the PhysicalExtents participating in a Storage"
        "A LogicalDevice may use or require one or more LabelReaders, to "       "RedundancyGroup.") ]
        "scan barcodes or otherwise identify entities. This relationship "  class CIM_PExtentRedundancyComponent : CIM_ExtentRedundancyComponent {
        "is described by the AssociatedLabelReader dependency. ")        [Override ("GroupComponent"), Aggregate,
    ]         Description ("The StorageRedundancyGroup.")   ]
 class CIM_AssociatedLabelReader : CIM_Dependency     CIM_StorageRedundancyGroup REF GroupComponent;
 {        [Override ("PartComponent"), Description (
       [Override ("Antecedent"),          "The PhysicalExtent participating in the RedundancyGroup.") ]
        Description ("The LabelReader.")     CIM_PhysicalExtent REF PartComponent;
       ]  
    CIM_LabelReader REF Antecedent;  
       [Override ("Dependent"),  
        Description (  
         "The Device that is dependent on the Reader Device.")  
       ]  
    CIM_LogicalDevice REF Dependent;  
 }; };
  
   
 // =================================================================== // ===================================================================
 // PickerLabelReader  // AggregateRedundancyComponent
 // =================================================================== // ===================================================================
    [Association,     [Association, Aggregation, Description (
     Description (       "Describes the AggregatePExtent in a StorageRedundancyGroup.") ]
        "PickerLabelReader is used to indicate that one or more Label"  class CIM_AggregateRedundancyComponent : CIM_ExtentRedundancyComponent {
        "Readers works in conjunction with PickerElements, to identify "        [Override ("GroupComponent"), Aggregate,
        "PhysicalMedia as they are being picked/placed.")         Description ("The StorageRedundancyGroup.")  ]
    ]     CIM_StorageRedundancyGroup REF GroupComponent;
 class CIM_PickerLabelReader : CIM_AssociatedLabelReader        [Override ("PartComponent"), Description (
 {        "The AggregatePExtent participating in the RedundancyGroup.") ]
       [Override ("Dependent"),     CIM_AggregatePExtent REF PartComponent;
        Description (  
         "The PickerElement that is dependent on the Reader Device.")  
       ]  
    CIM_PickerElement REF Dependent;  
 }; };
  
 // ===================================================================  
 // AccessLabelReader  // ==============================================================
 // ===================================================================  // DiskGroup
    [Association,  // ==============================================================
     Description (     [Description (
        "AccessLabelReader is used to indicate that one or more Label"       "A DiskGroup is a named collection of DiskDrives and the "
        "Readers works in conjunction with MediaAccessDevices, "       "StorageExtent(s) accessed via those Drives. The "
        "to identify PhysicalMedia before read/write.")       "collection is used to limit the BasedOn relationships of "
    ]       "the Extents in the DiskGroup. Extents in the Group can NOT "
 class CIM_AccessLabelReader : CIM_AssociatedLabelReader       "be BasedOn storage accessed from Drives outside of the "
 {       "Group. For example, a SoftwareVolume created 'within the "
       [Override ("Dependent"),       "DiskGroup' is restricted to be completely accessed using "
        Description (       "Drives in the Group. Actions such as 'replicate' or "
         "The MediaAccessDevice that is dependent on the Reader Device.")       "'migrate' on an Extent must operate within the scope of "
       ]       "the Extents present in the DiskGroup.") ]
    CIM_MediaAccessDevice REF Dependent;  class CIM_DiskGroup : CIM_CollectionOfMSEs {
         [Override ("CollectionID"), Key]
      string CollectionID;
 }; };
  
   
 // =================================================================== // ===================================================================
 // LabelReaderStatInfo  // DriveInDiskGroup
 // =================================================================== // ===================================================================
    [Description (     [Association, Aggregation, Description (
        "Statistics for a LabelReader, related to read successes, "       "CIM_DriveInDiskGroup defines the DiskDrive(s) that participate "
        "failures and retries.")       "in the Group.") ]
    ]  class CIM_DriveInDiskGroup : CIM_CollectedMSEs {
 class CIM_LabelReaderStatInfo : CIM_DeviceStatisticalInformation        [Override ("Collection"), Aggregate, Max (1),
 {         Description (
       [Description (          "The DiskGroup. A Drive is a member of at most one "
         "The number of successful physical label scans."),          "DiskGroup.") ]
        Counter     CIM_DiskGroup REF Collection;
       ]        [Override ("Member"), Description (
    uint64 ScanSuccesses;          "The DiskDrive in the Group.") ]
       [Description ("The number of failed physical label scans."),     CIM_DiskDrive REF Member;
        Counter  
       ]  
    uint64 ScanFailures;  
       [Description ("The number of retried physical label scans."),  
        Counter  
       ]  
    uint64 ScanRetries;  
       [Description (  
         "Method to reset the statistical counters. The method "  
         "takes one parameter as input - an integer indicating which "  
         "counter to reset. For this input parameter, 0 indicates all, "  
         "1 resets the \"Scan Successes\" counter, 2 resets the "  
         "\"Scan Failures\" counter, and 3 resets the \"Scan Retries\" "  
         "counter. The method returns 0 if successful, 1 if not supported, "  
         "and any other value if an error occurred. A method is specified "  
         "so that the Device's instrumentation can also reset its "  
         "internal processing and counters.\n"  
         "In a subclass, the set of possible return codes should be "  
         "specified in a ValueMap qualifier on the method. The strings "  
         "to which the ValueMap contents are 'translated' can be "  
         "specified as a Values array qualifier.")  
       ]  
    uint32 ResetCounter ([IN, Values {"All", "Scan Successes",  
     "Scan Failures", "Scan Retries"}] uint16 SelectedCounter);  
 }; };
  
   
 // =================================================================== // ===================================================================
 // MediaAccessStatInfo  // ExtentInDiskGroup
 // =================================================================== // ===================================================================
    [Description (     [Association, Aggregation, Description (
        "Statistics related to reading and writing at a specific "       "CIM_ExtentInDiskGroup defines the StorageExtent(s) that are "
        "MediaAccessDevice, or for a specific StorageExtent. Although "       "located within and restricted by the Group.") ]
        "the same class is used to represent this data, at the instance "  class CIM_ExtentInDiskGroup : CIM_CollectedMSEs {
        "level the object holds information for the MediaAccessDevice "        [Override ("Collection"), Aggregate, Max (1),
        "(independent of the StorageExtent), OR for the Extent "         Description (
        "(independent of its AccessDevice).")          "The DiskGroup. An Extent is defined within at most one "
    ]          "DiskGroup.") ]
 class CIM_MediaAccessStatInfo : CIM_DeviceStatisticalInformation     CIM_DiskGroup REF Collection;
 {        [Override ("Member"), Description (
       [Description ("The number of attempted read operations."),          "The StorageExtent restricted by and participating in the "
        Counter          "Group.") ]
       ]     CIM_StorageExtent REF Member;
    uint64 ReadOperations;  
       [Description ("The number of unrecoverable read operations."),  
        Counter  
       ]  
    uint64 UnrecoverableReadOperations;  
       [Description ("The number of attempted write operations."),  
        Counter  
       ]  
    uint64 WriteOperations;  
       [Description ("The number of unrecoverable write operations."),  
        Counter  
       ]  
    uint64 UnrecoverableWriteOperations;  
          [Description ("The number of recovered read operations."),  
        Counter  
       ]  
    uint64 RecoveredReadOperations;  
       [Description ("The number of recovered write operations."),  
        Counter  
       ]  
    uint64 RecoveredWriteOperations;  
       [Description ("The number of recovered seek operations."),  
        Counter  
       ]  
    uint64 RecoveredSeekOperations;  
       [Description ("The number of unrecoverable seek operations."),  
        Counter  
       ]  
    uint64 UnrecoverableSeekOperations;  
          [Description (  
         "Method to reset the statistical counters. The method takes one "  
         "parameter as input - an integer indicating which counter to "  
         "reset. For this input parameter, 0 indicates all, 1-2 and 5 "  
         "reset the 'read operation'-related counters, 3-4 and 6 reset "  
         "the 'write operation'-related counters, and 7-8 reset the "  
         "seek-related counters. The method returns 0 if "  
         "successful, 1 if not supported, and any other value if an "  
         "error occurred. A method is specified so that the Device's "  
         "instrumentation can also reset its internal processing and "  
         "counters.\n"  
         "In a subclass, the set of possible return codes should be "  
         "specified in a ValueMap qualifier on the method. The strings "  
         "to which the ValueMap contents are 'translated' can be "  
         "specified as a Values array qualifier.")  
       ]  
    uint32 ResetCounter ([IN, Values {"All", "Read Operations",  
     "Unrecoverable Read Operations", "Write Operations",  
     "Unrecoverable Write Operations", "Recovered Read Operations",  
     "Recovered Write Operations", "Recovered Seeks",  
     "Unrecoverable Seeks"}] uint16 SelectedCounter);  
 }; };
  
   
 // =================================================================== // ===================================================================
 // PickerStatInfo  // GroupInDiskGroup
 // =================================================================== // ===================================================================
    [Description (     [Association, Aggregation, Description (
        "Statistics for a PickerElement, related to pick/put successes, "       "CIM_GroupInDiskGroup describes that a DiskGroup may be "
        "retries and failures.")       "divided into smaller named Collections.") ]
    ]  class CIM_GroupInDiskGroup : CIM_CollectedCollections {
 class CIM_PickerStatInfo : CIM_DeviceStatisticalInformation        [Override ("Collection"), Aggregate, Max (1),
 {         Description (
       [Description ("The number of successful picks."),          "The DiskGroup that is subsetted into smaller "
        Counter          "Collections.") ]
       ]     CIM_DiskGroup REF Collection;
    uint64 PickSuccesses;        [Override ("CollectionInCollection"), Description (
       [Description ("The number of failed picks."),          "The DiskGroup that is a subset of the larger Group.") ]
        Counter     CIM_DiskGroup REF CollectionInCollection;
       ]  
    uint64 PickFailures;  
       [Description ("The number of retried picks."),  
        Counter  
       ]  
    uint64 PickRetries;  
       [Description ("The number of successful puts."),  
        Counter  
       ]  
    uint64 PutSuccesses;  
       [Description ("The number of failed puts."),  
        Counter  
       ]  
    uint64 PutFailures;  
       [Description ("The number of retried puts."),  
        Counter  
       ]  
    uint64 PutRetries;  
       [Description (  
         "Method to reset the statistical counters. The method takes one "  
         "parameter as input - an integer indicating which counter to "  
         "reset. For this input parameter, 0 indicates all, 1-3 reset "  
         "the 'pick'-related counters, and 4-6 reset the 'put'-related "  
         "counters. The method returns 0 if successful, 1 if not "  
         "supported, and any other value if an error occurred. A "  
         "method is specified so that the Device's instrumentation can "  
         "also reset its internal pocessing and counters.\n"  
         "In a subclass, the set of possible return codes should be "  
         "specified in a ValueMap qualifier on the method. The strings "  
         "to which the ValueMap contents are 'translated' can be "  
         "specified as a Values array qualifier.")  
       ]  
    uint32 ResetCounter ([IN, Values {"All", "Pick Successes",  
     "Pick Failures", "Pick Retries", "Put Successes",  
     "Put Failures", "Put Retries"}] uint16 SelectedCounter);  
 }; };
  
   
 // =================================================================== // ===================================================================
 // MessageLog // MessageLog
 // =================================================================== // ===================================================================
Line 10413 
Line 9191 
        "register or chronicle. The object describes the existence of "        "register or chronicle. The object describes the existence of "
        "the log and its characteristics. Several methods are defined "        "the log and its characteristics. Several methods are defined "
        "for retrieving, writing and deleting log entries, and "        "for retrieving, writing and deleting log entries, and "
        "maintaining the log.")       "maintaining the log.") ]
    ]  class CIM_MessageLog : CIM_LogicalElement {
 class CIM_MessageLog : CIM_LogicalElement  
 {  
       [Key, MaxLen (256),       [Key, MaxLen (256),
        Description (        Description (
         "CreationClassName indicates the name of the class or "         "CreationClassName indicates the name of the class or "
         "the subclass used in the creation of an instance. When "         "the subclass used in the creation of an instance. When "
         "used with the other key properties of this class, this "         "used with the other key properties of this class, this "
         "property allows all instances of this class and its "         "property allows all instances of this class and its "
         "subclasses to be uniquely identified.")          "subclasses to be uniquely identified.")  ]
       ]  
    string CreationClassName;    string CreationClassName;
       [Override ("Name"),       [Override ("Name"),
        Key, MaxLen (256),        Key, MaxLen (256),
        Description (        Description (
         "The inherited Name serves as part of the key (a unique "         "The inherited Name serves as part of the key (a unique "
         "identifier) for the MessageLog instance.")          "identifier) for the MessageLog instance.") ]
       ]  
    string Name;    string Name;
       [Description (       [Description (
         "An array of integers indicating the Log capabilities. "         "An array of integers indicating the Log capabilities. "
Line 10448 
Line 9222 
              "Variable Formats for Records",              "Variable Formats for Records",
              "Can Flag Records for Overwrite"},              "Can Flag Records for Overwrite"},
        ModelCorrespondence {        ModelCorrespondence {
              "CIM_MessageLog.CapabilitiesDescriptions"}          "CIM_MessageLog.CapabilitiesDescriptions"}  ]
       ]  
    uint16 Capabilities[];    uint16 Capabilities[];
       [Description (       [Description (
         "An array of free-form strings providing more detailed "         "An array of free-form strings providing more detailed "
Line 10458 
Line 9231 
         "is related to the entry in the Capabilities array that "         "is related to the entry in the Capabilities array that "
         "is located at the same index."),         "is located at the same index."),
        ArrayType ("Indexed"),        ArrayType ("Indexed"),
        ModelCorrespondence {"CIM_MessageLog.Capabilities"}         ModelCorrespondence {"CIM_MessageLog.Capabilities"} ]
       ]  
    string CapabilitiesDescriptions[];    string CapabilitiesDescriptions[];
       [Description (       [Description (
         "The maximum size, in bytes, to which the Log can grow. "         "The maximum size, in bytes, to which the Log can grow. "
         "If there is no maximum, then MaxLogSize should be set "         "If there is no maximum, then MaxLogSize should be set "
         "to 0."),         "to 0."),
        Units ("Bytes")         Units ("Bytes") ]
       ]  
    uint64 MaxLogSize;    uint64 MaxLogSize;
       [Description (       [Description (
         "The size of the Log header, in bytes, if one is "         "The size of the Log header, in bytes, if one is "
Line 10477 
Line 9248 
         "of the first Log entry. Note that this property is NOT the "         "of the first Log entry. Note that this property is NOT the "
         "size of the header for an individual Log entry. The latter "         "size of the header for an individual Log entry. The latter "
         "is described by the property, SizeOfRecordHeader."),         "is described by the property, SizeOfRecordHeader."),
        Units ("Bytes")         Units ("Bytes") ]
       ]  
    uint64 SizeOfHeader;    uint64 SizeOfHeader;
       [Description (       [Description (
         "If the SizeOfHeader property is non-zero, this property "         "If the SizeOfHeader property is non-zero, this property "
         "describes the structure and format of the Log header. It "         "describes the structure and format of the Log header. It "
         "is a free-form string. If the SizeOfHeader property is 0, "         "is a free-form string. If the SizeOfHeader property is 0, "
         "then the information in this property is undefined.")          "then the information in this property is undefined.") ]
       ]  
    string HeaderFormat;    string HeaderFormat;
       [Description (       [Description (
         "Maximum size, in bytes, to which an individual Log "         "Maximum size, in bytes, to which an individual Log "
Line 10495 
Line 9264 
         "include a 7, then the Log only supports fixed length "         "include a 7, then the Log only supports fixed length "
         "entries. The size of these entries is described by "         "entries. The size of these entries is described by "
         "this property."),         "this property."),
        Units ("Bytes")         Units ("Bytes") ]
       ]  
    uint64 MaxRecordSize;    uint64 MaxRecordSize;
       [Description (       [Description (
         "The size of the header for the Log's individual entries, "         "The size of the header for the Log's individual entries, "
Line 10509 
Line 9277 
         "records in the Log, while the SizeOfHeader property "         "records in the Log, while the SizeOfHeader property "
         "describes the Log's overall header, typically located at "         "describes the Log's overall header, typically located at "
         "the start of the MessageLog."),         "the start of the MessageLog."),
        Units ("Bytes")         Units ("Bytes") ]
       ]  
    uint64 SizeOfRecordHeader;    uint64 SizeOfRecordHeader;
       [Description (       [Description (
         "If the SizeOfRecordHeader property is non-zero, this "         "If the SizeOfRecordHeader property is non-zero, this "
         "property describes the structure and format of the "         "property describes the structure and format of the "
         "record headers. It is a free-form string. If the "         "record headers. It is a free-form string. If the "
         "SizeOfRecordHeader property is 0, then the information "         "SizeOfRecordHeader property is 0, then the information "
         "in this property is undefined.")          "in this property is undefined.") ]
       ]  
    string RecordHeaderFormat;    string RecordHeaderFormat;
       [Description (       [Description (
         "Maximum number of records that can be captured in "         "Maximum number of records that can be captured in "
Line 10526 
Line 9292 
         "specified. Note that when the Capabilities array "         "specified. Note that when the Capabilities array "
         "indicates that variable length records are supported "         "indicates that variable length records are supported "
         "(value=7), then it is possible that this maximum may "         "(value=7), then it is possible that this maximum may "
         "not be achieved.")          "not be achieved.") ]
       ]  
    uint64 MaxNumberOfRecords;    uint64 MaxNumberOfRecords;
       [Description (       [Description (
         "Current number of entries (records) in the Log."),         "Current number of entries (records) in the Log."),
        Gauge         Gauge ]
       ]  
    uint64 CurrentNumberOfRecords;    uint64 CurrentNumberOfRecords;
       [Description (       [Description (
         "An enumeration describing the behavior of the Log, when "         "An enumeration describing the behavior of the Log, when "
Line 10566 
Line 9330 
              "Never Overwrite"},              "Never Overwrite"},
        ModelCorrespondence {"CIM_MessageLog.OtherPolicyDescription",        ModelCorrespondence {"CIM_MessageLog.OtherPolicyDescription",
              "CIM_MessageLog.TimeWhenOutdated",              "CIM_MessageLog.TimeWhenOutdated",
              "CIM_MessageLog.PercentageNearFull"}          "CIM_MessageLog.PercentageNearFull"} ]
       ]  
    uint16 OverwritePolicy;    uint16 OverwritePolicy;
       [Description (       [Description (
         "When the OverwritePolicy specifies a value of 1 "         "When the OverwritePolicy specifies a value of 1 "
         "(\"Other\"), the Log's behavior can be explained "         "(\"Other\"), the Log's behavior can be explained "
         "using this property. If OverwritePolicy is not 1, "         "using this property. If OverwritePolicy is not 1, "
         "then this property's contents are undefined."),         "then this property's contents are undefined."),
        ModelCorrespondence {"CIM_MessageLog.OverwritePolicy"}         ModelCorrespondence {"CIM_MessageLog.OverwritePolicy"} ]
       ]  
    string OtherPolicyDescription;    string OtherPolicyDescription;
       [Description (       [Description (
         "If the OverwritePolicy is based on 'outdated' records "         "If the OverwritePolicy is based on 'outdated' records "
         "(values 4 or 5), this property defines when a Log entry "         "(values 4 or 5), this property defines when a Log entry "
         "is considered to be outdated - either by time interval or "         "is considered to be outdated - either by time interval or "
         "at a specific date and time."),         "at a specific date and time."),
        ModelCorrespondence {"CIM_MessageLog.OverwritePolicy"}         ModelCorrespondence {"CIM_MessageLog.OverwritePolicy"} ]
       ]  
    datetime TimeWhenOutdated;    datetime TimeWhenOutdated;
       [Description (       [Description (
         "If the OverwritePolicy is based on clearing records "         "If the OverwritePolicy is based on clearing records "
Line 10591 
Line 9352 
         "the record capacity (in percentage) that is considered to "         "the record capacity (in percentage) that is considered to "
         "be 'near full'."),         "be 'near full'."),
        Units ("Percent"),        Units ("Percent"),
        ModelCorrespondence {"CIM_MessageLog.OverwritePolicy"}         ModelCorrespondence {"CIM_MessageLog.OverwritePolicy"} ]
       ]  
    uint8 PercentageNearFull;    uint8 PercentageNearFull;
       [Description (       [Description (
         "An enumeration describing the last change to the "         "An enumeration describing the last change to the "
         "MessageLog."),         "MessageLog."),
        Values {"Unknown", "Add", "Delete", "Modify", "Log Cleared"}         Values {"Unknown", "Add", "Delete", "Modify", "Log Cleared"} ]
       ]  
    uint16 LastChange;    uint16 LastChange;
       [Description (       [Description (
         "When a change is made to the Log, the date/time of "         "When a change is made to the Log, the date/time of "
         "that modification is captured. This property could be "         "that modification is captured. This property could be "
         "used to event against any update to the MessageLog.")          "used to event against any update to the MessageLog.") ]
       ]  
    datetime TimeOfLastChange;    datetime TimeOfLastChange;
       [Description (       [Description (
         "When a change is made to the Log, the record number that "         "When a change is made to the Log, the record number that "
         "was modified is captured.")          "was modified is captured.") ]
       ]  
    uint64 RecordLastChanged;    uint64 RecordLastChanged;
       [Description (       [Description (
         "Boolean indicating that the Log is currently frozen and "         "Boolean indicating that the Log is currently frozen and "
         "modifications are not allowed.")          "modifications are not allowed.") ]
       ]  
    boolean IsFrozen;    boolean IsFrozen;
       [Description (       [Description (
         "An enumeration describing the character set used to record "         "An enumeration describing the character set used to record "
Line 10624 
Line 9380 
        Values {"Unknown", "Other", "ASCII", "Unicode", "ISO2022",        Values {"Unknown", "Other", "ASCII", "Unicode", "ISO2022",
              "ISO8859", "Extended UNIX Code", "UTF-8", "UCS-2",              "ISO8859", "Extended UNIX Code", "UTF-8", "UCS-2",
              "Bitmapped Data", "OctetString",              "Bitmapped Data", "OctetString",
              "Defined by Individual Records"}                 "Defined by Individual Records"} ]
       ]  
    uint16 CharacterSet;    uint16 CharacterSet;
   
       [Description (       [Description (
         "Requests that the MessageLog be cleared of all entries. "         "Requests that the MessageLog be cleared of all entries. "
         "The return value should be 0 if the request was successfully "         "The return value should be 0 if the request was successfully "
Line 10639 
Line 9393 
         "be described using a ValueMap qualifier on the method. The "         "be described using a ValueMap qualifier on the method. The "
         "strings to which the ValueMap contents are 'translated' may "         "strings to which the ValueMap contents are 'translated' may "
         "also be specified in the subclass as a Values array "         "also be specified in the subclass as a Values array "
         "qualifier.")          "qualifier.")  ]
       ]  
    uint32 ClearLog();    uint32 ClearLog();
   
       [Description (       [Description (
         "Requests that an iteration of the MessageLog be established "         "Requests that an iteration of the MessageLog be established "
         "and that the iterator be set to the first entry in the Log. "         "and that the iterator be set to the first entry in the Log. "
Line 10662 
Line 9414 
         "a subclass, the set of possible return codes could be specified, "         "a subclass, the set of possible return codes could be specified, "
         "using a ValueMap qualifier on the method. The strings to which "         "using a ValueMap qualifier on the method. The strings to which "
         "the ValueMap contents are 'translated' may also be specified "         "the ValueMap contents are 'translated' may also be specified "
         "in the subclass as a Values array qualifier.")          "in the subclass as a Values array qualifier.")  ]
       ]     uint32 PositionToFirstRecord (
    uint32 PositionToFirstRecord ([OUT] string IterationIdentifier);        [OUT] string IterationIdentifier);
   
       [Description (       [Description (
         "Requests that the Log's iteration identifier be advanced or "         "Requests that the Log's iteration identifier be advanced or "
         "retreated a specific number of records, or set to the "         "retreated a specific number of records, or set to the "
Line 10698 
Line 9449 
         "be described using a ValueMap qualifier on the method. The "         "be described using a ValueMap qualifier on the method. The "
         "strings to which the ValueMap contents are 'translated' may "         "strings to which the ValueMap contents are 'translated' may "
         "also be specified in the subclass as a Values array "         "also be specified in the subclass as a Values array "
         "qualifier.")          "qualifier.")  ]
       ]  
    uint32 PositionAtRecord (    uint32 PositionAtRecord (
     [IN, OUT] string IterationIdentifier,     [IN, OUT] string IterationIdentifier,
     [IN, Description ("Advancing or retreating the IterationIdentifier "     [IN, Description ("Advancing or retreating the IterationIdentifier "
Line 10711 
Line 9461 
         "number into the RecordNumber parameter.") ]         "number into the RecordNumber parameter.") ]
         boolean MoveAbsolute,         boolean MoveAbsolute,
     [IN, OUT] sint64 RecordNumber);     [IN, OUT] sint64 RecordNumber);
   
       [Description (       [Description (
         "Requests that the record indicated by the IterationIdentifier "         "Requests that the record indicated by the IterationIdentifier "
         "be retrieved from the MessageLog. After retrieval, the Iteration"         "be retrieved from the MessageLog. After retrieval, the Iteration"
Line 10734 
Line 9483 
         "set of possible return codes could be specified, using a "         "set of possible return codes could be specified, using a "
         "ValueMap qualifier on the method. The strings to which the "         "ValueMap qualifier on the method. The strings to which the "
         "ValueMap contents are 'translated' may also be specified in "         "ValueMap contents are 'translated' may also be specified in "
         "the subclass as a Values array qualifier.")          "the subclass as a Values array qualifier.")  ]
       ]  
    uint32 GetRecord (    uint32 GetRecord (
     [IN, OUT] string IterationIdentifier,     [IN, OUT] string IterationIdentifier,
     [IN, Description ("Boolean indicating that the Iteration"     [IN, Description ("Boolean indicating that the Iteration"
         "Identifier should be advanced to the next record, after "         "Identifier should be advanced to the next record, after "
         "retrieving the current Log entry.") ] boolean PositionToNext,             "retrieving the current Log entry.") ]
          boolean PositionToNext,
     [OUT] uint64 RecordNumber,     [OUT] uint64 RecordNumber,
     [OUT] uint8 RecordData[]);     [OUT] uint8 RecordData[]);
   
       [Description (       [Description (
         "Requests that the record indicated by the IterationIdentifier "         "Requests that the record indicated by the IterationIdentifier "
         "be deleted from the MessageLog. After deletion, the Iteration"         "be deleted from the MessageLog. After deletion, the Iteration"
Line 10771 
Line 9519 
         "be described using a ValueMap qualifier on the method. The "         "be described using a ValueMap qualifier on the method. The "
         "strings to which the ValueMap contents are 'translated' may "         "strings to which the ValueMap contents are 'translated' may "
         "also be specified in the subclass as a Values array "         "also be specified in the subclass as a Values array "
         "qualifier.")          "qualifier.")  ]
       ]  
    uint32 DeleteRecord (    uint32 DeleteRecord (
     [IN, OUT] string IterationIdentifier,     [IN, OUT] string IterationIdentifier,
     [IN, Description ("Boolean that when set to TRUE requests the "     [IN, Description ("Boolean that when set to TRUE requests the "
Line 10782 
Line 9529 
         boolean PositionToNext,         boolean PositionToNext,
     [OUT] uint64 RecordNumber,     [OUT] uint64 RecordNumber,
     [OUT] uint8 RecordData[]);     [OUT] uint8 RecordData[]);
   
       [Description (       [Description (
         "Requests that a record be inserted at the Log position "         "Requests that a record be inserted at the Log position "
         "indicated by the IterationIdentifier. The entry's data is "         "indicated by the IterationIdentifier. The entry's data is "
Line 10807 
Line 9553 
         "be described using a ValueMap qualifier on the method. The "         "be described using a ValueMap qualifier on the method. The "
         "strings to which the ValueMap contents are 'translated' may "         "strings to which the ValueMap contents are 'translated' may "
         "also be specified in the subclass as a Values array "         "also be specified in the subclass as a Values array "
         "qualifier.")          "qualifier.")  ]
       ]  
    uint32 WriteRecord (    uint32 WriteRecord (
     [IN, OUT] string IterationIdentifier,     [IN, OUT] string IterationIdentifier,
     [IN, Description ("Boolean indicating that the Iteration"     [IN, Description ("Boolean indicating that the Iteration"
Line 10816 
Line 9561 
         "writing the Log entry.") ] boolean PositionToNext,         "writing the Log entry.") ] boolean PositionToNext,
     [IN] uint8 RecordData[],     [IN] uint8 RecordData[],
     [OUT] uint64 RecordNumber);     [OUT] uint64 RecordNumber);
   
       [Description (       [Description (
         "Requests that an iteration of the Log, identified by the "         "Requests that an iteration of the Log, identified by the "
         "IterationIdentifier input parameter, be stopped. The "         "IterationIdentifier input parameter, be stopped. The "
Line 10827 
Line 9571 
         "specified, using a ValueMap qualifier on the method. The "         "specified, using a ValueMap qualifier on the method. The "
         "strings to which the ValueMap contents are 'translated' "         "strings to which the ValueMap contents are 'translated' "
         "may also be specified in the subclass as a Values array "         "may also be specified in the subclass as a Values array "
         "qualifier.")          "qualifier.")  ]
       ]     uint32 CancelIteration (
    uint32 CancelIteration ([IN] string IterationIdentifier);        [IN] string IterationIdentifier);
   
       [Description (       [Description (
         "Requests that the MessageLog be placed in a frozen state "         "Requests that the MessageLog be placed in a frozen state "
         "(\"Freeze\" input parameter = TRUE) or 'unfrozen' (= FALSE). "         "(\"Freeze\" input parameter = TRUE) or 'unfrozen' (= FALSE). "
Line 10846 
Line 9589 
         "be described using a ValueMap qualifier on the method. The "         "be described using a ValueMap qualifier on the method. The "
         "strings to which the ValueMap contents are 'translated' may "         "strings to which the ValueMap contents are 'translated' may "
         "also be specified in the subclass as a Values array "         "also be specified in the subclass as a Values array "
         "qualifier.")          "qualifier.")  ]
       ]     uint32 FreezeLog(
    uint32 FreezeLog([IN] boolean Freeze);        [IN] boolean Freeze);
   
       [Description (       [Description (
         "Requests that the record indicated by the IterationIdentifier "         "Requests that the record indicated by the IterationIdentifier "
         "be flagged as overwriteable. This method is only supported "         "be flagged as overwriteable. This method is only supported "
Line 10872 
Line 9614 
         "subclass, the set of possible return codes could be specified, "         "subclass, the set of possible return codes could be specified, "
         "using a ValueMap qualifier on the method. The strings to which "         "using a ValueMap qualifier on the method. The strings to which "
         "the ValueMap contents are 'translated' may also be specified "         "the ValueMap contents are 'translated' may also be specified "
         "in the subclass as a Values array qualifier.")          "in the subclass as a Values array qualifier.")  ]
       ]  
    uint32 FlagRecordForOverwrite (    uint32 FlagRecordForOverwrite (
     [IN, OUT] string IterationIdentifier,     [IN, OUT] string IterationIdentifier,
     [IN, Description ("Boolean indicating that the Iteration"     [IN, Description ("Boolean indicating that the Iteration"
         "Identifier should be advanced to the next record, after "         "Identifier should be advanced to the next record, after "
         "updating the current Log entry.") ] boolean PositionToNext,             "updating the current Log entry.") ]
          boolean PositionToNext,
     [OUT] uint64 RecordNumber);     [OUT] uint64 RecordNumber);
 }; };
  
   
 // =================================================================== // ===================================================================
 // LogRecord // LogRecord
 // =================================================================== // ===================================================================
   
    [Description (    [Description (
        "The LogRecord object can describe the definitional format for "        "The LogRecord object can describe the definitional format for "
        "entries in a MessageLog, or can be used to instantiate the "        "entries in a MessageLog, or can be used to instantiate the "
Line 10898 
Line 9640 
        "property (such as RecordData) without semantics.\n"        "property (such as RecordData) without semantics.\n"
        "Definitional formats for LogRecords could be specified by "        "Definitional formats for LogRecords could be specified by "
        "establishing a naming convention for the RecordID and Message"        "establishing a naming convention for the RecordID and Message"
        "Timestamp key properties.")       "Timestamp key properties.")  ]
    ]  class CIM_LogRecord : CIM_ManagedElement {
 class CIM_LogRecord : CIM_ManagedElement  
 {  
         [Propagated("CIM_MessageLog.CreationClassName"),         [Propagated("CIM_MessageLog.CreationClassName"),
          Key, MaxLen (256),          Key, MaxLen (256),
          Description ("The scoping Log's CreationClassName.") ]          Description ("The scoping Log's CreationClassName.") ]
Line 10916 
Line 9656 
         "the subclass used in the creation of an instance. When "         "the subclass used in the creation of an instance. When "
         "used with the other key properties of this class, this "         "used with the other key properties of this class, this "
         "property allows all instances of this class and its "         "property allows all instances of this class and its "
         "subclasses to be uniquely identified.")          "subclasses to be uniquely identified.")  ]
       ]  
    string CreationClassName;    string CreationClassName;
       [Key, MaxLen (256),       [Key, MaxLen (256),
        Description (        Description (
Line 10928 
Line 9667 
         "values only, useful to track position when iterating through "         "values only, useful to track position when iterating through "
         "a Log. On the other hand, RecordID is truly an identifier "         "a Log. On the other hand, RecordID is truly an identifier "
         "for an instance of LogRecord. It may be set to the record's "         "for an instance of LogRecord. It may be set to the record's "
         "ordinal position, but this is not required.")          "ordinal position, but this is not required.") ]
       ]  
    string RecordID;    string RecordID;
       [Key, Description (       [Key, Description (
         "A LogRecord's key structure includes a timestamp for "         "A LogRecord's key structure includes a timestamp for "
         "the entry.")          "the entry.") ]
       ]  
    datetime MessageTimestamp;    datetime MessageTimestamp;
       [Description (       [Description (
         "A free-form string describing the LogRecord's data structure.")          "A free-form string describing the LogRecord's data structure.") ]
       ]  
    string DataFormat;    string DataFormat;
 }; };
  
   
 // =================================================================== // ===================================================================
 // RecordInLog // RecordInLog
 // =================================================================== // ===================================================================
    [Association, Aggregation,     [Association, Aggregation, Description (
     Description (  
        "RecordInLog describes the aggregation or location of Log "        "RecordInLog describes the aggregation or location of Log "
        "entries within a MessageLog.")       "entries within a MessageLog.") ]
    ]  class CIM_RecordInLog  {
 class CIM_RecordInLog  
 {  
       [Key, Aggregate, Min (1), Max (1),       [Key, Aggregate, Min (1), Max (1),
        Description ("The Message Log.")         Description ("The Message Log.")  ]
       ]  
    CIM_MessageLog REF MessageLog;    CIM_MessageLog REF MessageLog;
       [Key, Weak, Description (       [Key, Weak, Description (
         "The Log entry contained within the MessageLog.")          "The Log entry contained within the MessageLog.") ]
       ]  
    CIM_LogRecord REF LogRecord;    CIM_LogRecord REF LogRecord;
 }; };
  
   
 // =================================================================== // ===================================================================
 // LogInDeviceFile // LogInDeviceFile
 // =================================================================== // ===================================================================
Line 10971 
Line 9704 
        "streams. In fact, a single Log may use each of these mechanisms "        "streams. In fact, a single Log may use each of these mechanisms "
        "to output or capture its contents. The LogInDeviceFile "        "to output or capture its contents. The LogInDeviceFile "
        "association describes a Log outputting to a raw I/O stream "        "association describes a Log outputting to a raw I/O stream "
        "DeviceFile - for example, a serial port on a UNIX system.")       "DeviceFile - for example, a serial port on a UNIX system.") ]
    ]  class CIM_LogInDeviceFile : CIM_Dependency {
 class CIM_LogInDeviceFile : CIM_Dependency  
 {  
       [Override ("Antecedent"), Description (       [Override ("Antecedent"), Description (
         "The I/O stream DeviceFile.")          "The I/O stream DeviceFile.") ]
       ]  
    CIM_DeviceFile REF Antecedent;    CIM_DeviceFile REF Antecedent;
       [Override ("Dependent"),       [Override ("Dependent"),
        Description ("The MessageLog outputting to the DeviceFile.")         Description ("The MessageLog outputting to the DeviceFile.") ]
       ]  
    CIM_MessageLog REF Dependent;    CIM_MessageLog REF Dependent;
 }; };
  
Line 10994 
Line 9723 
        "storage areas such as disks or memory, or output as raw I/O "        "storage areas such as disks or memory, or output as raw I/O "
        "streams. In fact, a single Log may use each of these mechanisms "        "streams. In fact, a single Log may use each of these mechanisms "
        "to output or capture its contents. The LogInDataFile "        "to output or capture its contents. The LogInDataFile "
        "association describes a Log stored as a DataFile.")       "association describes a Log stored as a DataFile.") ]
    ]  class CIM_LogInDataFile : CIM_Dependency {
 class CIM_LogInDataFile : CIM_Dependency  
 {  
       [Override ("Antecedent"), Description (       [Override ("Antecedent"), Description (
         "The DataFile.")          "The DataFile.") ]
       ]  
    CIM_DataFile REF Antecedent;    CIM_DataFile REF Antecedent;
       [Override ("Dependent"),       [Override ("Dependent"),
        Description ("The MessageLog residing in the DataFile.")         Description ("The MessageLog residing in the DataFile.") ]
       ]  
    CIM_MessageLog REF Dependent;    CIM_MessageLog REF Dependent;
 }; };
  
   
 // =================================================================== // ===================================================================
 // LogInStorage // LogInStorage
 // =================================================================== // ===================================================================
Line 11019 
Line 9745 
        "association describes a Log located in a specially allocated "        "association describes a Log located in a specially allocated "
        "portion of a StorageExtent. The offset of the Log, within "        "portion of a StorageExtent. The offset of the Log, within "
        "the Extent, is defined using a property of the association, "        "the Extent, is defined using a property of the association, "
        "StartingOffset.")       "StartingOffset.") ]
    ]  class CIM_LogInStorage : CIM_Dependency {
 class CIM_LogInStorage : CIM_Dependency  
 {  
       [Override ("Antecedent"), Description ("The StorageExtent.") ]       [Override ("Antecedent"), Description ("The StorageExtent.") ]
    CIM_StorageExtent REF Antecedent;    CIM_StorageExtent REF Antecedent;
       [Override ("Dependent"),       [Override ("Dependent"),
        Description ("The MessageLog located within the Extent.")         Description ("The MessageLog located within the Extent.") ]
       ]  
    CIM_MessageLog REF Dependent;    CIM_MessageLog REF Dependent;
       [Description (       [Description (
         "StartingOffset indicates where in the Extent that the Log "         "StartingOffset indicates where in the Extent that the Log "
         "begins.")          "begins.") ]
       ]  
    uint64 StartingOffset;    uint64 StartingOffset;
 }; };
  
   
 // =================================================================== // ===================================================================
 // UseOfMessageLog // UseOfMessageLog
 // =================================================================== // ===================================================================
Line 11044 
Line 9767 
        "informational data within MessageLogs. The use of a Log to "        "informational data within MessageLogs. The use of a Log to "
        "hold a ManagedSystemElement's data is described by this "        "hold a ManagedSystemElement's data is described by this "
        "association. The type of Element data captured by the Log "        "association. The type of Element data captured by the Log "
        "can be specified using the RecordedData string property.")       "can be specified using the RecordedData string property.") ]
    ]  class CIM_UseOfMessageLog : CIM_Dependency {
 class CIM_UseOfMessageLog : CIM_Dependency  
 {  
       [Override ("Antecedent"), Description ("The MessageLog.") ]       [Override ("Antecedent"), Description ("The MessageLog.") ]
    CIM_MessageLog REF Antecedent;    CIM_MessageLog REF Antecedent;
       [Override ("Dependent"), Description (       [Override ("Dependent"), Description (
         "The ManagedSystemElement whose information is recorded in "         "The ManagedSystemElement whose information is recorded in "
         "the MessageLog.")          "the MessageLog.") ]
       ]  
    CIM_ManagedSystemElement REF Dependent;    CIM_ManagedSystemElement REF Dependent;
       [Description (       [Description (
         "A free-form string describing the use of the Log by the "         "A free-form string describing the use of the Log by the "
         "ManagedSystemElement.")          "ManagedSystemElement.") ]
       ]  
    string RecordedData;    string RecordedData;
 }; };
  
   
 // =================================================================== // ===================================================================
 // end of file // end of file
 // =================================================================== // ===================================================================


Legend:
Removed from v.1.1  
changed lines
  Added in v.1.2

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2