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