0

IOKitを使用して情報を取得しています

kr = IOServiceGetMatchingServices(kIOMasterPortDefault, IOServiceNameMatching("AppleUSBEHCI"), &io_objects);
[snip]
kr = IORegistryEntryCreateCFProperties(child, &child_props,  kCFAllocatorDefault, kNilOptions );
            NSLog(@"Child props: %@", child_props);
            //release child_props
        }

        IOObjectRelease(io_service);
    }

sn = (CFStringRef) CFDictionaryGetValue(child_props, CFSTR("IOCFPlugInTypes"));
NSLog(@"sn: %@", sn);

私は鍵を追いかけますIOCFPlugInTypes

それはうまくいきます、私は戻ってきます:

{ "9dc7b780-9ec0-11d4-a54f-000a27052861" = "IOUSBFamily.kext/Contents/PlugIns/IOUSBLib.bundle"; }

しかし、次に行う必要があるのは、次のような部分を取得することです。9dc7b780-9ec0-11d4-a54f-000a27052861

誰かが私がこれをやり遂げるのを手伝ってもらえますか?

4

1 に答える 1

1

ここで CFDictionaryGetValue は、タイプ CFDictionaryRef の別のオブジェクトを返します (型キャストされた文字列ではありません)。したがって、「9dc7b780-9ec0-11d4-a54f-000a27052861」がその辞書のキーです。あなたは以下のようなことをしているはずです:

CFTypeRef sn = (CFTypeRef)CFDictionaryGetValue(child_props, CFSTR("IOCFPlugInTypes"));
if (CFDictionaryGetTypeID() == CFGetTypeID(sn))
{
    int dictSize = CFDictionaryGetCount(sn);
    CFStringRef * keys = (CFStringRef*)malloc (dictSize * sizeof (CFStringRef));
    CFDictionaryGetKeysAndValues (sn, keys, NULL);
    for (int i = 0; i < dictSize; i++)
    {
        CFShow(keys[i]);
    }
}
于 2013-04-25T04:36:36.770 に答える