// Copyright (c) 2005 DMTF.  All rights reserved.
   [Version ( "2.11.0" ), 
    UMLPackagePath ( "CIM::System::Diagnostics" ), 
    Description ( 
       "A snapshot of the properties in the DiagnosticSetting instance "
       "that was used when the Diagnostic was run." )]
class CIM_DiagnosticSettingRecord : CIM_DiagnosticRecord {

      [Description ( 
          "When this flag is true, the test will halt after finding "
          "the first error." )]
   boolean HaltOnError;

      [Description ( 
          "When this flag is true, the test software should attempt "
          "to run in an accelerated fashion either by reducing the "
          "coverage or number of tests performed." )]
   boolean QuickMode;

      [Description ( 
          "The requested percentage of coverage for the diagnostic "
          "service. For example, a hard drive scan test could be "
          "asked to run at 50%. Permissible values for this "
          "property range from 0 to 100." ), 
       Units ( "Percent" ), 
       MinValue ( 0 ), 
       MaxValue ( 100 )]
   uint8 PercentOfTestCoverage;

      [Description ( 
          "Array entries contain parameters corresponding to "
          "entries in the LoopControl array, limiting the number of "
          "times a test should be repeated with a single invocation "
          "of RunTest by a CIM client." ), 
       ArrayType ( "Indexed" )]
   string LoopControlParameter[];

      [Description ( 
          "LoopControl, used in conjunction with "
          "LoopControlParameter, sets one or more loop control "
          "mechanisms that limits the number of times a test should "
          "be repeated with a single invocation of RunTest by a CIM "
          "client. There is an array-positional correspondence "
          "between LoopControl entries & LoopControlParameter "
          "entries. The entries in these coupled arrays of loop "
          "controls can be used in a logical OR fashion to achieve "
          "the desired loop control. For example, if a client wants "
          "to loop a test 1000 times, but quit if a timer runs out, "
          "it could set both controls into the LoopControl array as "
          "two separate entries in each array. The looping test "
          "will terminate when the first of the two Ored conditions "
          "are met. \n"
          "A brief description for each loop control can be found "
          "in the description of DiagnosticSetting.LoopControl." ), 
       ValueMap { "0", "1", "2", "3", "4", "5" }, 
       Values { "Unknown", "Other", "Continuous", "Count", "Timer", 
          "Error Count" }, 
       ArrayType ( "Indexed" )]
   uint16 LoopControl[];

      [Description ( 
          "Provides additional information for LoopControl when its "
          "value is set to 1 (\'Other\')." ), 
       ArrayType ( "Indexed" )]
   string OtherLoopControlDescriptions[];

      [Description ( 
          "The desired length of time to persist the messages that "
          "result from execution of a diagnostic service. Here is a "
          "summary of the choices and behaviors for different "
          "ResultPersistence values: \n"
          "0 = \"No Persistence\": \n"
          "Setting the timer to zero tells the provider not to "
          "persist the diagnostic result. The diagnostic "
          "information is only available while the diagnostic is "
          "executing or at its conclusion. \n"
          "Value > 0 and < 0xFFFFFFFF = \"Persist With TimeOut\": \n"
          "Setting the ResultPersistenceOption to a integer will "
          "cause the DiagnosticResult to be persisted for that "
          "number of seconds. At the end of that time, the "
          "DiagnosticResult may be deleted by the diagnostic "
          "service provider. \n"
          "0xFFFFFFFF = \"Persist Forever\": \n"
          "By setting the timeout value to the very large value, "
          "0xFFFFFFFF, the provider shall persist results forever. "
          "In this case, the client MUST bear the responsibility "
          "for deleting them." ), 
       Units ( "Seconds" )]
   uint32 ResultPersistence;

      [Description ( 
          "The LogOptions property lists the log options that were "
          "requested for the Diagnostic Service. A brief summary of "
          "the various log options can be found in "
          "CIM_DiagnosticSetting.LogOptions." ), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", 
          "10", "11", "12", "13", "14", "0x8000" }, 
       Values { "Unknown", "Other", "Results", "Subtests", 
          "Actions", "Warnings", "Status", "Device Errors", 
          "Service Errors", "Setting Data", "Statistics", 
          "Hardware Configuration", "Software Configuration", 
          "References", "Debug", "No Log Options" }, 
       ArrayType ( "Indexed" )]
   uint16 LogOptions[];

      [Description ( 
          "Provides additional information regarding the types of "
          "test messages that are logged when the property "
          "LogOptions includes the value 1 (\"Other\")." )]
   string OtherLogOptionsDescriptions[];

      [Description ( 
          "The LogStorage setting property indicates which types of "
          "supported storage should be used by the Diagnostic "
          "Service for logging of the data specified in LogOptions. \n"
          "The values are: \n"
          "\"DiagnosticRecordLog\" (Value = 2): Use the "
          "DiagnosticRecordLog and DiagnosticRecord classes. \n"
          "\"MessageLog\" (Value = 4): Use the MessageLog class and "
          "its methods. \n"
          "\"File\" (Value = 5): Write data to a file." ), 
       ValueMap { "0", "1", "2", "3", "4" }, 
       Values { "Unknown", "Other", "DiagnosticRecordLog", 
          "MessageLog", "File" }, 
       ArrayType ( "Indexed" )]
   uint16 LogStorage[];

      [Description ( 
          "This property provides additional information for "
          "LogStorage when the corresponding value is set to 1 "
          "(\"Other\")." ), 
       ArrayType ( "Indexed" )]
   string OtherLogStorageDescriptions[];

      [Description ( 
          "A client may want to specify the volume or detail of "
          "information logged by a diagnostic service. This metric "
          "is applied to a corresponding logging option, acting as "
          "a qualifier on its description. Three levels of "
          "verbosity are defined as follows: \n"
          "* \"Minimum\" (value=2): Specified if the least amount "
          "of information is desired; for example, Pass or Fail. \n"
          "* \"Standard\" (value=3): This is the standard level of "
          "messaging provided by the service. It is the form most "
          "likely to be used if no verbosity value is specified "
          "(default). \n"
          "* \"Full\" (value=4): Specified when all information, "
          "regardless of size, is desired. \n"
          "Verbosity may not apply to all LogOptions values, in "
          "which case the default VerbosityLevel of \"Standard\" "
          "SHOULD be used." ), 
       ValueMap { "2", "3", "4" }, 
       Values { "Minimum", "Standard", "Full" }, 
       ArrayType ( "Indexed" )]
   uint16 VerbosityLevel[];


};
