PutClassWmi 関数

新しいクラスが作成されるか、既存のクラスが更新されます。

Note

この API は、内部でだけ使用します。 開発者コードで使用するためのものではありません。

構文

HRESULT PutClassWmi (
   [in] IWbemClassObject*    pObject,
   [in] long                 lFlags,
   [in] IWbemContext*        pCtx,
   [out] IWbemCallResult**   ppCallResult
);

パラメーター

pObject
[in] 有効なクラス定義へのポインター。 必要なすべてのプロパティ値で、正しく初期化されている必要があります。

lFlags
[in] この関数の動作に影響を与えるフラグの組み合わせ。 次の値は、WbemCli.h ヘッダー ファイル内で定義されています。または、コード内で定数として定義することもできます。

定数 説明
WBEM_FLAG_USE_AMENDED_QUALIFIERS 0x20000 設定した場合、修正されたフレーバーを持つ修飾子は、WMI によって格納されません。
設定しない場合、このオブジェクトはローカライズされていないものと見なされ、すべての修飾子がこのインスタンスと共に格納されます。
WBEM_FLAG_CREATE_OR_UPDATE 0 存在しない場合はクラスを作成し、既に存在する場合は上書きします。
WBEM_FLAG_UPDATE_ONLY 1 クラスを更新します。 呼び出しが成功するには、クラスが存在している必要があります。
WBEM_FLAG_CREATE_ONLY 2 クラスを作成します。 クラスが既に存在する場合、呼び出しは失敗します。
WBEM_FLAG_RETURN_IMMEDIATELY 0x10 このフラグにより、半同期呼び出しが発生します。
WBEM_FLAG_OWNER_UPDATE 0x10000 このクラスが変更されたことを示すには、PutClassWmi を呼び出すときに、プッシュ プロバイダーでこのフラグを指定する必要があります。
WBEM_FLAG_UPDATE_COMPATIBLE 0 そのクラスの派生クラスもインスタンスも存在しない場合に、クラスを更新できるようにします。 また、Description 修飾子などの重要でない修飾子だけを変更する場合も、すべての更新を許可します。 クラスにインスタンスがある場合、または重要な修飾子を変更する場合、更新は失敗します。
WBEM_FLAG_UPDATE_SAFE_MODE 0x20 子クラスが存在しても、変更によって子クラスで競合が発生しない場合に限り、クラスの更新を許可します。 たとえば、このフラグを使用すると、それまでにどの子クラスでも言及されていない基底クラスに新しいプロパティを追加できます。 クラスにインスタンスがある場合、更新は失敗します。
WBEM_FLAG_UPDATE_FORCE_MODE 0x40 競合する子クラスが存在しても、強制的にクラスを更新します。 たとえば、子クラスでクラス修飾子が定義されていて、基底クラスで既存の修飾子と競合する同じ修飾子を追加しようとする場合、このフラグを指定すると更新が強制されます。 強制モードでは、子クラスの競合している修飾子を削除することによって、この競合が解決されます。

pCtx
[in] 通常、この値は null です。 それ以外の場合は、要求されたクラスを提供しているプロバイダーが使用できる IWbemContext インスタンスへのポインターです。

ppCallResult
[out] null の場合、このパラメーターは使用されていません。 lFlagsWBEM_FLAG_RETURN_IMMEDIATELY が含まれている場合、WBEM_S_NO_ERROR が発生すると関数はすぐに戻ります。 ppCallResult パラメーターは、新しい IWbemCallResult オブジェクトへのポインターを受け取ります。

戻り値

この関数によって返される次の値は、WbemCli.h ヘッダー ファイル内で定義されています。または、コード内で定数として定義することもできます。

定数 説明
WBEM_E_ACCESS_DENIED 0x80041003 ユーザーは、クラスを作成または変更するアクセス許可を持っていません。
WBEM_E_FAILED 0x80041001 特定できないエラーが発生しました。
WBEM_E_INVALID_CLASS 0x80041010 指定したクラスが有効ではありません。 通常、これは、pObject によってインスタンス オブジェクトが指定されていることを示します。
WBEM_E_INVALID_PARAMETER 0x80041008 パラメーターが無効です。
WBEM_E_INVALID OPERATION 0x80041016 指定したクラス名が有効ではありません。
WBEM_E_CLASS_HAS_CHILDREN 0x80041025 サブクラスを無効にする変更を行おうとしました。
WBEM_E_ALREADY_EXISTS 0x80041019 WBEM_FLAG_CREATE_ONLY フラグを指定しましたが、そのクラスは既に存在します。
WBEM_E_NOT_FOUND 0x80041002 lFlagsWBEM_FLAG_UPDATE_ONLY を指定しましたが、そのクラスが見つかりませんでした。
WBEM_E_INCOMPLETE_CLASS 0x80041020 クラスの必須プロパティがすべて設定されていません。
WBEM_E_OUT_OF_MEMORY 0x80041006 メモリ不足のため、操作を完了できません。
WBEM_E_SHUTTING_DOWN 0x80041033 WMI が停止し、再起動されている可能性があります。 ConnectServerWmi をもう一度呼び出してください。
WBEM_E_TRANSPORT_FAILURE 0x80041015 現在のプロセスと WMI の間のリモート プロシージャ コール (RPC) リンクが失敗しました。
WBEM_S_NO_ERROR 0 関数呼び出しは成功しました。

解説

この関数では、IWbemServices::PutClass メソッドの呼び出しがラップされます。

ユーザーは、名前の先頭または末尾がアンダースコア文字のクラスを作成することはできません。

関数呼び出しが失敗した場合は、GetErrorInfo 関数を呼び出して追加のエラー情報を取得できます。

必要条件

:システム要件」を参照してください。

ヘッダー: WMINet_Utils.idl

.NET Framework のバージョン: 4.7.2 以降で使用可能

関連項目