Я пытаюсь отключить том в моем приложении Какао с помощью Disk Arbitration Framework.
Перед вызовом:
DADiskUnmount(disk,
kDADiskUnmountOptionDefault,
unmountCallback,
self );
Я регистрирую вызываемую функцию обратного вызова впоследствии:
void unmountCallback(DADiskRef disk, DADissenterRef dissenter, void *context )
{
if (dissenter != NULL)
{
DAReturn ret = DADissenterGetStatus(dissenter);
switch (ret) {
case kDAReturnBusy:
printf("kDAReturnBusy\n");
break;
}
}
В этой функции я пытаюсь интерпретировать значение, возвращаемое несогласным, но застреваю. Полагаю, оно должно быть типа DAReturn и иметь значение вроде kDAReturnBusy Но когда, например, iTunes использует том, и он не может быть размонтирован "ret" имеет значение 0xc010, которое я не совсем понимаю.
В случае, если размонтирование не удается, я хотел бы выяснить, почему том не может быть размонтирован, и в случае, если его использует другое приложение напомнить пользователю о закрытии этого приложения.