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

Indicate メソッドは、通知を提供するためにソースによって呼び出されます。 通常、WMI は、クライアントが IWbemServices のいずれかの非同期メソッドを実行した後、このインターフェイスのクライアント実装を呼び出します。 その他の場合、さまざまな種類のプロバイダーは、WMI によってエクスポートされた実装を呼び出してイベントを配信します。 そのため、クライアント コードでは、場合によってはこのインターフェイスを実装し、別の場合には別のコンポーネントの実装を使用する必要がある場合があります。

このインターフェイスとメソッドを 、IWbemServices インターフェイスの非同期メソッドと組み合わせて使用します。

クライアントとプロバイダーは、通知を受信したり 、IWbemServices の非同期メソッドを実行したりするために、このインターフェイスを実装する必要があります。 詳細については、「メソッドの呼び出し」を参照してください。

構文

HRESULT Indicate(
  [in] long             lObjectCount,
  [in] IWbemClassObject **apObjArray
);

パラメーター

[in] lObjectCount

次のポインター配列内のオブジェクトの数。

[in] apObjArray

IWbemClassObject インターフェイスへのポインターの配列。 配列メモリ自体は読み取り専用であり、 メソッドの呼び出し元によって所有されます。 これは in パラメーターであるため、実装には、COM 規則に従って、配列内の任意のオブジェクト ポインターで IWbemClassObject::AddRef を呼び出し、メソッドが返された後にオブジェクトが使用される場合は、それを保持してから返すオプションがあります。 オブジェクトが Indicate 呼び出しの期間中のみ使用される場合は、各オブジェクト ポインターで AddRef を呼び出す必要はありません。

戻り値

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

解説

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

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

イベント プロバイダーがイベントを提供するために Indicate を呼び出すと、呼び出しは WBEM_E_SERVER_TOO_BUSYで失敗する可能性があります。 プロバイダーは、イベントを再実行することで、このメッセージに応答することを選択できます。

メモ シンクへのコールバックは、クライアントが必要とするのと同じ認証レベルで返されない可能性があるため、非同期通信の代わりに半同期を使用することをお勧めします。 詳細については、「メソッドの呼び出し」を参照してください。
 

要件

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

関連項目

IWbemObjectSink

IWbemObjectSink::SetStatus

IWbemObjectSinkEx

IWbemServices::ExecQueryAsync