IWbemObjectSink::SetStatus メソッド (wbemcli.h)

IWbemObjectSink::SetStatus メソッドは、通知シーケンスの終了を示したり、シンクに他の状態コードを送信したりするために、ソースによって呼び出されます。 IWbemObjectSink::Indicate メソッドは、SetStatus の呼び出し前に呼び出された場合と呼ばれなかった可能性があります。

通常、クライアントは IWbemObjectSink インターフェイスを実装し、IWbemObjectSink インターフェイスを使用して結果を返す IWbemServices メソッドを実行します。 この操作中、WMI 呼び出し 必要な回数だけ 指定 し、その後に SetStatus の最後の呼び出しを行い、多くの場合は Release を呼び出 します

構文

HRESULT SetStatus(
  [in] long             lFlags,
  [in] HRESULT          hResult,
  [in] BSTR             strParam,
  [in] IWbemClassObject *pObjParam
);

パラメーター

[in] lFlags

状態情報のビットマスク。 操作の状態は、 hResult パラメーターを調べることで取得できます。

WBEM_STATUS_COMPLETE

操作が完了しました。

WBEM_STATUS_PROGRESS

操作はまだ進行中です。

WBEM_STATUS_REQUIREMENTS

フィルター処理後のアクティブ化に使用されます。

[in] hResult

このパラメーターは、非同期操作または通知の HRESULT に設定されます。 これは、エラーが発生した場合のエラー コードか、非同期呼び出しで行われた進行状況のいずれかです。

[in] strParam

元の非同期操作が文字列を返す場合は、読み取り専用 BSTR へのポインターを受け取ります。 たとえば、 PutInstanceAsync を使用する場合、 SetStatus が呼び出され、このパラメーターは新しく作成されたインスタンスのオブジェクト パスに設定されます。

[in] pObjParam

複雑なエラーまたは状態オブジェクトが返された場合、これにはエラー オブジェクトへのポインターが含まれます。 SetStatus が返された後にオブジェクトが必要な場合、呼び出されたオブジェクトは、呼び出されたオブジェクトが返される前に、ポインターで AddRef メソッドを使用する必要があります。

戻り値

このメソッドは、メソッド呼び出しの状態を示す HRESULT を返します。 次の一覧は、 HRESULT に含まれる値の一覧です。

注釈

イベント サブスクリプション シンク (IWbemObjectSink または IWbemEventSink) を実装する場合は、シンク オブジェクトの SetStatus メソッド内から WMI を呼び出さないでください。 たとえば、SetStatus の実装内から IWbemServices::CancelAsyncCall を呼び出すと、WMI の状態が妨げられる可能性があります。 イベント サブスクリプションを取り消すには、フラグを設定し、IWbemServices::CancelAsyncCall を別のスレッドまたはオブジェクトから呼び出します。 オブジェクト、列挙型、クエリの取得など、イベント シンクに関連しない実装の場合は、WMI にコールバックできます。

イベント通知を配信する WMI スレッドはシンク オブジェクトの処理が完了するまで他の処理を実行できないため、シンクの実装ではイベント通知を 100 ミリ秒内で処理する必要があります。 通知で大量の処理が必要な場合、シンクでは内部キューを別のスレッドで使用して処理を操作できます。 オブジェクト、列挙型、クエリの取得など、イベント シンクに関連しない実装の場合は、WMI にコールバックできます。

クライアントの SetStatus の実装を通じて中間状態の更新を受信するには、プロバイダー/サービス メソッドの呼び出しで WBEM_FLAG_SENT_STATUS を指定する必要があります。 正確な状態は、 hResult の HIWORD 値と LOWORD 値を個別に調べることで判断できます。 LOWORD (hResult) 値には、これまでに行われた進行状況の量が含まれており、HIWORD (hResult) 値には合計が含まれています。

プロバイダーまたはサービス メソッドを呼び出すとき にWBEM_FLAG_SEND_STATUS を指定しない場合は、 SetStatus の呼び出しを 1 回だけ受け取る必要があります。

要件

要件
サポートされている最小のクライアント Windows Vista
サポートされている最小のサーバー Windows Server 2008
対象プラットフォーム Windows
ヘッダー wbemcli.h (Wbemidl.h を含む)
Library Wbemuuid.lib
[DLL] Fastprox.dll

関連項目

IWbemObjectSink

IWbemObjectSink::Indicate

IWbemObjectSinkEx

IWbemServices::ExecQueryAsync

WBEM_STATUS_TYPE