Когда диск смонтирован, вы часто видите событие для всего диска, а затем события для отдельных разделов на этом диске. Вам нужно будет различить.
static void got_disk(DADiskRef disk, void *context)
{
CFDictionaryRef dict = DADiskCopyDescription(disk);
NSNumber *whole = CFDictionaryGetValue(dict, kDADiskDescriptionMediaWholeKey);
if (![whole boolValue]) {
// Handle your event only with the partition, not the "whole" disk
...
}
}
Очень удобно поместить CFShow(dict)
в ваш обработчик событий и посмотреть, что вы получите.