Common Information Model

Common Information Model (CIM) は、エンタープライズのさまざまな部分に関する情報を含む拡張可能なオブジェクト指向データ モデルです。 CIM は、分散管理タスク フォース (DMTF) によって管理されているクロスプラットフォームの標準です。 WMI によって、開発者は CIM を使用して、ハード ディスク ドライブ、アプリケーション、ネットワーク ルーター、さらにユーザー定義のテクノロジ (ネットワーク エアコンなど) を表すクラスを作成できます。 CIM クラスを表示し、変更を加えることで、マネージャーは、エンタープライズのさまざまな局面を管理できます。 たとえば、マネージャーはデスクトップ ワークステーションを表す CIM クラスのインスタンスを照会できます。 マネージャーは、CIM ワークステーションのインスタンスを変更するスクリプトを実行できます。 WMI は、ワークステーションの CIM クラスのインスタンスへの変更を、実際のワークステーションに対する変更に変換します。

CIM は、オブジェクト指向の手法を使用してエンタープライズを記述する、言語に依存しないプログラミング モデルです。 CIM では 3 つのレベルの親子継承を使用して、エンタープライズの一般的な側面と特定の側面の両方を記述できます。 また、CIM では "関連付け" と呼ばれる手法を使用して、エンタープライズ モデルのさまざまな部分をリンクし、スキーマを使用してさまざまな管理環境を区別します。

CIM は、管理環境内の論理オブジェクトと物理オブジェクトの一貫性のあるビューを提供するように設計されています。 CIM では "クラス" と呼ばれるオブジェクト指向のコンストラクターを使用してマネージド オブジェクトを表します。C++ クラスや COM クラスと同様に、CIM クラスには、データを記述するプロパティと、動作を記述するメソッドを含めることができます。 COM クラスのセットと同様に、CIM はどのプラットフォームにも関連付けられません。 ただし、WMI には、Microsoft Windows オペレーティング システムのプラットフォームを記述する CIM への拡張機能が含まれています。

CIM では、次の 3 つのレベルのクラスが定義されています。

  • コア

    コア クラスは、すべての管理領域に適用されるマネージド オブジェクトを表します。 これらのクラスでは、マネージド システムを分析および記述するための基本的なボキャブラリが提供されます。 __Parameters クラスと __SystemSecurity クラスは、コア クラスの例です。

  • 共通

    共通クラスは、特定の管理領域に適用されるマネージド オブジェクトを表します。 ただし、共通クラスは特定の実装やテクノロジから独立しています。 共通クラスはコア クラスの拡張機能です。 CIM_UnitaryComputerSystem クラスは、共通クラスの例です。

  • Extended

    拡張クラスは、共通クラスへのテクノロジ固有の追加であるマネージド オブジェクトを表します。 拡張クラスは通常、UNIX や Microsoft Win32 環境などの特定のプラットフォームに適用されます。 Win32_ComputerSystem クラスは、拡張クラスの例です。

開発者は、別のクラスからクラスを派生させることができます。 派生クラスは親クラスの特殊なケースを表し、親のすべてのプロパティとメソッドを継承します。 たとえば、Win32_ComputerSystem は、CIM_UnitaryComputerSystem から継承します。 継承関係は、システム プロパティ __Derivation__Dynasty、および __SuperClass を使用して決定できます。 __Derivation システム プロパティは、ルート クラスまでの継承チェーン全体をリストした文字列の配列であり、__Dynasty にも含まれています。 __SuperClass システム プロパティには、現在のクラスの直接の親が示されます。

WMI では、関連付けもサポートされます。 関連付けは、2 つ以上の異なる WMI クラス間の関係です。 たとえば、実行中のワークステーションには通常プロセッサがあります。 WMI 関連付けクラス Win32_ComputerSystemProcessor では、ワークステーション クラス Win32_ComputerSystem をプロセッサ クラス Win32_Processor に関連付けます。 ただし、関連付けクラスは、2 つの依存クラスを結び付ける必要はありません。 実際、関連付けクラスの主な目的は、必ずしも相互に依存していないクラス間の関係を示すことです。 詳細については、「関連付けクラスの宣言」を参照してください。

最後に、WMI ではスキーマの概念をサポートします。 WMI のコンテキストでは、スキーマは特定の管理環境を記述するクラスのグループです。 Microsoft Windows ソフトウェア開発キット (SDK) では、CIM スキーマと Win32 スキーマの 2 つのスキーマが使用されます。 CIM スキーマ クラス名は CIM_ で始まり、Win32 スキーマ クラス名は Win32_ で始まります。 CIM スキーマにはコア クラスと共通クラスの定義が含まれますが、Win32 スキーマには Win32 環境に共通する拡張クラスの定義が含まれています。 ただし、サードパーティ ベンダーは、ベンダー固有の要件を記述するために独自のスキーマを作成できます。 スキーマは無限に拡張できるように設計されているため、開発者は常に新しいクラスを追加して、既存の環境に新しいマネージド オブジェクトを記述できます。 ただし、わかりやすくするために、ほとんどのベンダーは CIM スキーマまたは Win32 スキーマからプロパティを継承するスキーマを作成することを選択します。