Определить, когда съемное хранилище отключено
Я работаю над приложением, которое должно обнаруживать события, которые происходят, когда съемное хранилище отключено или принудительно отключено от USB. Как я могу получить эти события?
я видел NSWorkspace
для первой возможности плавного размонтирования устройства, но этот класс имеет такие методы, как -unmountAndEjectDeviceAtPath:
размонтировать устройство. Может кто-нибудь указать мне пример кода, который обнаруживает несмонтированные тома?
2 ответа
Часть кода от 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 В пакете Source перейдите к Extras/HardwareGrowler и там посмотрите VolumeNotifier.h/m
ОБНОВИТЬ:
Петерс ответ превосходит это. Пожалуйста, рассмотрите возможность использования дискового арбитража, если вы столкнулись с этой проблемой.
Используйте DARegisterDiskDisappearedCallback
функция в рамках дискового арбитража.