本文整理汇总了C++中IOServiceGetMatchingServices函数的典型用法代码示例。如果您正苦于以下问题:C++ IOServiceGetMatchingServices函数的具体用法?C++ IOServiceGetMatchingServices怎么用?C++ IOServiceGetMatchingServices使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了IOServiceGetMatchingServices函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: qWarning
// static
void QextSerialEnumerator::scanPortsOSX(QList<QextPortInfo> & infoList)
{
io_iterator_t serialPortIterator = 0;
kern_return_t kernResult = KERN_FAILURE;
CFMutableDictionaryRef matchingDictionary;
// first try to get any serialbsd devices, then try any USBCDC devices
if( !(matchingDictionary = IOServiceMatching(kIOSerialBSDServiceValue) ) ) {
qWarning("IOServiceMatching returned a NULL dictionary.");
return;
}
CFDictionaryAddValue(matchingDictionary, CFSTR(kIOSerialBSDTypeKey), CFSTR(kIOSerialBSDAllTypes));
// then create the iterator with all the matching devices
if( IOServiceGetMatchingServices(kIOMasterPortDefault, matchingDictionary, &serialPortIterator) != KERN_SUCCESS ) {
qCritical() << "IOServiceGetMatchingServices failed, returned" << kernResult;
return;
}
iterateServicesOSX(serialPortIterator, infoList);
IOObjectRelease(serialPortIterator);
serialPortIterator = 0;
if( !(matchingDictionary = IOServiceNameMatching("AppleUSBCDC")) ) {
qWarning("IOServiceNameMatching returned a NULL dictionary.");
return;
}
if( IOServiceGetMatchingServices(kIOMasterPortDefault, matchingDictionary, &serialPortIterator) != KERN_SUCCESS ) {
qCritical() << "IOServiceGetMatchingServices failed, returned" << kernResult;
return;
}
iterateServicesOSX(serialPortIterator, infoList);
IOObjectRelease(serialPortIterator);
}
示例2: createSerialIterator
static kern_return_t createSerialIterator(io_iterator_t *serialIterator)
{
kern_return_t kernResult;
mach_port_t masterPort;
CFMutableDictionaryRef classesToMatch;
if ((kernResult = IOMasterPort(0, &masterPort)) != KERN_SUCCESS)
{
printf("IOMasterPort returned %d\n", kernResult);
return kernResult;
}
if ((classesToMatch = IOServiceMatching(kIOSerialBSDServiceValue)) == NULL)
{
printf("IOServiceMatching returned NULL\n");
return kernResult;
}
CFDictionarySetValue(classesToMatch, CFSTR(kIOSerialBSDTypeKey),CFSTR(kIOSerialBSDAllTypes));
kernResult = IOServiceGetMatchingServices(masterPort, classesToMatch, serialIterator);
if (kernResult != KERN_SUCCESS)
{
printf("IOServiceGetMatchingServices returned %d\n", kernResult);
}
return kernResult;
}
示例3: SMCOpen
kern_return_t SMCOpen(io_connect_t *conn, const char *serviceName)
{
kern_return_t result;
mach_port_t masterPort;
io_iterator_t iterator;
io_object_t device;
IOMasterPort(MACH_PORT_NULL, &masterPort);
CFMutableDictionaryRef matchingDictionary = IOServiceMatching(serviceName);
result = IOServiceGetMatchingServices(masterPort, matchingDictionary, &iterator);
if (result != kIOReturnSuccess)
{
//printf("Error: IOServiceGetMatchingServices() = %08x\n", result);
return 1;
}
device = IOIteratorNext(iterator);
IOObjectRelease((io_object_t)iterator);
if (device == 0)
{
//printf("Error: no SMC found\n");
return 1;
}
result = IOServiceOpen(device, mach_task_self(), 0, conn);
IOObjectRelease(device);
if (result != kIOReturnSuccess)
{
//printf("Error: IOServiceOpen() = %08x\n", result);
return 1;
}
return kIOReturnSuccess;
}
示例4: getstats
static int
getstats(void)
{
time_t now;
io_iterator_t drivelist;
io_registry_entry_t drive;
CFMutableDictionaryRef match;
kern_return_t status;
now = time(NULL); /* register current time and check wether cache can be used */
if (cache_time + CACHE_TIMEOUT > now) {
return 0;
}
/* Retrieve a list of drives. */
match = IOServiceMatching("IOMedia");
CFDictionaryAddValue(match, CFSTR(kIOMediaWholeKey), kCFBooleanTrue);
status = IOServiceGetMatchingServices(masterPort, match, &drivelist);
if (status != KERN_SUCCESS) {
snmp_log(LOG_ERR, "diskio: couldn't match whole IOMedia devices\n");
/* fprintf(stderr,"Couldn't match whole IOMedia devices\n"); */
return(1);
}
num_drives = 0; /* NB: Incremented by handle_drive */
while ((drive = IOIteratorNext(drivelist)) && (num_drives < MAXDRIVES)) {
handle_drive(drive, &drivestat[num_drives]);
IOObjectRelease(drive);
}
IOObjectRelease(drivelist);
cache_time = now;
return (0);
}
示例5: serial_enumerate_device_names
void
serial_enumerate_device_names (serial_enumerate_device_names_callback *callback) {
io_object_t serialPort;
io_iterator_t serialPortIterator;
// ask for all the serial ports
IOServiceGetMatchingServices(kIOMasterPortDefault,
IOServiceMatching(kIOSerialBSDServiceValue),
&serialPortIterator);
// loop through all the serial ports and add them to the array
while ((serialPort = IOIteratorNext(serialPortIterator))) {
CFStringRef string = IORegistryEntryCreateCFProperty(serialPort, CFSTR(kIOCalloutDeviceKey), kCFAllocatorDefault, 0);
CFIndex length = CFStringGetLength(string);
CFIndex maxSize = CFStringGetMaximumSizeForEncoding(length, kCFStringEncodingUTF8);
char *buffer = (char *)malloc(maxSize);
if (CFStringGetCString(string, buffer, maxSize, kCFStringEncodingUTF8)) {
callback(buffer);
}
free(buffer);
CFRelease(string);
IOObjectRelease(serialPort);
}
IOObjectRelease(serialPortIterator);
}
示例6: MediaTypeForBSDName
/**
* Given a BSD device node name, guess its media type
*/
MythMediaType MediaTypeForBSDName(const char *bsdName)
{
CFMutableDictionaryRef matchingDict;
kern_return_t kernResult;
io_iterator_t iter;
io_service_t service;
QString msg = QString("MediaTypeForBSDName(%1)")
.arg(bsdName);
MythMediaType mediaType;
if (!bsdName || !*bsdName)
{
LOG(VB_GENERAL, LOG_ALERT, msg + " - No name supplied?");
return MEDIATYPE_UNKNOWN;
}
matchingDict = IOBSDNameMatching(sMasterPort, 0, bsdName);
if (!matchingDict)
{
LOG(VB_GENERAL, LOG_ALERT,
msg + " - IOBSDNameMatching() returned a NULL dictionary.");
return MEDIATYPE_UNKNOWN;
}
// Return an iterator across all objects with the matching
// BSD node name. Note that there should only be one match!
kernResult = IOServiceGetMatchingServices(sMasterPort, matchingDict, &iter);
if (KERN_SUCCESS != kernResult)
{
LOG(VB_GENERAL, LOG_ALERT,
QString(msg + " - IOServiceGetMatchingServices() returned %2")
.arg(kernResult));
return MEDIATYPE_UNKNOWN;
}
if (!iter)
{
LOG(VB_GENERAL, LOG_ALERT,
msg + " - IOServiceGetMatchingServices() returned a NULL "
"iterator");
return MEDIATYPE_UNKNOWN;
}
service = IOIteratorNext(iter);
// Release this now because we only expect
// the iterator to contain a single io_service_t.
IOObjectRelease(iter);
if (!service)
{
LOG(VB_GENERAL, LOG_ALERT,
msg + " - IOIteratorNext() returned a NULL iterator");
return MEDIATYPE_UNKNOWN;
}
mediaType = FindMediaType(service);
IOObjectRelease(service);
return mediaType;
}
示例7: isComputerIdle
bool isComputerIdle(int idle_secs)
{
int64_t os_idle_secs = 0;
io_iterator_t iter = 0;
if (IOServiceGetMatchingServices(kIOMasterPortDefault,
IOServiceMatching("IOHIDSystem"),
&iter) == KERN_SUCCESS)
{
io_registry_entry_t entry = IOIteratorNext(iter);
if (entry)
{
CFMutableDictionaryRef dict = NULL;
if (IORegistryEntryCreateCFProperties(entry, &dict,
kCFAllocatorDefault,
0) == KERN_SUCCESS)
{
CFNumberRef obj = static_cast<CFNumberRef>
(CFDictionaryGetValue(dict,
CFSTR("HIDIdleTime")));
if (obj)
{
int64_t nanoseconds = 0;
if (CFNumberGetValue(obj, kCFNumberSInt64Type,
&nanoseconds))
{
// Divide by 10^9 to convert from nanoseconds to seconds.
os_idle_secs = (nanoseconds >> 30);
}
}
}
示例8: getSerialModemList
CFArrayRef getSerialModemList() {
uint32_t serialModemCount = 0;
CFMutableArrayRef devicePaths = CFArrayCreateMutable(kCFAllocatorDefault, serialModemCount, &kCFTypeArrayCallBacks);
kern_return_t kernalReturnValue;
CFMutableDictionaryRef deviceMatchingDictionary = NULL;
deviceMatchingDictionary = IOServiceMatching(kIOSerialBSDServiceValue);
io_iterator_t deviceIterator;
kernalReturnValue = IOServiceGetMatchingServices(kIOMasterPortDefault, deviceMatchingDictionary,
&deviceIterator);
if (kernalReturnValue != KERN_SUCCESS) {
return NULL;
}
io_service_t device;
while ((device = IOIteratorNext(deviceIterator)))
{
CFMutableDictionaryRef deviceProperties = NULL;
kernalReturnValue = IORegistryEntryCreateCFProperties(device, &deviceProperties, kCFAllocatorDefault, kNilOptions);
if (kernalReturnValue != KERN_SUCCESS) {
return NULL;
}
CFStringRef devicePathKey = CFStringCreateWithCString(kCFAllocatorDefault, kIOCalloutDeviceKey, kCFStringEncodingASCII);
CFStringRef devicePath = CFDictionaryGetValue(deviceProperties, devicePathKey);
IOObjectRelease(device);
CFArrayAppendValue(devicePaths, devicePath);
}
IOObjectRelease(deviceIterator);
return CFArrayCreateCopy(kCFAllocatorDefault, devicePaths);
}
示例9: measureIoLoad
// This function is much inspired by record_all_devices() from
// http://opensource.apple.com/source/system_cmds/system_cmds-230/iostat.tproj/iostat.c
static void measureIoLoad(meter_sysload_t *load) {
dynamic_accumulator_t *ioLoad = (dynamic_accumulator_t*)load->user;
dynamic_accumulator_startReporting(ioLoad);
// For all devices..
io_iterator_t drivelist;
io_registry_entry_t drive;
CFMutableDictionaryRef match;
kern_return_t status;
// Get an iterator for IOMedia objects.
match = IOServiceMatching("IOMedia");
CFDictionaryAddValue(match, CFSTR(kIOMediaWholeKey), kCFBooleanTrue);
status = IOServiceGetMatchingServices(masterPort, match, &drivelist);
assert(status == KERN_SUCCESS);
// Scan all of the IOMedia objects, report each object that has a parent
// IOBlockStorageDriver
while ((drive = IOIteratorNext(drivelist))) {
reportDrive(ioLoad, drive);
IOObjectRelease(drive);
}
IOObjectRelease(drivelist);
load->ioLoad = dynamic_accumulator_getLoadPercentage(ioLoad);
}
示例10: main
int
main(void)
{
kern_return_t kr;
io_iterator_t io_hw_sensors;
io_service_t io_hw_sensor;
CFMutableDictionaryRef sensor_properties;
CFStringEncoding systemEncoding = CFStringGetSystemEncoding();
kr = IOServiceGetMatchingServices(kIOMasterPortDefault,
IOServiceNameMatching("IOHWSensor"), &io_hw_sensors);
while ((io_hw_sensor = IOIteratorNext(io_hw_sensors))) {
kr = IORegistryEntryCreateCFProperties(io_hw_sensor, &sensor_properties,
kCFAllocatorDefault, kNilOptions);
if (kr == KERN_SUCCESS)
printTemperatureSensor(sensor_properties, systemEncoding);
CFRelease(sensor_properties);
IOObjectRelease(io_hw_sensor);
}
IOObjectRelease(io_hw_sensors);
exit(kr);
}
示例11: open_and_connect_user_client
io_connect_t open_and_connect_user_client(char* service_name, int type) {
kern_return_t err;
io_connect_t conn = MACH_PORT_NULL;
CFMutableDictionaryRef matching = IOServiceMatching("IOGraphicsAccelerator2");
if(!matching){
printf("unable to create service matching dictionary\n");
return conn;
}
io_iterator_t iterator;
err = IOServiceGetMatchingServices(kIOMasterPortDefault, matching, &iterator);
if (err != KERN_SUCCESS){
printf("no matches\n");
return conn;
}
io_service_t service = IOIteratorNext(iterator);
if (service == IO_OBJECT_NULL){
printf("unable to find service\n");
return conn;
}
printf("got service: %x\n", service);
err = IOServiceOpen(service, mach_task_self(), type, &conn);
if (err != KERN_SUCCESS){
printf("unable to get user client connection\n");
return MACH_PORT_NULL;
}
//getchar();
printf("got userclient connection: %x\n", conn);
return conn;
}
示例12: darwin_get_service_from_location_id
IOReturn darwin_get_service_from_location_id ( unsigned int location_id, io_service_t *service )
{
io_iterator_t deviceIterator;
unsigned int found_location_id;
CFMutableDictionaryRef matchingDict = IOServiceMatching(kIOUSBDeviceClassName);
if (!matchingDict)
return kIOReturnError;
IOServiceGetMatchingServices(kIOMasterPortDefault, matchingDict, &deviceIterator);
while ((*service = IOIteratorNext (deviceIterator))) {
/* get the location from the i/o registry */
found_location_id = GetLocationID(*service);
if (location_id == found_location_id) {
found_location_id = GetLocationID(*service);
IOObjectRelease(deviceIterator);
return kIOReturnSuccess;
}
}
/* not found, shouldn't happen */
IOObjectRelease(deviceIterator);
return kIOReturnError;
}
示例13: FindEthernetInterfaces
// Returns an iterator containing the primary (built-in) Ethernet interface. The caller is responsible for
// releasing the iterator after the caller is done with it.
static kern_return_t FindEthernetInterfaces(io_iterator_t *matchingServices, char* interfaceName)
{
kern_return_t kernResult;
CFMutableDictionaryRef matchingDict;
//CFMutableDictionaryRef propertyMatchDict;
// Ethernet interfaces are instances of class kIOEthernetInterfaceClass.
// IOServiceMatching is a convenience function to create a dictionary with the key kIOProviderClassKey and
// the specified value.
// Note by mike: we're not using this method and then filtering by kIOPropertyMatchKey anymore,
// because that way we were getting authorization errors for some people for whom, for whatever reason,
// kIOPropertyMatchKey was not TRUE for their en0 interface
//matchingDict = IOServiceMatching(kIOEthernetInterfaceClass);
matchingDict = IOBSDNameMatching(kIOMasterPortDefault, 0, interfaceName);
if (NULL == matchingDict) {
printf("IOBSDNameMatching returned a NULL dictionary.\n");
}
// IOServiceGetMatchingServices retains the returned iterator, so release the iterator when we're done with it.
// IOServiceGetMatchingServices also consumes a reference on the matching dictionary so we don't need to release
// the dictionary explicitly.
kernResult = IOServiceGetMatchingServices(kIOMasterPortDefault, matchingDict, matchingServices);
if (KERN_SUCCESS != kernResult) {
printf("IOServiceGetMatchingServices returned 0x%08x\n", kernResult);
}
return kernResult;
}
示例14: IOServiceMatching
kern_return_t
CPUTemp::SMCOpen(void)
{
kern_return_t result;
io_iterator_t iterator;
io_object_t device;
CFMutableDictionaryRef matchingDictionary = IOServiceMatching("AppleSMC");
result = IOServiceGetMatchingServices(kIOMasterPortDefault, matchingDictionary, &iterator);
if (result != kIOReturnSuccess)
{
printf("Error: IOServiceGetMatchingServices() = %08x\n", result);
return 1;
}
device = IOIteratorNext(iterator);
IOObjectRelease(iterator);
if (device == 0)
{
printf("Error: no SMC found\n");
return 1;
}
result = IOServiceOpen(device, mach_task_self(), 0, &conn);
IOObjectRelease(device);
if (result != kIOReturnSuccess)
{
printf("Error: IOServiceOpen() = %08x\n", result);
return 1;
}
return kIOReturnSuccess;
}
示例15: inputopen
int inputopen(usbdevice* kb){
// Open master port (if not done yet)
static mach_port_t master = 0;
kern_return_t res;
if(!master&& (res = IOMasterPort(bootstrap_port, &master)) != KERN_SUCCESS){
master = 0;
printf("Unable to open master port: 0x%08x\n", res);
return 0;
}
// Open an HID service
io_iterator_t iter;
if((res = IOServiceGetMatchingServices(master, IOServiceMatching(kIOHIDSystemClass), &iter)) != KERN_SUCCESS){
printf("Unable to get input service iterator: 0x%08x\n", res);
return 0;
}
if((res = IOServiceOpen(IOIteratorNext(iter), mach_task_self(), kIOHIDParamConnectType, &kb->event)) != KERN_SUCCESS){
IOObjectRelease(iter);
printf("Unable to open IO service: 0x%08x\n", res);
kb->event = 0;
return 0;
}
IOObjectRelease(iter);
clearkeys(kb);
return 1;
}