2

你知道你卸载驱动器而不弹出它。NSWorkspace有一些卸载驱动器的方法,但它也会弹出它们。

任何的想法 ?

4

3 回答 3

3

我正在按如下方式进行操作,它会卸载驱动器但不会弹出它。

(其实是想弹出磁盘,只能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);

这是我仍在处理的代码,正在开发和测试中。
我正在手动创建“路径”。您可以使用(和共享)更好的方法以通用方式获取音量路径。也许这个答案暗示了正确的做法。

当我的开发完善和完成时,我会更新。

于 2013-01-29T07:58:43.827 回答
2

为此,请在 DiskArbitration 框架中使用 DADiskUnmount。

http://developer.apple.com/library/mac/#documentation/Darwin/Reference/DiscArbitrationFramework/DiskArbitration_h/index.html#//apple_ref/c/func/DADiskUnmount

于 2012-07-17T01:48:52.403 回答
1

要弹出磁盘,请按照您的说明卸载磁盘,然后在 __unmountCallback 中执行以下操作:

            DADiskRef disk2 = DADiskCopyWholeDisk(disk);
            DADiskEject(disk2,
                        kDADiskEjectOptionDefault,
                        NULL,
                        NULL);

您可以将任何对象作为上下文传递给 DADiskUnmount(),然后,例如,使用它来确定是否应在 __unmountCallback 中弹出相应的磁盘。

于 2013-05-09T14:15:43.570 回答