Cocoa卸载驱动器但不弹出它

时间:2012-07-16 23:16:21

标签: cocoa nsworkspace

您是否知道要卸载驱动器而不将其弹出。 NSWorkspace有一些卸载驱动器的方法,但它也会弹出它们。

有什么想法吗?

3 个答案:

答案 0 :(得分:2)

答案 1 :(得分:2)

我按照以下方式执行此操作并取消安装驱动器,但不会将其弹出。

(实际上我想弹出磁盘,我只能卸载磁盘。: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);

这是我仍在研究的代码,正在开发和测试中 我正在创造&#34;路径&#34;手动。您可以使用(和共享)更好的方法以通用方式获取卷的路径。也许this answer有一些正确的方法。

我的开发经过精炼和完善后我会更新。

答案 2 :(得分:1)

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

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

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