no estoy seguro de si "AppleUSBEHCI" es lo más apropiado para buscar pero se puede recuperar este tipo de datos utilizando el marco IOKit:
#include <IOKit/IOKitLib.h>
#include <Cocoa/Cocoa.h>
kern_return_t kr;
io_iterator_t io_objects;
io_service_t io_service;
kr = IOServiceGetMatchingServices(kIOMasterPortDefault,
IOServiceNameMatching("AppleUSBEHCI"), &io_objects);
if(kr != KERN_SUCCESS)
exit(1);
while((io_service= IOIteratorNext(io_objects)))
{
kr = IORegistryEntryCreateCFProperties(io_service, &service_properties, kCFAllocatorDefault, kNilOptions);
if(kr == KERN_SUCCESS)
{
NSDictionary * m = (NSDictionary *)service_properties;
NSLog(@"%@", m);
CFRelease(service_properties);
}
io_iterator_t iter;
//handle kr error
kr = IORegistryEntryGetChildIterator(io_service, kIOServicePlane, &iter);
io_registry_entry_t child;
while((child = IOIteratorNext(iter)))
{
kr = IORegistryEntryCreateCFProperties(child, &child_props, kCFAllocatorDefault, kNilOptions);
NSLog(@"Child props: %@", child_props);
//release child_props
}
IOObjectRelease(io_service);
}
IOObjectRelease(io_objects);
AppleAHCIDiskDriver - no resulta disco duro que están conectados son USB. Al buscar en el sistema Profiler USB HD estaba usando "controlador de host controlador: \t AppleUSBEHCI" así que traté de usar AppleUSBEHCI en su lugar AppleAHCIDiskDriver pero no se produjo ningún resultado. no estoy seguro de que me falta algo. –
Es posible que desee probar la respuesta de mouviciel antes de continuar en la ruta IOKit. Para dispositivos conectados a USB, haga IOServiceNameMatching ("AppleUSBEHCI") y luego itere a través de todos sus elementos secundarios usando IORegistryEntryGetChildIterator (io_service, kIOServicePlane, & iter). – diciu
Agradezco tu ayuda. Ataron la solución de mouviciel pero no funcionó. cuando traté de usar IORegistryEntryGetChildIterator - devuelve el error (268435459), acabo de llamar a esto después de IOServiceGetMatchingServices, no estoy seguro de lo que me estoy perdiendo. –