SMI Tutorial > CIM and WBEM Basics > CIM





The Common Information Model (CIM) is a hierarchical, object oriented architecture that is used to describe the attributes of managed objects in a enterprise computing environment. For example, CIM can be used to describe the characteristics of a computer system. CIM is also used to depict the relationships between different managed objects. For example, CIM can be used to depict the relationship of disks that are connected to a computer system. CIM consists of a specification and a schema.


The CIM Specification describes an object-oriented meta model. It defines the syntax and rules for describing managed objects in terms of meta schema elements. Using these rules, the CIM Specification defines the following meta schema elements:

  • Class
  • Property
  • Method
  • Qualifier
  • Reference
  • Association
  • Indication
  • Instance

A Class is a template for describing the attributes and behavior of a particular managed object. Classes contain Properties that represent attributes of the managed object. For example, the class CIM_Keyboard describes the attributes of a keyboard. This class contains Properties such as Layout and NumberOfFunctionKeys.

Classes can contain Methods that represent behavior of the managed object. A Client can invoke the Method of a Class to perform a defined function. A Method signature includes a name, return type, optional input parameters and optional output parameters. For example, CIM_Service defines StartService() and StopService() Methods.

CIM is a hierarchical, object oriented architecture. Classes can be derived from another Class. The derived Subclass inherits all of the Properties and Methods of the parent Class. For example, when CIM_ManagedSystemElement is derived from CIM_ManagedElement. it inherits the Caption, Description and ElementName Properties from CIM_ManagedElement.

An Instance represents the instantiation of a Class. Whereas a Class is just a template for describing a managed element, an Instance contains values for the Properties defined in the Class template. For example, when an Instance of CIM_Keyboard is created, the Layout property might have a value of “QWERTY”.

An Association is a specialized Class that is used to represent a relationship between two Classes. For example, the CIM_SystemDevice Class represents the relationship between a CIM_System and a CIM_LogicalDevice. An Assocation Class contains two or more Properties that are References to other Classes. An Association Instance contains References to other Instances. References are a special type of Property that is a pointer to another Class or Instance. Only Associations can contain Reference Properties. Using Associations, a Client can traverse from one Class to another to discover the various components of a system or subsystem. For example, after finding the Instance representing the storage system, using the appropriate Associations, a Client can determine the storage devices that comprise the storage system.

An Indication Class is another specialized Class that is used during Event handling. A Client can subscribe to a WBEM Agent to be notified when a particular event occurs. The Client defines the event it wishes to monitor by specifying a Filter which is a CIM Query Language (CQL) expression. CQL is a subset of the Structured Query Language (SQL). When the particular event occurs, the WBEM Agent delivers an Indication Instance to the Client that is listening for the Indication.

Qualifiers are used to provide additional information about a CIM element (e.g., Class, Property, etc.). The CIM Specification defines many types of Qualifiers. For example, the Description Qualifier below is applied to the Class element named A

[Description(“An example of using the Description Qualifier on a Class element]

class A : B {


The ValueMap Qualifier below is applied to the Property element named intProp whose data type is an unsigned 32-bit integer. The Qualifier specifies that intProp is only permitted to have the integer values of 3, 7 or 0.

class C : B {

[ValueMap(“3”, “7”, “0”)]

uint32 intProp;


Here, the ValueMap Qualifier is applied to the Property named intProp whose data type is an unsigned 32-bit integer. The Qualifier specifies that intProp is only permitted to have the integer values of 3, 7 or 0.

CIM Classes are grouped by a Namespace. A WBEM Agent can have one or more Namespaces. A CIM Instance is identified by an Object Name which is the combination of System Address, Namespace, Class name and a list of Key/Value pairs. An example Object Name is given below:”1”,Key2=”aaa”

The Object Name above can be broken down as follows:

  • System Address:
  • Namespace: interop
  • Class name: Class_A
  • Key/Value pairs:
  • Key1=”1”
  • Key2=”aaa”


A schema is an implementation of the information model that creates a specific data model. The Distributed Management Task Force (DMTF) has defined a CIM Schema data model. The CIM Schema describes the managed objects in its data model in the form of Class definitions that contain the Property and Method definitions as well. Periodically, the DMTF publishes new versions of the CIM Schema. Each version contains new Class definitions as well as corrections or enhancements to existing Class definitions created in previous versions. The SMI-S 1.1.0 is based upon the CIM Schema v2.11.


Back Next