Common Information Model
A Common Information Model (CIM) egy bővíthető, objektumorientált adatmodell, amely egy vállalat különböző részeire vonatkozó információkat tartalmaz. A CIM az Elosztott felügyeleti munkacsoport (DMTF) által fenntartott platformfüggetlen szabvány. A WMI-ben a fejlesztők a CIM használatával olyan osztályokat hozhatnak létre, amelyek merevlemez-meghajtókat, alkalmazásokat, hálózati útválasztókat vagy akár felhasználó által meghatározott technológiákat, például hálózati légkondicionálókat jelölnek. A CIM-osztály megtekintésével és módosításával a felettesek szabályozhatják a vállalat különböző aspektusait. Egy vezető például lekérdezhet egy asztali munkaállomást képviselő CIM-osztálypéldányt. A kezelő ezután futtathat egy szkriptet a CIM-munkaállomáspéldány módosításához. A WMI a munkaállomás CIM-osztálypéldányának módosításait a tényleges munkaállomás módosítására fordítaná le.
A CIM egy nyelvfüggetlen programozási modell, amely objektumorientált technikákkal írja le a vállalatot. A szülő-gyermek öröklés három szintjét használva a CIM egy vállalat általános és konkrét aspektusait is leírhatja. A CIM egy "társítás" nevű technikát is használ a vállalati modell különböző részeinek összekapcsolásához, és sémákkal különbözteti meg a különböző felügyeleti környezeteket.
A CIM úgy lett kialakítva, hogy konzisztens képet nyújtson a logikai és fizikai objektumokról egy felügyeleti környezetben. A CIM egy "osztály" nevű objektumorientált szerkezettel ábrázolja a felügyelt objektumokat. A C++ vagy COM osztályhoz hasonlóan a CIM-osztály is tartalmazhat tulajdonságokat a viselkedés leírására használt adatok és módszerek leírására. A COM-osztályokhoz hasonlóan a CIM sem kapcsolódik semmilyen platformhoz. A WMI azonban tartalmaz egy bővítményt a CIM-hez, amely a Microsoft Windows operációsrendszer-platformokat ismerteti.
A CIM három osztályszintet határoz meg:
Mag
Az alaposztályok olyan felügyelt objektumokat jelölnek, amelyek a felügyelet minden területére vonatkoznak. Ezek az osztályok alapvető szókincset biztosítanak a felügyelt rendszerek elemzéséhez és leírásához. A __Parameters és __SystemSecurity osztályok az alapvető osztályokra mutatnak példákat.
Közös
A gyakori osztályok olyan felügyelt objektumokat jelölnek, amelyek adott felügyeleti területekre vonatkoznak. A közös osztályok azonban függetlenek egy adott megvalósítástól vagy technológiától. A gyakori osztályok az alaposztályok kiterjesztése. A CIM_UnitaryComputerSystem osztály egy gyakori osztály példája.
Kiterjedt
A kiterjesztett osztályok olyan felügyelt objektumokat jelölnek, amelyek a közös osztályok technológiaspecifikus kiegészítései. A kiterjesztett osztály általában egy adott platformra, például UNIX-ra vagy a Microsoft Win32-környezetre vonatkozik. A Win32_ComputerSystem osztály egy kiterjesztett osztály példája.
A fejlesztő egy osztályt egy másik osztályból származtathat. A származtatott osztály a szülőosztály különleges esetét jelöli, és örökli a szülő összes tulajdonságát és metódusát. Például Win32_ComputerSystem örökli CIM_UnitaryComputerSystem. Az öröklési kapcsolatok a rendszertulajdonságok __Derivation, __Dynastyés __SuperClasshasználatával határozhatók meg. A __Derivation rendszertulajdonság sztringek tömbje, amelyek az öröklés teljes láncát sorolják fel a gyökérosztályig, és tartalmazzák azt is, amely szintén szerepel a __Dynasty. A __SuperClass rendszertulajdonság az aktuális osztály közvetlen szülője.
A WMI a társításokat is támogatja. A társítás két vagy több különböző WMI-osztály közötti kapcsolat. Egy futó munkaállomás például általában processzorral rendelkezik. A WMI társításosztály Win32_ComputerSystemProcessor a munkaállomásosztályt Win32_ComputerSystem társítja a Win32_Processorprocesszorosztályhoz. Egy társításosztálynak azonban nem kell két függő osztályt összekapcsolnia. Valójában a társításosztály elsődleges célja olyan osztályok közötti kapcsolatok megjelenítése, amelyek nem feltétlenül függenek egymástól. További információ: Társítási osztály deklarálása.
Végül a WMI támogatja a sémák fogalmát. A WMI kontextusában a séma egy osztálycsoport, amely egy adott felügyeleti környezetet ír le. A Microsoft Windows Software Development Kit (SDK) két sémát használ: a CIM sémát és a Win32 sémát. A CIM-sémaosztályok neve CIM_, a Win32 sémaosztály neve pedig Win32_. A CIM-séma tartalmazza az alapvető és a közös osztályok definícióit, míg a Win32-séma a Win32-környezethez gyakran használt kiterjesztett osztályok definícióit. A külső szállítók azonban létrehozhatnak saját sémákat a szállítóspecifikus követelmények leírásához. Mivel a sémák végtelen bővíthetőségre vannak tervezve, a fejlesztők mindig új osztályokat adhatnak hozzá egy meglévő környezet új felügyelt objektumainak leírásához. Az egyszerűség kedvéért azonban a legtöbb szállító úgy dönt, hogy olyan sémákat hoz létre, amelyek tulajdonságokat örökölnek a CIM- vagy Win32-sémákból.