SWbemObject.PutAsync_ メソッド

SWbemObjectPutAsync_ メソッドは、インスタンスまたはクラス オブジェクトを Windows Management Instrumentation (WMI) に非同期的に作成または更新します。 このメソッドは、SWbemObject のプロパティまたはメソッドを変更し、その変更が WMI に書き込まれた後に使用できます。

この構文の説明については、「スクリプト API のドキュメント規則」を参照してください。

構文

SWbemObject.PutAsync_( _
  ByVal objWbemSink, _
  [ ByVal iFlags ], _
  [ ByVal objWbemNamedValueSet ], _
  [ ByVal objWbemAsyncContext ] _
)

パラメーター

objWbemSink [in]

必須。 put 操作の結果を非同期的に受け取るオブジェクト シンク。

iFlags [in、オプション]

呼び出しがクラスまたはインスタンスを作成または更新するかどうか、および呼び出しがすぐに戻るかどうかを決定します。 このパラメータには次の値を指定できます。

wbemChangeFlagUpdateCompatible (0 (0x0))

そのクラスの派生クラスもインスタンスも存在しない場合に、クラスの更新を許可します。 また、重要でない修飾子 (Description 修飾子など) だけを変更する場合も、すべての更新を許可します。 これは、この呼び出しの既定の動作であり、以前のバージョンの WMI との互換性のために使用されます。 クラスにインスタンスがある場合、更新は失敗します。

wbemChangeFlagUpdateSafeMode (32 (0x20))

子クラスが存在している場合でも、変更によって子クラスで競合が発生しない場合には、クラスの更新を許可します。 それまでにどの子クラスでも言及されていない基底クラスに新しいプロパティを追加する場合に、このフラグを使用できます。 クラスにインスタンスがある場合、更新は失敗します。

WbemChangeFlagUpdateForceMode (64 (0x40))

競合する子クラスが存在する場合に、強制的にクラスを更新します。 たとえば、子クラスでクラス修飾子が定義されていて、基底クラスで既存の修飾子と競合する同じ修飾子を追加しようとする場合、このフラグによって強制的に更新が行われます。 強制モードでは、子クラスの競合している修飾子を削除することで、この競合が解決されます。 クラスにインスタンスがある場合、更新は失敗します。

強制モードを使用して静的クラスを更新すると、そのクラスのすべてのインスタンスが削除されます。 プロバイダー クラスの強制更新では、クラスのインスタンスは削除されません。

wbemChangeFlagCreateOrUpdate (0 (0x0))

クラスまたはインスタンスが存在しない場合は作成され、既に存在する場合は上書きされます。

wbemChangeFlagCreateOnly (2 (0x2))

作成にのみ使用されます。 クラスまたはインスタンスが既に存在する場合、呼び出しは失敗します。

wbemChangeFlagUpdateOnly (1 (0x1))

この呼び出しが更新されます。 この呼び出しを成功させるには、クラスまたはインスタンスが存在している必要があります。

wbemFlagReturnImmediately (16 (0x10))

呼び出しはすぐに戻ります。

wbemFlagReturnWhenComplete (0 (0x0))

クエリが完了するまで、この呼び出しをブロックします。

wbemFlagSendStatus (128 (0x80))

非同期呼び出しから、オブジェクト シンクの SWbemSink.OnProgress イベント ハンドラーに状態の更新が送信されるようにします。

wbemFlagDontSendStatus (0 (0x0))

非同期呼び出しからオブジェクト シンクの OnProgress イベント ハンドラーに状態の更新が送信されないようにします。

wbemFlagUseAmendedQualifiers (131072 (0x20000))

WMI で基底クラス定義と一緒にクラス変更データが書き込まれるようにします。 修正修飾子の詳細については、「WMI クラス情報のローカライズ」を参照してください。

objWbemNamedValueSet [in、オプション]

