你知道你卸载驱动器而不弹出它。NSWorkspace
有一些卸载驱动器的方法,但它也会弹出它们。
任何的想法 ?
我正在按如下方式进行操作,它会卸载驱动器但不会弹出它。
(其实是想弹出磁盘,只能unmount磁盘。:P请分享如何弹出磁盘。)
DASessionRef session = DASessionCreate(kCFAllocatorDefault);
CFURLRef path = CFURLCreateWithString(NULL, CFSTR("<path_to_your_volume_here>"), NULL);
DADiskRef disk = DADiskCreateFromVolumePath(kCFAllocatorDefault, session, path);
DADiskUnmount(disk, kDADiskUnmountOptionDefault, __unmountCallback, NULL);
这是我仍在处理的代码,正在开发和测试中。
我正在手动创建“路径”。您可以使用(和共享)更好的方法以通用方式获取音量路径。也许这个答案暗示了正确的做法。
当我的开发完善和完成时,我会更新。
为此,请在 DiskArbitration 框架中使用 DADiskUnmount。
要弹出磁盘,请按照您的说明卸载磁盘,然后在 __unmountCallback 中执行以下操作:
DADiskRef disk2 = DADiskCopyWholeDisk(disk);
DADiskEject(disk2,
kDADiskEjectOptionDefault,
NULL,
NULL);
您可以将任何对象作为上下文传递给 DADiskUnmount(),然后,例如,使用它来确定是否应在 __unmountCallback 中弹出相应的磁盘。