kernResult = IOServiceGetMatchingServices( kIOMasterPortDefault, classesToMatch, matchingServices) Get an iterator across all matching devices. Look for devices that claim to be modems. Printf( 'IOServiceMatching returned a NULL dictionary.\n') classesToMatch = IOServiceMatching( kIOSerialBSDServiceValue) Create a matching dictionary to find those instances. Serial devices are instances of class IOSerialBSDClient. static kern_return_t findModems( io_iterator_t * matchingServices) Caller is responsible for // releasing the iterator when iteration is complete. Returns an iterator across all known modems. Static kern_return_t getModemPath( io_iterator_t serialPortIterator, char * bsdPath, CFIndex maxPathSize) #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include // Function prototypes static kern_return_t findModems( io_iterator_t * matchingServices)