Sto tentando di smontare un volume nella mia applicazione Cocoa utilizzando Disk Arbitration Framework.Interpretare il valore di ritorno (dissenter) quando si tenta di smontare il volume in OS X
Prima di chiamare:
DADiskUnmount(disk,
kDADiskUnmountOptionDefault,
unmountCallback,
self);
mi registro una funzione di callback che ottengono è chiamato in seguito:
void unmountCallback(DADiskRef disk, DADissenterRef dissenter, void *context)
{
if (dissenter != NULL)
{
DAReturn ret = DADissenterGetStatus(dissenter);
switch (ret) {
case kDAReturnBusy:
printf("kDAReturnBusy\n");
break;
}
}
In questa funzione cerco di interpretare il valore di ritorno dissenziente, ma rimanere bloccati. Suppongo che dovrebbe essere di tipo DAReturn e avere un valore come kDAReturnBusy Ma quando ad es. iTunes sta usando il volume e non può essere smontato "ret" ha un valore di 0xc010 che non capisco.
Nel caso in cui lo smontaggio non riesca mi piacerebbe scoprire perché il volume non può essere smontato e nel caso in cui un'altra applicazione lo stia utilizzando, ricorda all'utente di chiudere questa applicazione.
(Vorrei darti dei punti extra per la soluzione ponderata che ogni nuovo sistemista dovrebbe vedere ad un certo punto.) –
@quixoto sentiti libero di offrire una taglia sulla domanda e poi assegnarla a Peter :) –
Grazie mille molto, molto Peter per la tua risposta esauriente. Questa è esattamente l'informazione che stavo cercando !! – JLinX