共用方式為


IFunctionDiscoveryNotification::OnEvent 方法 (functiondiscoveryapi.h)

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

在通知期間接收任何新增、移除或更新事件。

語法

HRESULT OnEvent(
  [in] DWORD          dwEventID,
  [in] FDQUERYCONTEXT fdqcQueryContext,
  [in] const WCHAR    *pszProvider
);

參數

[in] dwEventID

事件的類型。

意義
FD_EVENTID_SEARCHCOMPLETE
1000
搜尋是由提供者完成。 一般而言,此通知是由網路協定提供者傳送,其中通訊協定會指定將接受搜尋結果的已定義間隔。 WSD 和 SSDP 提供者都會使用此事件類型。

傳送此通知之後,查詢會忽略初始搜尋或探查要求的所有傳入回應。 不過,查詢仍會監視 Hello 或 Bye 訊息, (用來指出裝置何時新增或移除) 。 查詢會繼續監視這些事件,直到在查詢物件上呼叫 Release 為止。

如果發生重大錯誤,將不會傳送此通知。

如需特定提供者如何實作或使用此事件的相關信息,請遵循內 建提供者 主題中的提供者文件連結。

FD_EVENTID_ASYNCTHREADEXIT
1001
函式探索用戶端未使用。
FD_EVENTID_SEARCHSTART
1002
函式探索用戶端未使用。
FD_EVENTID_IPADDRESSCHANGE
1003
NIC 的IP位址已變更。 WSD 提供者會實作此通知。 例如,當計算機從睡眠) 喚醒或使用膝上型電腦漫遊時, (發生電源事件時,可能會傳送事件。
注意 此值不適用於 Windows Vista。 它可在 Windows Vista 上使用 SP1、Windows Server 2008 和後續版本的操作系統。
 

[in] fdqcQueryContext

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

[in] pszProvider

提供者的名稱。

傳回值

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

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

備註

函式探索提供者 (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

另請參閱

IFunctionDiscoveryNotification