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引数には,ネットワーク上で起ったイベントの型を表すフラッグが含まれる.
  • フラッグの引数は次の値を取ることができる.
  • WSSDADDSERVICEconst char *引数は,ネットワーク上で使用可能となった新しいサービスの名前へのポインタを含む
    WSSDREMOVESERVICEconst 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 */ }
}