Ensamblador - borrar y recuperar archivos de un diskkette

 
Vista:

borrar y recuperar archivos de un diskkette

Publicado por Paola Colmenares Barreto (1 intervención) el 21/06/2002 17:48:21
Necesitamos ayuda urgente, para realizar un programa que nos permita recuperar los arhivos borrados desde un diskkette, utlizando la función undelete, que es para borrar archivos, pero no sabemos como crear una especie de papelera para guardar el archivo borrado y despues recuperarlo, por favor, agradeceríamos su ayuda pronto.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

¿¿Cómo??

Publicado por Jorge (126 intervenciones) el 21/06/2002 21:36:52
Hola,

bueno, la función undelete es un comando del DOS, que en Windows no está disponible por problemas de incompatibilidad con la FAT. (ignoro si continuan estando los llamados a la interrupción del SO en el Kernel de Windows)
Pero si trata de un diquete, no hay problemas, dado que el formato no cambia.
Sin embargo, no veo por qué tenés que emplear sí o sí la función undelete. Para recuperar el archivo (si se borró), tenés que explorar la FAT y la información permanece en ella, con la diferencia que el primer caracter del nombre es reemplazado por un asterisco (o era un signo de pregunta?). Como sea, si el área que contenía los datos del archivo fue sobreescrita, no hay vuelta que darle.
Windows para la papelera usa una carpeta (aunque me arriesgaría a decir que es un archivo con loguito de carpeta), con un sistema de indexación diferente que permite nombres duplicados, etc. O sea, una papelera la podés hacer con un archivo (estilo base de datos) ó con una carpeta especial donde guardes todo.

Igualmente, no entiendo del todo lo que tenés que hacer, ¿me mandás un enunciado?

Bye
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:¿¿Cómo??

Publicado por manuel (2 intervenciones) el 22/06/2002 01:31:49
en el dir c:\windows\command o en otro depende de la version.
tienes un programa q se llama debug.com
teclea debug.com /? , o "h" para ver los comandos
con el descarga los sectores de la FAT.
buscas la cadena con el nombre del archivo (menos el primer caracter)
reemplazas el primer caracter "*" por el caracter q quieras y vuelcas
los sectores en disco,
el fichero aparece por arte de magia, espero q te aclares con
el debug.com
un saludo.

Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:¿¿Cómo??

Publicado por Googol (61 intervenciones) el 24/06/2002 17:32:06
MMmm.... en lugar de mirar en la fat, mejor mira en las entradas del directorio raíz del disquette, que es donde se guardan los nombres.
Antes de la parte de datos, el disco tiene la FAT y "el directorio raíz".
Éste último guarda el nombre de los ficheros del directorio raíz, la fecha de creación, tamaño, atributos, etc, y, creo recordar, el primer bloque de datos que utiliza. El resto de datos usados están en la FAT.
Cuando se borra un fichero, se quita su información del "directorio de raíz", o sea se deja libre la entrada, pero no se borran los datos. Lo que hay que hacer es recuperar esa entrada. En realidad cuando se borra el fichero solo se marca la entrada como libre cambiando el primer caracter (a cada uno nos suena una cosa, yo creía que era un '.' :-)), pero el resto se mantiene. Cuando haces un DIR, MS-DOS considera esa entrada como vacía. Para recuperarla, hay que cambiar ese fatídico byte del sector. Busca información por internet sobre todo eso, seguro que hay mucha.
Por cierto, no recuerdo que MS-DOS tuviera una función en la interrupción 21h para hacer todo eso...

Suerte
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar