Win32 API 日本語リファレンス
ホームDevices.WebServicesOnDevices › IWSDiscoveryProviderNotify

IWSDiscoveryProviderNotify

COM
IID73ee3ced-b6e6-4329-a546-3e8ad46563d2継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

IWSDiscoveryProvider からのコールバック通知を受け取るために、クライアントプログラムが実装するインターフェイスです。

メソッド 4

vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。

vtbl 3 HRESULT Add(IWSDiscoveredService* pService)

新たにアナウンスされた探索(ディスカバリー)ホスト(Hello メッセージによるもの)、またはユーザーが開始したクエリに一致した結果に関する情報を提供します。

pServiceIWSDiscoveredService*inリモートの探索ホストを表す IWSDiscoveredService インターフェイスへのポインターです。

戻り値

戻り値に意味はありません。実装側は S_OK を返してください。

解説(Remarks)

Add は、未処理のクエリに一致するたびに 1 回、および新しい探索ホストのアナウンスごとに 1 回呼び出されます。

注意 プロバイダーからは Add が同時に複数回呼び出される可能性があるため、このコールバックルーチンを実装する際は共有データを必ず同期してください。
vtbl 4 HRESULT Remove(IWSDiscoveredService* pService)

直前に離脱した探索(ディスカバリー)ホスト(Bye メッセージによるもの)に関する情報を提供します。

pServiceIWSDiscoveredService*inリモートの探索ホストを表す IWSDiscoveredService インターフェイスへのポインターです。

戻り値

戻り値に意味はありません。実装側は S_OK を返してください。

解説(Remarks)

Remove は、離脱する探索ホストのアナウンスごとに 1 回呼び出されます。

注意 プロバイダーからは Remove が同時に複数回呼び出される可能性があるため、このコールバックルーチンを実装する際は共有データを必ず同期してください。
vtbl 5 HRESULT SearchFailed(HRESULT hr, LPWSTR pszTag)

ユーザーが開始した検索が失敗したことを示すために呼び出されます。

hrHRESULTinこのコールバックの原因となった検索失敗の理由です。値が S_FALSE の場合は、Add コールバックが 1 回も発行されないまま検索が完了したことを示します。
pszTagLPWSTRinoptionalこの検索を識別する任意指定のタグです。NULL の場合があります。

戻り値

戻り値に意味はありません。実装側は S_OK を返してください。

解説(Remarks)

応答が 1 つでも正常に受信された場合は、SearchComplete が呼び出されます。

ユーザーが開始したクエリに対して応答が得られなかった場合は SearchFailed が呼び出されます。この場合、hr パラメーターの値は S_FALSE になります。クエリの送信は必ずしも同期的ではないため、クエリの送信を試みた際にエラーが発生した場合にも、SearchFailed が呼び出されることがあります。pszTag はクエリでユーザーが指定したタグと一致するため、どのクエリが失敗したかを識別するために使用してください。

SearchByType または SearchById で検索を開始してから SearchFailed 通知を受け取るまでの間隔は最大 10 秒です。これは WS-Discovery の MATCH_TIMEOUT に基づき、DPWS Appendix I で修正された値です。SearchByAddress で検索を開始してから SearchFailed 通知を受け取るまでの間隔は通常 21 秒ですが、最大で 150 秒になることがあります。

注意 プロバイダーからは SearchFailed が同時に複数回呼び出される可能性があるため、このコールバック内では共有データを必ず同期してください。
vtbl 6 HRESULT SearchComplete(LPWSTR pszTag)

ユーザーが開始した検索が正常に完了し、その検索に対する一致がこれ以上受け付けられないことを示すために呼び出されます。

pszTagLPWSTRinoptionalIWSDiscoveryProvider の検索メソッドに渡された検索タグです。

戻り値

戻り値に意味はありません。実装側は S_OK を返してください。

解説(Remarks)

特定の検索に対して応答が 1 つも受信されなかった場合は、それを示すために IWSDiscoveryProviderNotify::SearchFailed が呼び出されます。

SearchByType または SearchById で検索を開始してから SearchComplete 通知を受け取るまでの間隔は最大 10 秒です。これは WS-Discovery の MATCH_TIMEOUT に基づき、DPWS Appendix I で修正された値です。SearchByAddress で検索を開始してから SearchComplete 通知を受け取るまでの間隔は最大 150 秒です。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)

HSP用 COM定義

#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"

#define global IID_IWSDiscoveryProviderNotify "{73EE3CED-B6E6-4329-A546-3E8AD46563D2}"
#usecom global IWSDiscoveryProviderNotify IID_IWSDiscoveryProviderNotify "{}"
#comfunc global IWSDiscoveryProviderNotify_Add             3 sptr
#comfunc global IWSDiscoveryProviderNotify_Remove          4 sptr
#comfunc global IWSDiscoveryProviderNotify_SearchFailed    5 int,wstr
#comfunc global IWSDiscoveryProviderNotify_SearchComplete  6 wstr
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。