共用方式為


IFunctionDiscoveryNotification::OnUpdate 方法 (functiondiscoveryapi.h)

[函式探索可用於需求一節中指定的作業系統。 後續版本可能會變更或無法使用。]

表示已新增、移除或變更函式實例。 這個方法是由用戶端程式所實作,並由函式探索呼叫。

語法

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

參數

[in] enumQueryUpdateAction

QueryUpdateAction 值,指定函式探索在指定的函式實例上執行的動作類型。

[in] fdqcQueryContext

註冊變更通知的內容。 FDQUERYCONTEXT 類型定義為 DWORDLONG。 此參數可以是 Null

[in] pIFunctionInstance

IFunctionInstance 介面指標,表示受更新影響的函式實例。

傳回值

用戶端程式的 OnUpdate 方法實作應該會將下列其中一個 HRESULT 值傳回給呼叫端。

傳回碼 描述
S_OK
已成功完成命令。
E_INVALIDARG
其中一個輸入參數的值無效。

備註

請勿從這個方法對查詢物件呼叫 Release 。 這樣做可能會導致死結。 如果在處理回呼時,從另一個線程呼叫 Release ,則直到回呼完成之後,才會釋放物件。

由提供者傳遞至函式探索的所有通知都會排入佇列,並逐一傳回給用戶端。 回呼會同步處理,因此用戶端一次只會收到一個通知。

因為其他 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