0

ネットワーク ストレージを参照するための小さな iPhone/iPad アプリを書き始めたばかりで、利用可能なディスクを検索したいと考えています。私はCFNetServiceと関連する機能で正しい軌道に乗っていると思いますが、この時点で少し助けていただければ幸いです:

Apple のドキュメントの次の例の「gServiceBrowserRef」セットアップにある「MyBrowseCallBack」のように、CFNetServiceCallBack 関数の例を投稿していただけませんか。

static Boolean MyStartBrowsingForServices(CFStringRef type, CFStringRef domain) {

 CFNetServiceClientContext clientContext = { 0, NULL, NULL, NULL, NULL };

 CFStreamError error;

 Boolean result;



 assert(type != NULL);



 gServiceBrowserRef = CFNetServiceBrowserCreate(kCFAllocatorDefault, MyBrowseCallBack, &clientContext);

 assert(gServiceBrowserRef != NULL);



 CFNetServiceBrowserScheduleWithRunLoop(gServiceBrowserRef, CFRunLoopGetCurrent(), kCFRunLoopCommonModes);



 result = CFNetServiceBrowserSearchForServices(gServiceBrowserRef, domain, type, &error);

 if (result == false) {



     // Something went wrong so lets clean up.

     CFNetServiceBrowserUnscheduleFromRunLoop(gServiceBrowserRef, CFRunLoopGetCurrent(), kCFRunLoopCommonModes);         CFRelease(gServiceBrowserRef);

     gServiceBrowserRef = NULL;



     fprintf(stderr, "CFNetServiceBrowserSearchForServices returned (domain = %d, error = %ld)\n", error.domain, error.error);

 }



 return result;

}

正直なところ、ドキュメントを読んでいます!個人的には、このトピックを調査するのが難しいと感じており(ネットワークコーディングに初めて参加しました)、正しい方向に少しだけ微調整したいと思います。「MyBrowseCallBack」に必要な関数のシグネチャを示すのはほんの一例ですが

4

1 に答える 1

0

私は答えを見つけました-通常は私の鼻のすぐ下です!

void clientCB (CFNetServiceBrowserRef browser,CFOptionFlags flags,CFTypeRef domainOrService,CFStreamError* error,void* info)
{
NSLog(@"Found browser: %@",domainOrService);
CFStreamError anError;
if ((flags && kCFNetServiceFlagMoreComing) != kCFNetServiceFlagMoreComing) {
    NSLog(@"That'll be all...");
    CFNetServiceBrowserStopSearch(browser, &anError);
    return;
}
return;

}

私は間違ったツリーを吠えていると思いますが、リモートディスクのファイルディレクトリを取得することにこれ以上近づくことはおそらくないでしょう...。

于 2012-03-10T15:30:46.090 に答える