Big*_*ack 5 c++ macos mount diskarbitration
我有一个文件路径列表.这些路径可能会导致未安装的卷上的文件.在尝试访问文件之前,如何以编程方式告诉操作系统安装卷?
我知道这可能是某种方式,因为iTunes似乎做到了.例如,如果我开始播放位于iTunes中未安装的网络附加卷上的歌曲,则会自动为我安装音量.
如果我尝试以指定路径以编程方式打开文件,操作系统是否应该自动为我安装卷?或者我是否需要使用磁盘仲裁框架或类似方法手动安装驱动器?
如果我需要使用磁盘仲裁框架,具体需要做什么?
简短的回答:不需要搞乱“磁盘仲裁框架”。别名管理器可以为您处理这一切。
克里斯·苏特(Chris Suter)已经非常接近了。从 API 角度来看,有两种解决方案:
别名。这些文件已经存在于 OSX 之前的 MacOS 中,并且是结构化文件,其中包含多种定位文件或文件夹的方法,即使文件或文件夹已被移动或重命名。它们还包含有关其所在卷的信息,包括安装信息(如果它位于网络卷上)。如果您只需创建文件的别名(使用 Finder 的“文件”菜单中的“创建别名”命令),然后重命名或移动它,或者卸载其卷,您就可以亲自看到这些操作。Finder 将尝试恢复卷,甚至在必要时要求您提供登录信息。还有“别名管理器”API,包括 FSResolveAliasFileWithMountFlags 函数,这正是您所要求的:它不仅可以让您找到别名的目标,还可以选择磁盘在卸载时是否可用,以及如果磁盘已卸载,则该磁盘是否可用。如有必要,应要求用户登录。
CFURL 书签。这是 Alias API 的现代替代品,仅从 OSX 10.6 开始存在。CFURL 书签在运行时由系统更好地管理。我不知道它们是否具有与经典 Alias 文件相同的等效磁盘文件表示形式,但也许它们甚至完全相同。
无论如何,我希望这些应该是您需要的所有指示。