2009-09-10 2 views
3

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

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

ответ

6
+0

Это описано в книге Амита Сингха «Mac OS X Internals: системный подход». – 2009-09-11 12:17:16

+0

Документацию можно найти на странице http://developer.apple.com/documentation/Darwin/Reference/DiscArbitrationFramework/ –

+0

@QuinnTaylor: добавлены ссылки для документации. Благодаря! –

10

пайса кода из 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 В исходном пучке перейдите к Дополнительно/Аппаратное обеспечение Growler и там выйдите VolumeNotifier.h/m

ОБНОВЛЕНИЕ:

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

+1

Человек, и я работаю над HardwareGrowler ! Однако я бы не стал применять эти методы класса. Когда-нибудь, когда другие вещи не будут столь насущными, я намереваюсь пройти и изменить уведомители на экземпляры (среди других очищений). –

+0

Обязательно сделайте это фоновым приложением;) – stigi