プロパティ プロバイダーのプライマリ インターフェイスの実装
プロパティ プロバイダーは、WMI のプライマリ インターフェイスとして IWbemPropertyProvider メソッドを使用します。 IWbemPropertyProvider を使用すると、クラスとインスタンスのプロパティを取得および変更するコードを実装できます。
次の表に、プロパティ プロバイダーで実装できる IWbemPropertyProvider メソッドの一覧を示します。
メソッド | 特徴量 |
---|---|
GetProperty | 読み込み |
PutProperty | 変更 |
注意
プロパティ プロバイダーはインプロセス プロバイダーとして実装する必要があります。 WMI では、サービスまたは実行可能ファイルとして作成されたプロパティ プロバイダーを初期化しますが、GetProperty メソッドと PutProperty メソッドは呼び出しません。
これらのメソッドのいずれかをサポートしないことを選択すると、プロバイダーでは WBEM_E_PROVIDER_NOT_CAPABLE を返すスタブ実装を提供できます。
プロパティ プロバイダーは、PropertyContext、InstanceContext、ClassContext の 3 つの修飾子のセットによって、マネージド クラスまたはインスタンスを識別します。 WMI は、これら 3 つの修飾子を記述する文字列定数をプロパティ プロバイダーに渡します。
プロパティ プロバイダーは、次の種類のコンテキスト修飾子を処理できる必要があります。
- InstanceContext 修飾子はインスタンスにアタッチされ、インスタンス内のすべてのプロパティに適用される情報が含まれています。
- ClassContext 修飾子は クラスにアタッチされ、クラス内のすべてのインスタンスに適用される情報が含まれています。 たとえば、レジストリ プロバイダーによって提供されるデータを格納するために使用されるクラスでは、ClassContext は、報告されるプロパティを含むレジストリ キーへのパスになります。
- PropertyContext 修飾子は、プロパティに関連するコンテキスト固有の情報を指定します。 たとえば、レジストリ プロバイダーによって提供されるデータを格納するために使用されるクラスでは、PropertyContext は、プロパティによって格納されるレジストリ値の名前を指定します。
これらの修飾子は連携できます。 InstanceContext と PropertyContext の両方の値を指定して、特定の種類のインスタンスの処理方法をプロバイダーに伝えることができます。 たとえば、読み取り可能だが、書き込み可能なプロパティは 1 つだけであるとプロバイダーに認識されるようにインスタンスをマークできます。
最も一般的に使用される修飾子は PropertyContext です。 そのため、WMI では DynProps 修飾子をショートカットとして提供しています。 WMI では、DynProps でマークされたインスタンス内の各プロパティには Dynamic、Provider、PropertyContext 修飾子もあると見なされます。