Определить, когда съемное хранилище отключено - PullRequest
4 голосов
/ 11 сентября 2009

Я работаю над приложением, которое должно обнаруживать события, которые происходят, когда съемное хранилище отключено или принудительно отключено от USB. Как я могу получить эти события?

Я видел NSWorkspace для первой возможности плавного размонтирования устройства, но в этом классе есть методы типа -unmountAndEjectDeviceAtPath: для размонтирования устройства. Может кто-нибудь указать мне пример кода, который обнаруживает несмонтированные тома?

Ответы [ 2 ]

10 голосов
/ 11 сентября 2009

Часть кода от HardwareGrowler:

NSWorkspace *workspace = [NSWorkspace sharedWorkspace];
NSNotificationCenter *center = [workspace notificationCenter];

[center addObserver:[VolumeNotifier class] selector:@selector(volumeDidMount:) name:NSWorkspaceDidMountNotification object:nil];
[center addObserver:[VolumeNotifier class] selector:@selector(volumeDidUnmount:) name:NSWorkspaceDidUnmountNotification object:nil];
[center addObserver:[VolumeNotifier class] selector:@selector(volumeWillUnmount:) name:NSWorkspaceWillUnmountNotification object:nil];

Затем вам нужно реализовать методы реагирования на уведомления аля

+ (void) volumeDidUnmount:(NSNotification *)aNotification;
{
...
}

Для всей реализации проверить http://growl.info/source.php В исходном пакете перейдите на страницу Extras / HardwareGrowler и проверьте VolumeNotifier.h/m

UPDATE:

Ответ Петерса выше этого. Пожалуйста, рассмотрите возможность использования дискового арбитража, если вы столкнулись с этой проблемой.

7 голосов
/ 11 сентября 2009
...