Как найти установленный диск на Mac
То, что я на самом деле пытался достичь, - выяснить, когда диск, который я установил из сети, отключен.
Для чего я начал с очень простого подхода, я использовал:
повышение:: файловая система:: существует
на установленном пути диска (который мы можем найти в /Volumes/ ).
например для привода на компьютере:
СМБ://XYZ/привод
после монтажа, я вижу это как:
/Volumes/ привод
и позже был диск, на котором я использовал boost:: filesystem:: exists,
Итак, я надеялся, как только отключу сеть, смонтированный том внутри/Объемы будут немедленно очищены, и все будет работать просто.
НО,
позже я понимаю, что при отключении сети OSX берет навсегда, чтобы очистить диск из каталога /Volumes.
Есть ли API-интерфейс apple, который может определить, является ли суммарный объем, который появляется в/Томах, действительным или нет.
Спасибо заранее.
Ответы
Ответ 1
В NSFileManager
есть метод, который позволяет легко просматривать смонтированные тома:
- (NSArray*) mountedVolumeURLsIncludingResourceValuesForKeys:option
- Возвращает массив URL-адресов, которые идентифицируют смонтированные тома, доступные на компьютере.
Я не знаю, как это относится к застопорившимся монстрам. Вам также необходимо выяснить, являются ли эти смонтированные тома сетевыми томами или образами дисков.
Если вы хотите получать уведомления, когда тома приходят и уходят, вы можете использовать API событий файловой системы. Это немного более низкий уровень, но вы можете в основном попросить его "уведомить меня, когда изменится структура под /Volumes/*
.
Ответ 2
Вы хотите NSWorkspace
уведомления:
-
NSWorkspaceDidRenameVolumeNotification
-
NSWorkspaceDidMountNotification
-
NSWorkspaceWillUnmountNotification
-
NSWorkspaceDidUnmountNotification
Последние три уведомления содержат ключ @"NSDevicePath"
в словаре userInfo
. Пока WillUnmount
не отправляется, если устройство принудительно удалено, DidUnmount
делает. Используя комбинацию из двух, вы можете получить надлежащее предупреждение для "приятных отключений" томов сети для обработки вещей в идеальном сценарии, но во всех случаях у меня никогда не было реальных проблем, связанных с DidUnmount
, чтобы сказать мне объем исчез. Я использую это в коде доставки в приложении, которое отсутствовало с 2003 года.