[函式探索可用於需求一節中指定的作業系統。 後續版本可能會變更或無法使用。]
表示已新增、移除或變更函式實例。 這個方法是由用戶端程式所實作,並由函式探索呼叫。
語法
HRESULT OnUpdate(
[in] QueryUpdateAction enumQueryUpdateAction,
[in] FDQUERYCONTEXT fdqcQueryContext,
[in] IFunctionInstance *pIFunctionInstance
);
參數
[in] enumQueryUpdateAction
QueryUpdateAction 值,指定函式探索在指定的函式實例上執行的動作類型。
[in] fdqcQueryContext
註冊變更通知的內容。 FDQUERYCONTEXT 類型定義為 DWORDLONG。 此參數可以是 Null。
[in] pIFunctionInstance
IFunctionInstance 介面指標,表示受更新影響的函式實例。
傳回值
用戶端程式的 OnUpdate 方法實作應該會將下列其中一個 HRESULT 值傳回給呼叫端。
| 傳回碼 | 描述 |
|---|---|
|
已成功完成命令。 |
|
其中一個輸入參數的值無效。 |
備註
請勿從這個方法對查詢物件呼叫 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 |