次の方法で共有


IFunctionDiscoveryNotification::OnUpdate メソッド (functiondiscoveryapi.h)

[関数の検出は、[要件] セクションで指定されたオペレーティング システムで使用できます。 これは、以降のバージョンで変更または使用できない可能性があります。

関数インスタンスが追加、削除、または変更されたことを示します。 このメソッドはクライアント プログラムによって実装され、関数探索によって呼び出されます。

構文

HRESULT OnUpdate(
  [in] QueryUpdateAction enumQueryUpdateAction,
  [in] FDQUERYCONTEXT    fdqcQueryContext,
  [in] IFunctionInstance *pIFunctionInstance
);

パラメーター

[in] enumQueryUpdateAction

指定した関数インスタンスに対して Function Discovery が実行するアクションの種類を指定する QueryUpdateAction 値。

[in] fdqcQueryContext

変更通知用に登録されたコンテキスト。 FDQUERYCONTEXT 型は DWORDLONG として定義されます。 このパラメーターは、NULL でもかまいません。

[in] pIFunctionInstance

更新の影響を受ける関数インスタンスを表す IFunctionInstance インターフェイス ポインター。

戻り値

クライアント プログラムの OnUpdate メソッドの実装では、次のいずれかの HRESULT 値を呼び出し元に返す必要があります。

リターン コード 説明
S_OK
メソッドは正常に完了しました。
E_INVALIDARG
入力パラメーターの 1 つの値が無効です。

注釈

このメソッドからクエリ オブジェクトに対して Release を呼び出さないでください。 これを行うと、デッドロックが発生する可能性があります。 コールバックの処理中に別のスレッドからクエリ オブジェクトに対して Release が呼び出された場合、コールバックが完了するまでオブジェクトは解放されません。

プロバイダーによって Function Discovery に渡されるすべての通知はキューに入れられ、クライアントに 1 つずつ返されます。 コールバックは同期されるため、クライアントは一度に 1 つの通知のみを受信します。

の IFunctionDiscoveryNotification メソッド呼び出しは他のスレッドで行われる可能性があるため、呼び出し中にスレッド状態に加えられた変更は、メソッドを終了する前に復元する必要があります。

次のコードは、OnUpdate ハンドラーの実装を示しています。 CMyNotificationListener クラスは、IFunctionDiscoveryNotification トピックで定義されています。

#include <windows.h>

HRESULT STDMETHODCALLTYPE CMyNotificationListener::OnUpdate(
                                          IN QueryUpdateAction Action,
                                          IN FDQUERYCONTEXT fdqcQueryContext,
                                          IN IFunctionInstance *pInstance)
{
    HRESULT hr = S_OK;

    switch (Action) {
    case QUA_ADD:
        SetEvent( m_hAddEvent );
        break;
    case QUA_REMOVE:
        SetEvent( m_hRemoveEvent );
        break;
    case QUA_CHANGE:
        SetEvent( m_hChangeEvent );
        break;
    }
    return S_OK;
}

要件

要件
サポートされている最小のクライアント Windows Vista [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows Server 2008 [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー functiondiscoveryapi.h

こちらもご覧ください

IFunctionDiscoveryNotification