парсинг ключей CFMutableDictionary

Я использую 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

Может ли кто-нибудь помочь мне пройти через это?

0

Решение

Здесь 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]);
}
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]