Какао Размонтирует диск, но не извлекает его
Знаете ли вы, чтобы отключить диск без извлечения его. NSWorkspace
есть несколько способов размонтировать диски, но он также извлекает их.
Любая идея?
3 ответа
Я делаю это следующим образом, и он отключает диск, но не извлекает его.
(На самом деле я хочу извлечь диск, я могу только демонтировать диск.:P Пожалуйста, поделитесь, как извлечь диск.)
DASessionRef session = DASessionCreate(kCFAllocatorDefault);
CFURLRef path = CFURLCreateWithString(NULL, CFSTR("<path_to_your_volume_here>"), NULL);
DADiskRef disk = DADiskCreateFromVolumePath(kCFAllocatorDefault, session, path);
DADiskUnmount(disk, kDADiskUnmountOptionDefault, __unmountCallback, NULL);
Это код, над которым я все еще работаю и который находится в стадии разработки и тестирования.
Я создаю "путь" вручную. Вы можете использовать (и поделиться) лучший метод, чтобы получить общий путь к объему. Возможно, в этом ответе есть подсказки, как сделать это правильно.
Я обновлю, когда моя разработка будет доработана и завершена.
Для этого используйте DADiskUnmount в инфраструктуре DiskArbitration.
Чтобы извлечь диск, размонтируйте диск, как вы указали, а затем в вашем __unmountCallback сделайте следующее:
DADiskRef disk2 = DADiskCopyWholeDisk(disk);
DADiskEject(disk2,
kDADiskEjectOptionDefault,
NULL,
NULL);
Вы можете передать любой объект в качестве контекста в DADiskUnmount(), а затем, например, использовать его, чтобы определить, должен ли соответствующий диск быть извлечен в __unmountCallback.