I have seen that some applications are able to represent themselves as external disks within Finder on MacOS. Typically, these are cloud storage applications such as PCloud Drive and WD Discovery. I'm wondering how they do this.
I realize that cloud storage might just implement some remote filesystem protocol such as Samba or AFP. But I still don't quite understand how an app mounts the filesystem directly into Finder. Also, is there a more efficient way to mount a virtual filesystem if it doesn't rely on network storage?
This is a fairly high-level question, so I'll give a high-level answer. I don't know how the specific examples you list implement it, but this shouldn't be too hard to find out.
As far as I'm aware, the options are as follows:
<sys/vnode.h>
, <sys/vnode_if.h>
, and <vfs/vfs_support.h>
. This gives you the most power, but it's also difficult, and the user experience for installing kexts continues to deteriorate. (They won't load at all on ARM64 Macs unless the user does some fairly complicated acrobatics.)NSFileProvider
. This is intended for cloud-style virtual file systems but can to some extent be used for different but related scenarios.*since macOS 13, the FAT file system is implemented in user space via a not-(yet)-public file system API.