IWbemObjectSink インターフェイス (wbemcli.h)
IWbemObjectSink インターフェイスは、WMI プログラミング モデル内のすべての種類の通知を受信できるシンク インターフェイスを作成します。 クライアントは、IWbemServices の 非同期メソッドの結果と、特定の種類のイベント通知の両方を受信するために、このインターフェイスを実装する必要があります。 プロバイダーはこのインターフェイスを使用しますが、WMI にイベントとオブジェクトを提供するためにこのインターフェイスを実装しません。
プロバイダーは通常、WMI によって提供される実装を呼び出します。 このような場合は、Indicate を呼び出して WMI サービスにオブジェクトを提供します。 その後、SetStatus を呼び出して、通知シーケンスの終了を示します。 SetStatus を呼び出して、シンクにオブジェクトがない場合のエラーを示すこともできます。
WMI の非同期クライアントをプログラミングするときに、ユーザーは実装を提供します。 WMI はメソッドを呼び出してオブジェクトを配信し、結果の状態を設定します。
継承
IWbemObjectSink インターフェイスは、IUnknown インターフェイスから継承されます。 IWbemObjectSink には、次の種類のメンバーもあります。
メソッド
IWbemObjectSink インターフェイスには、次のメソッドがあります。
IWbemObjectSink::Indicate 通知を提供するためにソースによって呼び出されます。 |
IWbemObjectSink::SetStatus 通知シーケンスの終了を示すか、シンクに他の状態コードを送信するために、ソースによって呼び出されます。 |
解説
イベント サブスクリプション シンク (IWbemObjectSink または IWbemEventSink) を実装するときは、シンク オブジェクトの Indicate メソッドまたは SetStatus メソッド内から WMI を呼び出さないでください。 たとえば、IWbemServices::CancelAsyncCall を呼び出して Indicate の実装内からシンクを取り消すと、WMI の状態が妨げられる可能性があります。 イベント サブスクリプションを取り消すには、フラグを設定し、IWbemServices::CancelAsyncCall を別のスレッドまたはオブジェクトから呼び出します。 オブジェクト、列挙型、クエリの取得など、イベント シンクに関連しない実装の場合は、WMI にコールバックできます。
イベント通知を配信する WMI スレッドはシンク オブジェクトの処理が完了するまで他の処理を実行できないため、シンクの実装ではイベント通知を 100 ミリ秒内で処理する必要があります。 通知で大量の処理が必要な場合、シンクでは内部キューを別のスレッドで使用して処理を操作できます。
例
次のコード例は、オブジェクト シンクの単純な実装です。 このサンプルを IWbemServices::ExecQueryAsync または IWbemServices::CreateInstanceEnumAsync で使用すると、返されるインスタンスを受け取ることができます。
C++ |
---|
|
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows Vista |
サポートされている最小のサーバー | Windows Server 2008 |
対象プラットフォーム | Windows |
ヘッダー | wbemcli.h (Wbemidl.h を含む) |
関連項目
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示