//----------------------------------------------------------------------------- int AsioLibWrapper::GetAsioLibraryList(AsioLibInfo *buffer, unsigned int bufferCapacity) { // NOTE: Folder for plist files was selected according to recomendations in following document from Apple (see Table 1-1): // https://developer.apple.com/library/mac/documentation/General/Conceptual/MOSXAppProgrammingGuide/AppRuntime/AppRuntime.html unsigned int cnt; CFURLEnumeratorRef dirEnum; CFURLRef fileUrl; CFURLEnumeratorResult res; bool ok; dirEnum = CreateDirectoryEnumerator(CFSTR("/Library/Application Support/ASIO")); if ( ! dirEnum ) { return -1; } cnt = 0; if (( ! buffer ) || (bufferCapacity == 0) ) { // calculate the number of ASIO libraries do { res = CFURLEnumeratorGetNextURL(dirEnum, &fileUrl, NULL); if (res == kCFURLEnumeratorSuccess) { if ( HasExtension(fileUrl, CFSTR("plist")) ) { cnt++; } } } while (res != kCFURLEnumeratorEnd); } else { // get actual data do { res = CFURLEnumeratorGetNextURL(dirEnum, &fileUrl, NULL); if (res == kCFURLEnumeratorSuccess) { if ( HasExtension(fileUrl, CFSTR("plist")) ) { if (cnt < bufferCapacity) { ok = LoadAsioLibInfo(fileUrl, buffer[cnt]); if (ok) { cnt++; } } } } } while (res != kCFURLEnumeratorEnd); } if (dirEnum) { CFRelease(dirEnum); } return (int)cnt; }
QList<QStorageInfo> QStorageInfoPrivate::mountedVolumes() { QList<QStorageInfo> volumes; QCFType<CFURLEnumeratorRef> enumerator; enumerator = CFURLEnumeratorCreateForMountedVolumes(Q_NULLPTR, kCFURLEnumeratorSkipInvisibles, Q_NULLPTR); CFURLEnumeratorResult result = kCFURLEnumeratorSuccess; do { CFURLRef url; CFErrorRef error; result = CFURLEnumeratorGetNextURL(enumerator, &url, &error); if (result == kCFURLEnumeratorSuccess) { const QCFString urlString = CFURLCopyFileSystemPath(url, kCFURLPOSIXPathStyle); volumes.append(QStorageInfo(urlString)); } } while (result != kCFURLEnumeratorEnd); return volumes; }