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 |