次の方法で共有


SWbemServicesEx.PutAsync メソッド

SWbemServicesEx オブジェクトの PutAsync メソッドは、オブジェクトを非同期的に名前空間に保存します。 成功すると、このメソッドは、入力パラメーターとして指定された SWbemSink オブジェクトに OnCompleted イベントを送信します。

このメソッドは、非同期モードで呼び出されます。 詳細については、「メソッドの呼び出し」を参照してください。

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

構文

SWbemServicesEx.PutAsync( _
  ByVal objWbemSink, _
  ByVal ojbWbemObject, _
  [ ByVal iFlags ], _
  [ ByVal objWbemNamedValueSet ], _
  [ ByVal objWbemAsyncContext ] _
)

パラメーター

objWbemSink

必須。 オブジェクトを非同期的に受信するオブジェクト シンク。 オブジェクトを受信する SWbemSink オブジェクトを作成します。

ojbWbemObject

必須。 名前空間に配置する新しいオブジェクト。 これは、新しく作成されたオブジェクトまたは変更されたオブジェクトです。

iFlags [オプション]

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

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))

クエリが完了するまで、この呼び出しをブロックします。 このフラグでは、メソッドを同期モードで呼び出します。

wbemFlagUseAmendedQualifiers (131072 (0x20000))

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

objWbemNamedValueSet [オプション]

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

objWbemAsyncContext [オプション]

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)

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

wbemErrInvalidObject - 2147749908 (0x80041014)

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

wbemErrInvalidParameter - 2147749896 (0x80041008)

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

wbemErrNotFound - 2147749890 (0x80041002)

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

wbemErrIncompleteClass - 2147749920 (0x80041020)

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

wbemErrOutOfMemory - 2147749894 (0x80041006)

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

解説

この呼び出しはすぐに戻り、結果と状態は、objWbemSink で指定されたシンクに配信されるイベントを介して呼び出し元に返されます。 各オブジェクトが到着したときにそれを処理するには、objWbemSink.OnObjectReady イベント サブルーチンを作成します。 すべてのオブジェクトが到着した後に行われるすべての処理は、objWbemSink.OnCompleted イベントのサブルーチンで行われます。

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

要件

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