通常、これは未定義です。 そうでない場合、これは SWbemNamedValueSet オブジェクトであり、その要素は、要求を処理しているプロバイダーが使用できるコンテキスト情報を表します。 このような情報をサポートする、または必要とするプロバイダーは、認識された値の名前、値のデータ型、許可された値、セマンティクスを文書化する必要があります。

objWbemAsyncContext [in、オプション]

これは、元の非同期呼び出しのソースを識別するためにオブジェクト シンクに戻る SWbemNamedValueSet オブジェクトです。 同じオブジェクト シンクを使用して複数の非同期呼び出しを行う場合は、このパラメータを使用します。 このパラメータを使用するには、SWbemNamedValueSet オブジェクトを作成し、SWbemNamedValueSet.Add メソッドを使用して、実行する非同期呼び出しを識別する値を追加します。 この SWbemNamedValueSet オブジェクトはオブジェクト シンクに返され、呼び出しのソースは SWbemNamedValueSet.Item メソッドを使用して抽出できます。 詳細については、「メソッドの呼び出し」を参照してください。

戻り値

このメソッドは値を返しません。 呼び出しが成功すると、指定されたオブジェクト シンクの OnObjectPut イベントは、SWbemObjectPath オブジェクトを受け取ります。これには、WMI に正常にコミットされたインスタンスまたはクラスのオブジェクト パスが含まれます。

エラー コード

PutAsync_ メソッドの完了後に、Err オブジェクトに次のリストのいずれかのエラー コードが含まれる場合があります。

wbemErrAccessDenied - 2147749891 (0x80041003)

現行ユーザーに、指定されたクラスのインスタンスを更新するためのアクセス許可がありません。

wbemErrAlreadyExists - 2147749913 (0x80041019)

wbemChangeFlagCreateOnly フラグが指定されましたが、インスタンスは既に存在します。

wbemErrFailed - 2147749889 (0x80041001)

未定義のエラーが発生しました。

wbemErrIllegalNull - 2147749898 (0x8004100A)

Nothing であってはならないプロパティに対して値 Nothing が指定されました。 このようなプロパティの例としては、KeyIndexed、または Not_Null 修飾子でマークされているプロパティがあります。

wbemErrInvalidObject - 2147749908 (0x80041014)

指定したインスタンスが有効ではありません。

wbemErrInvalidParameter - 2147749896 (0x80041008)

指定されたパラメータが無効です。

wbemErrNotFound - 2147749890 (0x80041002)

wbemChangeFlagUpdateOnly フラグが指定されましたが、インスタンスまたはクラスが存在しません。

wbemErrIncompleteClass - 2147749920 (0x80041020)

クラスの必須プロパティがすべて設定されていません。

wbemErrOutOfMemory - 2147749894 (0x80041006)

操作を完了させるための十分なメモリがありません。

解説

この呼び出しはすぐに戻り、put 操作の結果は、objWbemSink で指定されたシンクに配信されるコールバックを介して呼び出し元に返されます。 objWbemSink を実装します。 WMI リポジトリに書き込まれるインスタンスまたはクラスのオブジェクト パスを取得するための OnObjectPut メソッド。 シンク メソッドの詳細については、「メソッドの呼び出し」を参照してください。

非同期コールバックを使用すると、認証されていないユーザーがシンクにデータを提供できます。 これにより、スクリプトとアプリケーションにセキュリティ リスクが発生します。 リスクを排除するには、半同期または同期通信を使用します。 詳細については、「メソッドの呼び出し」を参照してください。

要件

要件
サポートされている最小のクライアント
Windows Vista
サポートされている最小のサーバー
Windows Server 2008
Header
Wbemdisp.h
タイプ ライブラリ
Wbemdisp.tlb
[DLL]
Wbemdisp.dll
CLSID
CLSID_SWbemObject
IID
IID_ISWbemObject

関連項目

SWbemObject

SWbemObjectPath.Class

SWbemProperty

SWbemQualifier