WSBrowseCallbackFunction (C 関数)
WSBrowseCallbackFunction
WSENVオブジェクト,WSServiceRefオブジェクト,intオブジェクト,const char *オブジェクト,void *オブジェクトを引数として取り,voidを返す関数への関数ポインタを説明するWSTPの型である.
詳細
- 関数WSBrowseForLinkServices()は,ネットワーク上でブラウズ操作を開始して,使用できるWSTPのリンクサービスを見付ける.WSBrowseForLinkServices()は,ブラウズ操作を開始するだけで,すぐに返す.WSTPライブラリは,ネットワークブラウズイベント上のプログラムを更新するために,WSBrowseCallbackFunctionとして入力された関数を通じてアプリケーションへの呼出しを非同期に行う.
- WSBrowseCallbackFunction関数は,void function(WSENV e, WSServiceRef r, int flags, const char *name, void *context);の形式を持つ.
- int引数には,ネットワーク上で起ったイベントの型を表すフラッグが含まれる.
- フラッグの引数は次の値を取ることができる.
-
WSSDADDSERVICE const char *引数は,ネットワーク上で使用可能となった新しいサービスの名前へのポインタを含む WSSDREMOVESERVICE const char *引数は,ネットワーク上でもはや使用できなくなったサービスの名前へのポインタを含む WSSDBROWSEERROR ブラウズ操作でエラーが起った. プログラムは,WSStopBrowsingForLinkServices()を使ってブラウズ操作を終了しなければならない.さらに,すべてのキャッシュされたサービス名は削除されなければならない.ブラウズイベントについてライブラリからさらにアップデートを得るには,プログラムが再度WSBrowseForLinkServices()を呼び出し,新しいブラウズ操作を開始する必要がある.
例題
例 (1)
#include "wstp.h"
void BrowseCallbackFunction(WSENV env, WSServiceRef ref, int flags, const char *serviceName, void *context);
WSServiceRef startBrowseOperation(WSENV e)
{
int apiResult;
WSServiceRef theRef;
apiResult = WSBrowseForLinkServices(e, BrowseCallbackFunction, NULL /* Use the default browse domain */, NULL /* no specific context object for this example */, &theRef);
if(apiResult != 0)
{ /* Handle the error. */ }
return theRef;
}
void BrowseCallbackFunction(WSENV env, WSServiceRef ref, int flags, const char *serviceName, void *context)
{
if(flags & WSSDADDSERVICE)
{ /* Register the service named in serviceName */ }
else if(flags & WSSDREMOVESERVICE)
{ /* Remove the service named in serviceName from the registry */ }
else if(flags & WSSDBROWSEERROR)
{ /* Stop the browse operation and clear the service name cache */ }
}