Is FSGetVolumeInfo the recommended alternative to NSWorkspace's deprecated mountedLocalVolumePaths method?

StackOverflow https://stackoverflow.com/questions/10852056

  •  12-06-2021
  •  | 
  •  

Pregunta

I need to get a list of mounted local volumes on Mac OS X. Previously, the Cocoa class NSWorkspace had a mountedLocalVolumePaths method for getting the array of mount points for such volumes. Since Lion, this is now deprecated, with no hint in the documentation about what we should use instead.

The only other Apple-specific API I have found which provides this information is the FSGetVolumeInfo function from the CoreServices.framework. This enumerates the mounted volumes if you pass kFSInvalidVolumeRefNum for the volume parameter and 1..N for the volumeIndex. It returns the volume name (as a HFSUniStr255) via the volumeName output parameter and the mount point via the rootDirectory output parameter as a FSRef, which in turn can be converted to a URL using CFURLCreateFromFSRef().

This seems a little convoluted and unnecessarily low-level.

There are also the BSD-level functions, getfsstat() and getmntinfo() which both emit an array of statfs structs. The API seems saner than the Core Services version.

Are there any higher-level replacements I should be using instead?

¿Fue útil?

Solución

There is a much simpler replacement, in a much more logical place than the older methods: NSFileManager's mountedVolumeURLsIncludingResourceValuesForKeys:options: method.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top