Share via

Editing SMS_def.mof

To edit SMS_def.mof file, use a text file editor to change the class and property reporting settings.

Each property and class has an SMS_Report flag. To include a property or class in inventory, set the SMS_Report flag to TRUE. To remove a property or class from inventory, set the SMS_Report flag to FALSE.

SMS_def.mof starts with the definition of namespaces, base classes, and providers that are needed by the Hardware Inventory Agent and WMI. The rest of the file defines the classes that the Hardware Inventory Agent can collect data about. The syntax of the SMS_def.mof is the same as any other MOF file. However, it also includes class and property qualifiers that are used by the Hardware Inventory Agent.


  • Group names can use double-byte character set names. If this is done, the SMS_def.mof file must be saved as a Unicode file.

Class Qualifiers:

  • SMS_Report is an optional Boolean value indicating whether or not the class is to be collected by SMS inventory. Its default value is FALSE.

  • SMS_Group_Name is an optional name of the property group to be used when collecting the class. By default, it is the WMI class name as it appears in SMS_def.mof.

  • SMS_Class_ID is a required SMS class identifier string associated with the property group. The class identifier is a three-part string delimited by vertical bars. The first part is the vendor, the second part is a group name, and the third part is a version number.

  • SMS_Namespace is an optional Boolean value indicating whether the provider for this class is located in the root\CIMv2\SMS namespace. This must be set to TRUE for any class whose data is provided directly to the SMS reporting class. If SMS_Namespace is set to FALSE, or not specified, the data is collected from the root\CIMV2 namespace or the namespace specified in using the Namespace class qualifier.

  • Namespace is an optional value indicating where the hardware inventory agent should look for the data class. Namespace only applies to Advanced Clients. Legacy Clients ignore this class qualifier.

Property Qualifiers:

  • SMS_Report is an optional Boolean value (TRUE, FALSE) indicating whether or not the property is to be included in SMS inventory. The default is FALSE. For key properties, this qualifier is ignored on Legacy Clients. Keys are always reported on Legacy Clients.

  • SMS_Units is an optional string that informs the Hardware Inventory Agent to perform a conversion between data provided by WMI into a form SMS can use. If the data is in a normal property, the property is rejected. If the data is in a key property, the instance is rejected.

    For example, SMS cannot use 64-bit integers, so in the case of disk size, the qualifier "SMS_Units("Megabytes")" is used. The agent translates the WMI value in bytes into the appropriate representation in MB. This qualifier is ignored for non-integer properties.

    Another example is using the DateString value for the SMS_Units qualifier for WMI date-time intervals. These are in the format ddddddddHHMMSS.mmmmmm:000. SMS requires the DateString qualifier to convert and use WMI time-intervals.

    Possible SMS_Units values:

    • KB - divides by 1024

    • MB - divides by (1024 × 1024)

    • HexString - converts number to hex strings. For example, decimal value 161 is converted to string "0×A1."

    • DecimalString - SMS cannot use 64-bit integers, so this converts WMI uint64 values to string values

    • Seconds - divides time values in milliseconds by 1000

    • DateString - converts time interval strings. For example, a DateTime value of "00000008061924.000000:000" turns into the string "8 Days 08:15:55 Hours".

For information about the specific classes and properties in the SMS_def.mof file, see the SMS SDK. The SMS SDK is available as part of the Platform SDK, which is available from Microsoft Developer Network (MSDN), or at

For More Information

Did you find this information useful? Please send your suggestions and comments about the documentation to