[函式探索可用於需求一節中指定的作業系統。 後續版本可能會變更或無法使用。]
在通知期間接收任何新增、移除或更新事件。
語法
HRESULT OnEvent(
[in] DWORD dwEventID,
[in] FDQUERYCONTEXT fdqcQueryContext,
[in] const WCHAR *pszProvider
);
參數
[in] dwEventID
事件的類型。
| 值 | 意義 |
|---|---|
|
搜尋是由提供者完成。 一般而言,此通知是由網路協定提供者傳送,其中通訊協定會指定將接受搜尋結果的已定義間隔。 WSD 和 SSDP 提供者都會使用此事件類型。
傳送此通知之後,查詢會忽略初始搜尋或探查要求的所有傳入回應。 不過,查詢仍會監視 Hello 或 Bye 訊息, (用來指出裝置何時新增或移除) 。 查詢會繼續監視這些事件,直到在查詢物件上呼叫 Release 為止。 如果發生重大錯誤,將不會傳送此通知。 如需特定提供者如何實作或使用此事件的相關信息,請遵循內 建提供者 主題中的提供者文件連結。 |
|
函式探索用戶端未使用。 |
|
函式探索用戶端未使用。 |
|
NIC 的IP位址已變更。 WSD 提供者會實作此通知。 例如,當計算機從睡眠) 喚醒或使用膝上型電腦漫遊時, (發生電源事件時,可能會傳送事件。
注意 此值不適用於 Windows Vista。 它可在 Windows Vista 上使用 SP1、Windows Server 2008 和後續版本的操作系統。
|
[in] fdqcQueryContext
註冊變更通知的內容。 FDQUERYCONTEXT 類型定義為 DWORDLONG。 此參數可以是 Null。
[in] pszProvider
提供者的名稱。
傳回值
用戶端程式的 OnEvent 方法實作應該會將下列其中一個 HRESULT 值傳回給呼叫端。
| 傳回碼 | 描述 |
|---|---|
|
已成功完成命令。 |
|
其中一個輸入參數的值無效。 |
備註
函式探索提供者 (SSDP 和 WSD) 使用此方法來實作搜尋傳遞完成的通知。
請勿從這個方法對查詢物件呼叫 Release 。 這樣做可能會導致死結。 如果在處理回呼時,從另一個線程呼叫 Release ,則直到回呼完成之後,才會釋放物件。
由提供者傳遞至函式探索的所有通知都會排入佇列,並逐一傳回給用戶端。 回呼會同步處理,因此用戶端一次只會收到一個通知。
因為其他 IFunctionDiscoveryNotification 方法呼叫可能會在其他線程中進行,所以必須在呼叫期間還原對線程狀態所做的任何變更,才能結束 方法。
範例
下列範例顯示 OnEvent 處理程式實作。 CMyNotificationListener 類別定義於 IFunctionDiscoveryNotification 主題中。
#include <windows.h>
HRESULT CMyNotificationListener::OnEvent(
IN DWORD dwEventID,
IN FDQUERYCONTEXT fdqcQueryContext,
IN const WCHAR * pszProvider
)
{
HRESULT hr = S_OK;
HANDLE hSearchComplete = INVALID_HANDLE_VALUE;
hSearchComplete = OpenEventW( EVENT_ALL_ACCESS,
FALSE,
L"SearchComplete" );
if( NULL == hSearchComplete )
{
return hr;
}
if( FD_EVENTID_SEARCHCOMPLETE == dwEventID )
{
SetEvent( hSearchComplete );
}
CloseHandle( hSearchComplete );
return hr;
}
規格需求
| 需求 | 值 |
|---|---|
| 最低支援的用戶端 | Windows Vista [僅限傳統型應用程式] |
| 最低支援的伺服器 | Windows Server 2008 [僅限傳統型應用程式] |
| 目標平台 | Windows |
| 標頭 | functiondiscoveryapi.h |