iphone IOKit 遍历 IORegistryEntry,获取名称和属性
2012-05-19 16:27
267 查看
1、加入IOKit.framework
2、
io_name_t name;
io_registry_entry_t rootEntry = IORegistryGetRootEntry(kIOMasterPortDefault);
IORegistryEntryGetName(rootEntry,name); //获取名称
printf("Device's name = %s\n", name);
[self findChild:rootEntry level:0];
3、
-(void) findChild:(io_registry_entry_t) parent level:(int) iLevel{
io_iterator_t iterator;
io_name_t name;
IORegistryEntryGetChildIterator(parent,kIOServicePlane,&iterator);
io_iterator_t t = IOIteratorNext(iterator);
while(t!=0){
IORegistryEntryGetName(t,name);
for(int i=0;i<iLevel;i++){
printf("--");
}
printf("|%s\n", name);
//获取属性
CFTypeRef IORegistryEntrySearchCFProperty(
io_registry_entry_t entry,
const io_name_t plane,
CFStringRef key,
CFAllocatorRef allocator,
IOOptionBits options );
if([self compareCharArray:name to:"IOAccessoryPortSerial"]){
[Util showAlertDialog:@"RegistryEntry" aMessage:[NSString stringWithFormat:@" retain count=%d", [(NSString*)t retainCount]]];
CFTypeRef typeRef = nil;
typeRef = IORegistryEntrySearchCFProperty(
t,
kIOServicePlane,
CFSTR("IOAccessoryDevicePort"),
kCFAllocatorDefault,
kIORegistryIterateRecursively);
[Util showAlertDialog:@"IOkit" aMessage:[NSString stringWithFormat:@"%@", (CFNumberRef)typeRef]];
}
[self findChild:t level:iLevel+1];
t = IOIteratorNext(iterator);
}
4、没有发现遍历属性的方法
2、
io_name_t name;
io_registry_entry_t rootEntry = IORegistryGetRootEntry(kIOMasterPortDefault);
IORegistryEntryGetName(rootEntry,name); //获取名称
printf("Device's name = %s\n", name);
[self findChild:rootEntry level:0];
3、
-(void) findChild:(io_registry_entry_t) parent level:(int) iLevel{
io_iterator_t iterator;
io_name_t name;
IORegistryEntryGetChildIterator(parent,kIOServicePlane,&iterator);
io_iterator_t t = IOIteratorNext(iterator);
while(t!=0){
IORegistryEntryGetName(t,name);
for(int i=0;i<iLevel;i++){
printf("--");
}
printf("|%s\n", name);
//获取属性
CFTypeRef IORegistryEntrySearchCFProperty(
io_registry_entry_t entry,
const io_name_t plane,
CFStringRef key,
CFAllocatorRef allocator,
IOOptionBits options );
if([self compareCharArray:name to:"IOAccessoryPortSerial"]){
[Util showAlertDialog:@"RegistryEntry" aMessage:[NSString stringWithFormat:@" retain count=%d", [(NSString*)t retainCount]]];
CFTypeRef typeRef = nil;
typeRef = IORegistryEntrySearchCFProperty(
t,
kIOServicePlane,
CFSTR("IOAccessoryDevicePort"),
kCFAllocatorDefault,
kIORegistryIterateRecursively);
[Util showAlertDialog:@"IOkit" aMessage:[NSString stringWithFormat:@"%@", (CFNumberRef)typeRef]];
}
[self findChild:t level:iLevel+1];
t = IOIteratorNext(iterator);
}
4、没有发现遍历属性的方法
相关文章推荐
- iphone IOKit 遍历 IORegistryEntry,获取名称和属性
- js 获取函数的所有参数和遍历JavaScript某个对象所有的属性名称和值的方法
- js 获取函数的所有参数和遍历JavaScript某个对象所有的属性名称和值的方法
- js 获取函数的所有参数和遍历JavaScript某个对象所有的属性名称和值的方法
- jquery动态添加以及遍历option并获取特定样式名称的option
- linux内核模块遍历获取进程列表,使用list_entry()
- java获取对象属性类型、属性名称、属性值 .
- Asp.Net 文件操作基类(读取,删除,批量拷贝,删除,写入,获取文件夹大小,文件属性,遍历目录)
- .NET 获取IIS中网站名称和属性
- [导入]Asp.Net 文件操作基类(读取,删除,批量拷贝,删除,写入,获取文件夹大小,文件属性,遍历目录)(一)
- C#遍历系统所安装的打印机,使用WMI方式获取打印机的所有属性
- C#遍历系统所安装的打印机,使用WMI方式获取打印机的所有属性
- 获取Java对象中所有的属性名称和属性值
- Asp.Net 文件操作基类(读取,删除,批量拷贝,删除,写入,获取文件夹大小,文件属性,遍历目录)
- .NET 获取IIS中网站名称和属性
- windows api学习笔记-遍历系统进程,获取进程名称和ID(进程快照)
- iPhone,iPad如何获取WIFI名称即SSID
- iPhone获取WiFi的名称即SSID
- 遍历一个实例的所有属性,得到属性的名称和值
- IPhone中获取文件各项属性方法