Estoy tratando de desmontar un volumen en mi aplicación Cocoa utilizando el Marco de Arbitraje de Discos.Interpretar el valor de retorno (disidente) al intentar desmontar el volumen en OS X
Antes de llamar:
DADiskUnmount(disk,
kDADiskUnmountOptionDefault,
unmountCallback,
self);
que registra una función de devolución de llamada que consiguen que se llama después:
void unmountCallback(DADiskRef disk, DADissenterRef dissenter, void *context)
{
if (dissenter != NULL)
{
DAReturn ret = DADissenterGetStatus(dissenter);
switch (ret) {
case kDAReturnBusy:
printf("kDAReturnBusy\n");
break;
}
}
En esta función trato de interpretar el valor de retorno disidente pero queda bloqueado. Supongo que debería ser de tipo DAReturn y tener un valor como kDAReturnBusy Pero cuando, por ejemplo, iTunes está usando el volumen y no se puede desmontar. "ret" tiene un valor de 0xc010 que no entiendo del todo.
En caso de que falle el desmontaje, me gustaría saber por qué el volumen no se puede desmontar y, en caso de que otra aplicación lo esté utilizando, recuerde al usuario que debe cerrar esta aplicación.
(Me gustaría darle puntos extra para el tutorial detallado que cada nuevo sistema debería ver en algún momento). –
@quixoto no dude en ofrecer una recompensa por la pregunta y luego entréguela a Peter :) –
Gracias muchísimo, Peter por tu respuesta completa. ¡Esta es exactamente la información que estaba buscando! – JLinX