IWbemQualifierSet
COM公式ドキュメント
単一のプロパティ、またはオブジェクト全体(クラスまたはインスタンス)に対する名前付き修飾子の集合全体を格納するコンテナーとして機能します。
解説(Remarks)
WMI が実装を提供するため、Windows Management の動的プロバイダーではこのインターフェイスを実装しないことを強く推奨します。詳細については、 IWbemClassObject を参照してください。
WMI 内では、このインターフェイスは常にインプロセスで動作します。Put 操作はオブジェクトのローカルコピーにのみ影響します。Get 操作はローカルコピーから値を取得します。更新は、 IWbemServices インターフェイスのメソッドを使用してオブジェクト全体が読み書きされたときにのみ実行されます。
メソッド 7
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
IWbemQualifierSet::Get メソッドは、指定された名前付き修飾子が見つかった場合にそれを取得します。
| wszName | LPWSTR | in | 値を要求する修飾子の名前です。このポインターは読み取り専用として扱われます。 |
| lFlags | INT | in | 予約済みです。このパラメーターは 0 でなければなりません。 |
| pVal | VARIANT* | inout | 成功した場合、VARIANT には修飾子に対応する正しい型と値が設定されます。この VARIANT に対しては VariantInit が呼び出されます。 値が不要になった時点で、このポインターに対して VariantClear を呼び出すのは呼び出し元の責任です。エラーコードが返された場合、pVal が指す VARIANT は変更されません。 このパラメーターが NULL の場合、パラメーターは無視されます。 |
| plFlavor | INT* | inout | NULL を指定できます。NULL でない場合は、要求した修飾子の修飾子フレーバービットを受け取る LONG を指している必要があります。詳細については、 Qualifier Flavors および WBEM_FLAVOR_TYPE を参照してください。 |
戻り値
このメソッドは、メソッド呼び出しの状態を示す HRESULT を返します。次の一覧に、HRESULT に含まれる値を示します。
IWbemQualifierSet::Put メソッドは、名前付き修飾子と値を書き込みます。新しい修飾子は、同名の既存の値を上書きします。修飾子が存在しない場合は作成されます。
| wszName | LPWSTR | in | 書き込む修飾子の名前です。このポインターは読み取り専用として扱われます。 |
| pVal | VARIANT* | in | NULL にすることはできません。書き込む修飾子の値を含む有効な VARIANT を指している必要があります。このポインターは読み取り専用として扱われます。値が不要になった後に、このポインターに対して VariantClear を呼び出すのは呼び出し元の責任です。 |
| lFlavor | INT | in | この修飾子に設定する修飾子フレーバーです。lFlavor に指定できる定数を次の一覧に示します。既定値はゼロ (0) です。 WBEM_FLAVOR_OVERRIDABLE (0 (0x0))修飾子の値は、派生クラスまたはインスタンスでオーバーライドできます。これが既定値です。この定数の使用は、EnableOverride フラグの使用と同じです。 WBEM_FLAVOR_FLAG_PROPAGATE_TO_INSTANCE (1 (0x1))修飾子はインスタンスに伝播されます。この定数の使用は、ToInstance フラグの使用と同じです。 WBEM_FLAVOR_FLAG_PROPAGATE_TO_DERIVED_CLASS (2 (0x2))修飾子は派生クラスに伝播されます。この定数の使用は、ToSubClass フラグの使用と同じです。 WBEM_FLAVOR_NOT_OVERRIDABLE (16 (0x10))修飾子の値は、派生クラスまたはインスタンスでオーバーライドできません。この定数の使用は、DisableOverride フラグの使用と同じです。 WBEM_FLAVOR_AMENDED (128 (0x80))修飾子はローカライズされます。この定数の使用は、Amended フラグの使用と同じです。 |
戻り値
このメソッドは、メソッド呼び出しの状態を示す HRESULT を返します。次の一覧に、HRESULT に含まれる値を示します。
IWbemQualifierSet::Delete メソッドは、指定された名前の修飾子を削除します。
| wszName | LPWSTR | in | 削除する修飾子の名前です。このポインターは読み取り専用として扱われます。 |
戻り値
このメソッドは、メソッド呼び出しの状態を示す HRESULT を返します。次の一覧に、HRESULT に含まれる値を示します。
IWbemQualifierSet::GetNames メソッドは、現在のオブジェクトまたはプロパティで利用可能なすべての修飾子の名前を取得します。あるいは、lFlags のフィルター値に応じて、特定の修飾子の名前を取得します。
| lFlags | INT | in | 次の定数のいずれかを指定します。 0 (ゼロ)すべての修飾子の名前を返します。 WBEM_FLAG_LOCAL_ONLY現在のプロパティまたはオブジェクトに固有の修飾子の名前のみを返します。現在の修飾子セットがプロパティを参照している場合は、クラス定義から伝播された修飾子ではなく、そのプロパティに固有の修飾子(オーバーライドを含む)のみを返します。現在の修飾子セットがインスタンスを参照している場合は、インスタンス固有の修飾子名のみを返します。現在の修飾子セットがクラスを参照している場合は、派生対象のクラスに固有の修飾子のみを返します。 WBEM_FLAG_PROPAGATED_ONLY他のオブジェクトから伝播された修飾子の名前のみを返します。たとえば、現在の修飾子セットがプロパティを参照している場合は、そのプロパティ自体の修飾子ではなく、クラス定義からこのプロパティに伝播された修飾子のみを返します。現在の修飾子セットがインスタンスを参照している場合は、クラス定義から伝播された修飾子のみを返します。現在の修飾子セットがクラスを参照している場合は、親クラスから継承された修飾子名のみを返します。 |
| pNames | SAFEARRAY** | out | 要求された名前を含む新しい SAFEARRAY が作成されます。 エラーが返されないすべての場合において、新しい配列が作成され、pstrNames はその配列を指すように設定されます。これは、結果の配列の要素数がゼロの場合でも同様です。エラー時には、新しい SAFEARRAY は返されません。 |
戻り値
このメソッドは、メソッド呼び出しの状態を示す HRESULT を返します。次の一覧に、HRESULT に含まれる値を示します。
解説(Remarks)
BSTR の SAFEARRAY を使用する例については、 Retrieving Part of a WMI Instance を参照してください。
IWbemQualifierSet::BeginEnumeration メソッドは、オブジェクト内のすべての修飾子を列挙する前にリセットを行います。
| lFlags | INT | in | 列挙に含める修飾子を指定します。次の定数のいずれかでなければなりません。 0 (ゼロ)すべての修飾子の名前を返します。 WBEM_FLAG_LOCAL_ONLY現在のプロパティまたはオブジェクトに固有の修飾子の名前のみを返します。現在の修飾子セットがプロパティを参照している場合は、クラス定義から伝播された修飾子ではなく、そのプロパティに固有の修飾子(オーバーライドを含む)のみを返します。現在の修飾子セットがインスタンスを参照している場合は、インスタンス固有の修飾子名のみを返します。現在の修飾子セットがクラスを参照している場合は、派生対象のクラスに固有の修飾子のみを返します。 WBEM_FLAG_PROPAGATED_ONLY他のオブジェクトから伝播された修飾子の名前のみを返します。たとえば、現在の修飾子セットがプロパティを参照している場合は、そのプロパティ自体の修飾子ではなく、クラス定義からこのプロパティに伝播された修飾子のみを返します。現在の修飾子セットがインスタンスを参照している場合は、クラス定義から伝播された修飾子のみを返します。現在の修飾子セットがクラスを参照している場合は、親クラスから継承された修飾子名のみを返します。 |
戻り値
このメソッドは、メソッド呼び出しの状態を示す HRESULT を返します。次の一覧に、HRESULT に含まれる値を示します。
IWbemQualifierSet::Next メソッドは、IWbemQualifierSet::BeginEnumeration で開始した列挙において、次の修飾子を取得します。
| lFlags | INT | in | 予約済みです。このパラメーターは 0 (ゼロ) でなければなりません。 |
| pstrName | LPWSTR* | inout | このパラメーターは修飾子の名前を受け取ります。WBEM_S_NO_ERROR が返される場合は、常に新しい BSTR が割り当てられます。 pstrName が NULL の場合は無視されます。それ以外の場合、呼び出し元は、このパラメーターが呼び出し時に有効な BSTR を指していないことを保証する必要があります。そうしないとメモリリークが発生します。また、呼び出し元は、返された文字列が不要になった時点で SysFreeString を呼び出す必要があります。 |
| pVal | VARIANT* | inout | このパラメーターは修飾子の値を受け取ります。このメソッドによって、VARIANT に対して VariantInit が呼び出されます。呼び出し元は、値が不要になった時点でこのポインターに対して VariantClear を呼び出す必要があります。エラーコードが返された場合、pVal が指す VARIANT は変更されません。NULL を設定した場合、このパラメーターは無視されます。 |
| plFlavor | INT* | inout | NULL でない場合、指定された値には修飾子フレーバーが設定されます。詳細については、 Qualifier Flavors および WBEM_FLAVOR_TYPE を参照してください。 |
戻り値
このメソッドは、メソッド呼び出しの状態を示す HRESULT を返します。次の一覧に、HRESULT に含まれる値を示します。
IWbemQualifierSet::BeginEnumeration および IWbemQualifierSet::Next で開始した列挙を終了する場合は、IWbemQualifierSet::EndEnumeration メソッドを呼び出します。
戻り値
このメソッドは、メソッド呼び出しの状態を示す HRESULT を返します。次の一覧に、HRESULT に含まれる値を示します。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IWbemQualifierSet "{DC12A680-737F-11CF-884D-00AA004B2E24}" #usecom global IWbemQualifierSet IID_IWbemQualifierSet "{}" #comfunc global IWbemQualifierSet_Get 3 wstr,int,var,var #comfunc global IWbemQualifierSet_Put 4 wstr,var,int #comfunc global IWbemQualifierSet_Delete 5 wstr #comfunc global IWbemQualifierSet_GetNames 6 int,var #comfunc global IWbemQualifierSet_BeginEnumeration 7 int #comfunc global IWbemQualifierSet_Next 8 int,var,var,var #comfunc global IWbemQualifierSet_EndEnumeration 9 ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。#define global IID_IWbemQualifierSet "{DC12A680-737F-11CF-884D-00AA004B2E24}" #usecom global IWbemQualifierSet IID_IWbemQualifierSet "{}" #comfunc global IWbemQualifierSet_Get 3 wstr,int,sptr,sptr #comfunc global IWbemQualifierSet_Put 4 wstr,sptr,int #comfunc global IWbemQualifierSet_Delete 5 wstr #comfunc global IWbemQualifierSet_GetNames 6 int,sptr #comfunc global IWbemQualifierSet_BeginEnumeration 7 int #comfunc global IWbemQualifierSet_Next 8 int,sptr,sptr,sptr #comfunc global IWbemQualifierSet_EndEnumeration 9 ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。