Añado un trozo de codigo que he encontrado en otro foro (publicado por el usuario Goatjuggler, gracias
)
/******************************************************************/
/* Stop DVD motor */
/* */
/* Creado usando la documentacion de Crediar's & SVPE */
/* en [url]http://wiibrew.org/index.php?title=/dev/di[/url] */
/* y el codigo de herraa1's en starlet-ipc.c para GameCube-Linux */
/* */
/* Requiere ipc.h para los comandos IOS IOS_Open() e IOS_Ioctl() */
/* usar #include <ogc/ipc.h> */
/******************************************************************/
s32 di_fd; //valor devuelto por IOS_Open()
s32 buf[3];
buf[0]=0xE3000000;
buf[1]=0; //desconocido/sin uso por el momento
buf[2]=0; //desconocido/sin uso por el momento
/* Abrimos la interfaz DVD para escritura */
di_fd=IOS_Open("/dev/di", 2);
/* Shhhhh, a dormir */
IOS_Ioctl( di_fd, buf[0], buf, 0x20, buf, 0x20);
De este modo, como comenta el creador, se produce una pequeña pausa cuando se ejecuta el codigo, para solucionarlo simplemente hacemos la operacion de modo asincrono, es decir, en lugar de usar:
IOS_Ioctl( di_fd, buf[0], buf, 0x20, buf, 0x20);
Usamos:
IOS_IoctlAsync( di_fd, buf[0], buf, 0x20, buf, 0x20, NULL, NULL);
La verdad es que se agradeceria que se añadiese a las aplicaciones que van saliendo (el buen rato que se tarda en dumpear la NAND con el zelda dando vueltas por gusto es doloroso jeje).
¡Por cierto! Creo que seria bueno añadir un IOS_close(di_fd); despues del codigo, pero no estoy seguro de si es necesario, si alguien lo confirma, mejor.
P.D.: A ver si no se hunde el hilo, porque luego se crean decenas de hilos preguntando por codigo comentado o de ejemplo. Gente, posteen aunque sean pequeños trozos de codigo con cosas utiles.