Cocoa正在卸载驱动器,但未将其弹出

Cocoa正在卸载驱动器,但未将其弹出,cocoa,nsworkspace,Cocoa,Nsworkspace,您知道在不弹出驱动器的情况下卸载驱动器吗NSWorkspace有一些卸载驱动器的方法,但它也会弹出驱动器 有什么想法吗 为此,请在DiskArbitration framework中使用DADiskUnmount 我按如下方式操作,它将卸载驱动器,但不会弹出驱动器。 (实际上我想弹出磁盘,我只能卸载磁盘。:P请分享如何弹出磁盘。) DASessionRef session=DASessionCreate(kcfalocatordefault); CFURLRef path=CFURLCreate

您知道在不弹出驱动器的情况下卸载驱动器吗
NSWorkspace
有一些卸载驱动器的方法,但它也会弹出驱动器


有什么想法吗

为此,请在DiskArbitration framework中使用DADiskUnmount


我按如下方式操作,它将卸载驱动器,但不会弹出驱动器。 (实际上我想弹出磁盘,我只能卸载磁盘。:P请分享如何弹出磁盘。)

DASessionRef session=DASessionCreate(kcfalocatordefault);
CFURLRef path=CFURLCreateWithString(NULL,CFSTR(“”),NULL);
DADiskRef disk=DADiskCreateFromVolumePath(kCFAllocatorDefault,会话,路径);
DADiskUnmount(磁盘,kDADiskUnmountOptionDefault,uu unmountCallback,NULL);
这是我仍在开发和测试的代码。

我正在手动创建“路径”。您可以使用(并共享)更好的方法以通用方式获取卷的路径。可能有正确方法的提示。我将在完善和完成开发后更新。

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

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

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

您的意思是从驱动器中物理弹出DVD吗?不,就像使用disk utility一样。您可以装载/卸载驱动器,但也可以弹出驱动器。区别是什么(如果不是物理弹出DVD)?FWIW diskutil命令有单独的“弹出”和“卸载”选项。请参阅
mandiskutil
。效果非常好。只需在XCode和头文件中添加DiskArbitration框架。要弹出磁盘,我使用:
[[NSWorkspace sharedWorkspace]unmountandejectdeviceatur:[NSURL fileURLWithPath:device.path]错误:&error]
            DADiskRef disk2 = DADiskCopyWholeDisk(disk);
            DADiskEject(disk2,
                        kDADiskEjectOptionDefault,
                        NULL,
                        NULL);