[関数検出は、[要件] セクションで指定したオペレーティング システムで使用できます。 以降のバージョンでは変更または使用できない場合があります。]
通知中に追加、削除、または更新のイベントを受信します。
構文
HRESULT OnEvent(
[in] DWORD dwEventID,
[in] FDQUERYCONTEXT fdqcQueryContext,
[in] const WCHAR *pszProvider
);
パラメーター
[in] dwEventID
イベントの種類。
| 値 | 意味 |
|---|---|
|
プロバイダーによって検索が完了しました。 通常、この通知はネットワーク プロトコル プロバイダーによって送信されます。このプロトコルでは、検索結果を受け入れる定義済みの間隔が指定されます。 WSD プロバイダーと SSDP プロバイダーの両方で、このイベントの種類が使用されます。
この通知が送信されると、クエリは最初の検索またはプローブ要求に対するすべての受信応答を無視します。 ただし、クエリは引き続き Hello メッセージまたは Bye メッセージを監視します (デバイスが追加または削除されるタイミングを示すために使用されます)。 クエリは、クエリ オブジェクトで Release が呼び出されるまで、これらのイベントを監視し続けます。 致命的なエラーが発生した場合、この通知は送信されません。 このイベントが特定のプロバイダーによって実装または使用される方法の詳細については、「 組み込み プロバイダー」トピックのプロバイダードキュメントへのリンクに従ってください。 |
|
関数探索クライアントでは使用されません。 |
|
関数探索クライアントでは使用されません。 |
|
NIC の IP アドレスが変更されました。 WSD プロバイダーはこの通知を実装します。 イベントは、電源イベントが発生したとき (たとえば、マシンがスリープ状態から復帰したとき) またはノート PC を使用してローミングするときに送信される場合があります。
メモ この値は、Windows Vista では使用できません。 SP1、Windows Server 2008、および以降のバージョンのオペレーティング システムを備えた Windows Vista で使用できます。
|
[in] fdqcQueryContext
変更通知用に登録されたコンテキスト。 FDQUERYCONTEXT 型は DWORDLONG として定義されます。 このパラメーターは、NULL でもかまいません。
[in] pszProvider
プロバイダーの名前。
戻り値
OnEvent メソッドのクライアント プログラムの実装では、次のいずれかの HRESULT 値を呼び出し元に返す必要があります。
| リターン コード | 説明 |
|---|---|
|
メソッドは正常に完了しました。 |
|
入力パラメーターの 1 つの値が無効です。 |
注釈
関数探索プロバイダー (SSDP および WSD) は、このメソッドを使用して、検索パスが完了したことを示す通知を実装します。
このメソッドからクエリ オブジェクトに対して Release を呼び出さないでください。 これにより、デッドロックが発生する可能性があります。 コールバックの処理中に別のスレッドからクエリ オブジェクトに 対して Release が呼び出された場合、コールバックが完了するまでオブジェクトは解放されません。
プロバイダーによって Function Discovery に渡されるすべての通知がキューに登録され、クライアントに 1 つずつ返されます。 コールバックは、クライアントが一度に 1 つの通知のみを受信するように同期されます。
他 の 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 |