マネージド オブジェクト形式 (MOF) クラスの設計

WMI プロバイダーは、マネージド オブジェクト形式 (MOF) ファイルと DLL ファイルで構成されます。 MOF ファイルは、プロバイダー実装がデータを提供するクラスを定義します。

MOF クラス定義は 、mofcomp ユーティリティによってコンパイルされ、 WMI リポジトリ (共通情報モデル (CIM) リポジトリとも呼ばれます) に格納されます。 クラスを作成するあまり一般的な方法は、 WMI 用 COM API のメソッドを使用することです。

Note

WMI に障害が発生して再起動した場合に、マネージド オブジェクトのすべての WMI クラス定義が WMI リポジトリ に復元されるようにするには、MOF ファイルの #pragma自動回復 プリプロセッサ命令を使用します。

 

このトピックでは、次のセクションについて説明します。

管理するオブジェクトの定義

管理する企業の部分を特定したら、管理するオブジェクトを定義します。 定義には必要なデータが含まれており、関連するビジネス ルールを正確に実装できるようにする必要があります。 オブジェクトは細かいレベルで定義できますが、定義に含まれる詳細レベルと、役に立つ十分な詳細を提供する必要があるかどうかを判断することをお勧めします。 プロセスの早い段階でショートカットを使用すると時間が節約される可能性がありますが、将来より多くの作業が発生する可能性があります。

分散管理タスク フォース (DMTF) Web サイトの CIM チュートリアルには、設計プロセスに関する優れた情報が含まれています。 詳細については、「 www.dmtf.org」を参照してください。

スキーマ設計を開発して実装するときは、次の要素を考慮してください。

  • 修飾子

    修飾子は、クラス、オブジェクト、プロパティ、メソッド、およびパラメーターを記述する方法に関する情報を提供します。クラスとプロパティの定義に適用されます。 MOF コードでは、修飾子は角かっこで囲まれており、[キー] または [関連付け] を含めることができます。 詳細については、「修飾子と WMI 修飾子の追加」を参照してください。

  • 名前空間

    名前空間は、クラスとオブジェクトをグループ化し、スコープと可視性を制御する論理単位です。 通常、名前空間には、特定の環境のマネージド オブジェクトを表すクラスとオブジェクトのセットが含まれます。 詳細については、「 WMI 内での階層の作成」を参照してください。

  • Object

    モデル化されたオブジェクトは、スキーマの物理要素または論理要素である可能性があります。 たとえば、ハード ディスク ドライブなどの物理ディスク ドライブや、物理ディスク上のパーティションにできる論理ディスクをモデル化できます。 クラスを使用して物理ディスク ドライブをモデル化し、そのクラスを拡張して論理ディスクをモデル化する設計は、ディスクの種類ごとに個別のクラスを作成しようとする設計よりも拡張性が高くなります。

  • Data

    データは動的または静的である可能性があります。 データが動的な場合は、そのデータのクラス プロバイダーを作成する必要があります。

    ユーザーがデータを変更できるようにするには、ユーザーが呼び出すメソッドを使用してのみ、プロパティを直接書き込み可能にするか変更可能にするかを決定する必要があります。

プロパティまたはメソッドの定義

一般に、WMI クラス プロパティは C++ クラスのプロパティに似ています。 コードがデータの一部に対して実装する唯一のアクションが値の取得または値の設定である場合は、データを WMI クラスのプロパティとして定義する必要があります。

WMI メソッドは、通常、マネージド オブジェクトの状態を変更するアクションを実行します。 たとえば、ハードウェア オブジェクトの操作を有効または無効にするアクションの場合は、読み取り/書き込みプロパティを作成する方法が適している可能性があります。 ハードウェアの状態を表示するプロパティを作成することもできます。

クラスまたはインスタンスを作成するときに、コメントを含めることができます。 この手法を使用して、クラスを文書化するか、プログラミング手法を説明します。 詳細については、「 コメントの作成」を参照してください。 さらに、データ オブジェクトの目的を満たすデータを追加することもできます。 詳細については、「 修飾子の追加」を参照してください。

オブジェクトを相互に関連付ける

オブジェクトを相互に関連付けるには、個別のオブジェクトと関連付ける関連付けオブジェクトを作成するか、一方のオブジェクトを他方のオブジェクトに埋め込む方法の 2 つの方法があります。 CIM では埋め込みオブジェクトがサポートされていないため、CIM に準拠するには、最初の方法を使用する必要があります。 ただし、WMI では埋め込みオブジェクトがサポートされているため、いずれかのメソッドを使用してオブジェクト間のリレーションシップを表します。 埋め込みオブジェクトの例は 、Win32 クラスにあります。 たとえば、 Win32_SecurityDescriptor には埋め込みオブジェクト Win32_ACEがあり、別の埋め込みオブジェクト Win32_Trusteeがあります。

オブジェクト間のリレーションシップを表す方法を決定するときは、次の点を考慮してください。

WMI プロバイダーの開発

WMI へのデータの提供

MOF データ型