共通情報モデル
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 クラスは、共通クラスの例です。
ひろがった
拡張クラスは、共通クラスへのテクノロジ固有の追加であるマネージド オブジェクトを表します。 拡張クラスは、通常、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 スキーマからプロパティを継承するスキーマを作成することを選択します。