2011-04-25 78 views
0

我正试图阻止USB存储设备在我的设备上进行某些操作时未进行卸载。如何停止USB存储设备弹出/卸载

我尝试使用磁盘仲裁框架来完成此操作,方法是注册以获取DiskUnmountApprovalCallback事件的回调。但即使这样做后,Mac OS X允许用户在我的USB设备上强制弹出。我想完全阻止卸载过程,并且我知道这是可能的,因为我经常收到此消息,如下所示。

enter image description here

请谁能告诉我如何做到这一点编程方式使用磁盘仲裁框架或其他任何可可框架。另外我想知道阻塞过程的名称,就像上面的示例中的“Xcode”一样。

感谢

回答

0

见相关的问题:How can I prevent ejection of a disk during an operation on Mac OS X?

是的Xcode(苹果编写)可以阻止卸载并不一定意味着你的应用程序就能事实。有几个原因可能导致操作系统不允许任意应用程序阻止卸载卷。这里只是一个:考虑一个恶意的应用程序(病毒,恶意软件等),它希望阻止卷被卸载。而且,如果用户只是将驱动器拉出来,则无法对此做任何事情,并且应该优雅地失败。我觉得假设用户知道他们在做什么并且允许他们强制弹出是很有用的;否则,你的应用可能会因不合作而烦人。

在任何情况下,你确定你的回调函数实际上被调用?除非您计划运行循环,否则根本不会参与磁盘仲裁。