his article is Part II of the WMI tutorial series. It focuses on the Common Information Model Version 2 (CIMV2) and its integration with the Microsoft Windows Operating System. CIMV2 is the base technology for managing distributed corporate computer systems using Web Based Enterprise Management (WBEM), which is developed and maintained by the DMTF (Distributed Management Task Force). Windows Management Instrumentation (WMI) is the Windows implementation of WBEM.
CIMV2 represents the schema structure that describes all objects of a managed system. CIMV2 is a very complex system with many ways to express any given object in the WBEM repository; therefore, a complete explanation of CIMV2 is beyond the scope of this article. Instead, I'll focus on elements you need to understand the inner structure of WMI.
WMI is available in Win ME, Windows 2000, or newer Windows versions. The WMI SDK includes a WMI Provider for Windows NT 4.0 SP 3. There are also versions for Windows 9x (although these have some limitations).
The accompanying examples are meant to be used with the final release of Visual Studio.NET (2002) or newer on Windows 2000 or XP machines. For older versions of the windows operating system there are WMI Providers in the WMI SDK, which you can find in the download section of http://msdn.microsoft.com.
|What You Need
|To get real benefit from this article, you should have a good understanding of C# and of object-oriented programming in general. A good knowledge of the Windows environment, including Services, the Event Log and Active Directory would be very helpful too. There is no real need for a deep understanding of system internals, but an understanding of basics is advantageous.
The Windows Management Instrumentation Extensions for Microsoft Visual Studio .NET
are helpful tools for .NET developers and can help you speed up WMI application development.
Why Would You Need CIM?
Imagine a typical enterprise applicationnot just the software, also the hardware and user environment. You have the network, various system devices and storage devices, an operating system, a database, and finally, the application. On top of all these you also typically have user policies, a management infrastructure and the security system. To manage all these components in one place you'll need some kind of flexible repository with schema definitions for the different kinds of components. That's the basic idea behind the Common Information Model.
CIM is an object-oriented design schema capable of representing a wide range of objects. It uses OOP features such as abstraction, inheritance, dependencies, aggregation and scoping to provide an extensible base schema that's able to represent information about all the objects mentioned above.
A CIM Schema:
- defines classes that can appear in a namespace
- defines properties and methods that can appear in a class
- defines which classes are child classes
- defines the order of classes
- defines the number of classes
- defines whether a class is abstract or can provide implementation
- defines data types for properties and methods
- defines default and fixed values for properties and methods
Andrea Westerinen, the DMTF VP of technology and work group chairs at the DMTF 2002 Developers' Conference defines an Information Model as:
"An abstraction and representation of the entities in a managed environmenttheir properties, operations and relationships. It is independent of any specific repository, application, protocol or platform.
The Core Information Model is the basic schema behind the CIM and contains information applicable to all management domains. The Common Information Model addresses specific domains like system devices, applications, networks, users and many others. It is derived from the Core Model and subclasses its schemas to extend the functionality of the base classes. Since the Common Information Model is designed to be extended by various vendors its contained models can overlap or have cross-references.