testofproperties.c [plain text]
#include <libc.h>
#include <IOKit/IOKitLib.h>
#include <CoreFoundation/CoreFoundation.h>
int main(int argc, char *argv[]) {
char *path;
kern_return_t ret;
io_registry_entry_t entry = 0;
CFMutableDictionaryRef props = NULL;
io_string_t iopath;
if(argc != 2) {
fprintf(stderr, "Usage: %s ofpath\n", getprogname());
fprintf(stderr, "\nFor example: %s IODeviceTree:/openprom\n", getprogname());
exit(1);
}
path = argv[1];
entry = IOServiceGetMatchingService(kIOMasterPortDefault,
IOBSDNameMatching(kIOMasterPortDefault, 0, path));
CFShow(IOBSDNameMatching(kIOMasterPortDefault, 0, path));
printf("entry is %p\n", entry);
if(entry == 0) exit(1);
ret = IORegistryEntryCreateCFProperties(entry, &props,
kCFAllocatorDefault, 0);
if(ret) {
fprintf(stderr, "Could not get entry properties\n");
exit(1);
}
TAOCFPrettyPrint(props);
ret = IORegistryEntryGetPath(entry, kIOServicePlane, iopath);
if(ret) {
fprintf(stderr, "Could not get entry path\n");
exit(1);
}
printf("%s path: %s\n", kIOServicePlane, iopath);
ret = IORegistryEntryGetPath(entry, kIODeviceTreePlane, iopath);
if(ret) {
fprintf(stderr, "Could not get entry path\n");
exit(1);
}
printf("%s path: %s\n", kIODeviceTreePlane, iopath);
CFRelease(props);
IOObjectRelease(entry);
return 0;
}