MisterProper - Antes: Utilidad para limpiar entradas LFN

Avatar de Usuario
Kyp
Mensajes: 891
Registrado: 03 Oct 2013 17:13
Agradecido : 132 veces
Agradecimiento recibido: 351 veces

Re: Utilidad para limpiar entradas LFN

Mensajepor Kyp » 05 Jul 2017 18:28

Último mensaje de la página anterior:

No se si habrás visto esta documentación: https://msdn.microsoft.com/en-us/librar ... 58(v=vs.85).aspx
Ahí tienes todo lo necesario para abrir un disco físico (mira la sección de comentarios). Sobre todo:
The caller must have administrative privileges. For more information, see Running with Special Privileges.
The dwCreationDisposition parameter must have the OPEN_EXISTINGflag.
When opening a volume or floppy disk, the dwShareMode parameter must have the FILE_SHARE_WRITEflag.

No se como se traducirán esos parámetros a Java pero esas tres cosas son imprescindibles.

Avatar de Usuario
Jinks
Mensajes: 2705
Registrado: 09 Oct 2013 16:47
Agradecido : 348 veces
Agradecimiento recibido: 481 veces
Contactar:

Re: Utilidad para limpiar entradas LFN

Mensajepor Jinks » 05 Jul 2017 19:04

Kyp escribió:No se si habrás visto esta documentación: https://msdn.microsoft.com/en-us/librar ... 58(v=vs.85).aspx
Ahí tienes todo lo necesario para abrir un disco físico (mira la sección de comentarios). Sobre todo:
The caller must have administrative privileges. For more information, see Running with Special Privileges.
The dwCreationDisposition parameter must have the OPEN_EXISTINGflag.
When opening a volume or floppy disk, the dwShareMode parameter must have the FILE_SHARE_WRITEflag.

No se como se traducirán esos parámetros a Java pero esas tres cosas son imprescindibles.


He probado el MOUNTVOL con Windows XP. Antes de hacerlo no podía acceder mediante \\.\PhysicalDrive2 pero sí mediante \\.\I:
Después de desmontar con MOUNTVOL I:\ /D ya no puedo acceder de ninguna de las dos maneras (claro, porque al desmontarlo le he quitado la letra de unidad). Es decir, MOUNTVOL /D equivale a quitar la letra con el administrador de discos, que ya comprobé que no funcionaba.

No le voy a dar más vueltas al tema Windows. En el programa no quiero meter código específico de Windows, y menos JNI (que encima, a saber si funcionaría en todas las versiones o sólo en una). Si no se puede ganar el acceso usando comandos, pues no se puede. Al fin y al cabo, se puede hacer partición por partición usando las letras. Bueno, creo, porque ya tengo tal lío de lo que funciona o no en cada versión, que no lo tengo claro del todo. Gracias por buscar la documentación de C++.

Avatar de Usuario
Jinks
Mensajes: 2705
Registrado: 09 Oct 2013 16:47
Agradecido : 348 veces
Agradecimiento recibido: 481 veces
Contactar:

Re: Utilidad para limpiar entradas LFN

Mensajepor Jinks » 14 Jul 2017 18:11

Nueva versión, con un montón de cambios internos y con las siguientes novedades:
  • Añade soporte a particiones extendidas de tipo 5 siempre que en la tabla de particiones tengan rellenos los campos LBA.
  • Añade soporte a particiones de tipo 1 (FAT12, introducidas en el DOS 2.0) y de tipo 4 (FAT16, introducidas en el DOS 3.0) siempre que tengan rellenos los campos LBA. Ambos tipos de particiones pueden ser primarias o lógicas (dentro de una extendida).
  • Intenta reconocer todas las versiones de BPB, ya que algunos datos relevantes se almacenan de distinta manera dependiendo de dicha versión. Sin embargo, no es posible determinar la versión exacta en todos los casos.
  • Si el formateador que figura en el sector de arranque de una partición es "IBM 3.0" la partición no se procesa porque el FORMAT de esa versión de PC DOS genera BPBs incorrectos.
  • A la hora de obtener la cadena de clusters de los directorios, las versiones anteriores sólo interpretan como fin de cadena el número FFF o FFFF, ahora reconocen los rangos FF8-FFF y FFF8-FFFF.
  • Si encuentra la marca FF7 o FFF7 (cluster defectuoso) o el número 1 (que no debería estar nunca) en la cadena de clusters de un directorio, el directorio no se procesa.
  • Como medida de seguridad, cada vez que escribe un sector, verifica que previamente ha leído ese mismo sector por pertenecer a un directorio. Es decir, si por error intentase escribir un sector perteneciente a un fichero, el propio método que escribe en disco lo detectaría y no lo haría.
  • También como medida de seguridad, por defecto no limpia (no modifica la imagen o dispositivo), para realizar la limpieza es necesario usar el nuevo parámetro -clean. Antes era al revés, por defecto limpiaba y si queríamos que no lo hiciera había que pasarle el parámetro -list (que ahora ya no es necesario).

Así que la recomendación de antes de ejecutar siempre con el parámetro -list hasta estar seguros de querer limpiar, ahora pasa a ser: Ejecutar siempre sin el parámetro -clean hasta estar seguros de querer limpiar.

Sobre todo cuando se use con los tipos de partición antiguos añadidos en esta versión, ya que las imágenes y dispositivos que yo tengo no tienen particiones tan viejas. La regla de oro es que si al ejecutarlo no se ve correctamente el árbol de directorios (debería salir completo) mejor no intentar limpiarlo.

En caso de encontrar problemas con alguna de estas particiones, por favor enviadme la imagen, con o sin ficheros, me da igual, lo importante es la estructura del disco. Podéis borrar los ficheros y directorios con programas de borrado seguro si queréis, pero no formatear.

CleanLFN.zip
CleanLFN 0.97
(9.48 KiB) Descargado 27 veces

Avatar de Usuario
Jinks
Mensajes: 2705
Registrado: 09 Oct 2013 16:47
Agradecido : 348 veces
Agradecimiento recibido: 481 veces
Contactar:

Re: MisterProper - Antes: Utilidad para limpiar entradas LFN

Mensajepor Jinks » 26 Jul 2017 12:00

Versión 1.0 con varios cambios internos y las siguientes novedades sobre la anterior versión:
  • El nombre, CleanLFN pasa a llamarse... ¡MisterProper!
  • Valida que en el directorio raíz no hay entradas de directorio cuyo nombre comience con punto.
  • Valida que en un directorio que no sea el raíz, al menos hay 2 entradas (para las especiales).
  • Valida que en un directorio que no sea el raíz, no hay entradas que comiencen por punto (salvo las entradas especiales punto y punto-punto).
  • Valida que la primera entrada de un directorio que no sea el raíz, sea la entrada "."
  • Valida que la segunda entrada de un directorio que no sea el raíz, sea la entrada ".."
  • Valida que cualquier entrada de directorio (incluidas las especiales) tiene longitud 0.
  • Para la entrada "." valida que el primer cluster sea el del directorio al que pertenece.
  • Para la entrada ".." valida que el primer cluster sea el del directorio padre (0 para el raíz).
  • Valida que la entrada de etiqueta tiene longitud 0 y primer cluster 0.
  • Valida que cualquier entrada de fichero tiene la longitud y el primer cluster ambos a 0, o ambos distintos de 0.
  • Valida que cualquier entrada LFN tiene "longitud" distinta de 0 y primer cluster 0.
  • Cuando obtiene la cadena de clusters (cosa que sólo hace para directorios) valida que no encuentra un 0 (versiones anteriores trataban el 0 como una marca más de fin de cadena).
  • Cuando ocurre un error en readVBR (al procesar una partición en el paso 1) antes terminaba la ejecución del programa. Ahora se anota el error para esa partición y se continúa con las demás. Luego, en los pasos 2 y 3, cuando se llegue a esa partición, en lugar de procesarse, se mostrará el error anotado y se continuará con la siguiente partición.
  • En el paso 2, para las particiones con un árbol de directorios de profundidad menor que 3, se informa que es recomendable que haya al menos 2 niveles de directorios (se considera el directorio raíz como el nivel 0).

Instrucciones completas en el fichero LEEME.TXT incluido en el ZIP.

La regla de oro ahora es: Cada partición a limpiar debería tener un árbol de directorios de profundidad 2 o más. Así de fácil. Si en una partición sólo está el directorio raíz (profundidad 0) o directorios en el primer nivel (profundidad 1), crear al menos un directorio en uno de los del primer nivel. Con esto nos evitaremos prácticamente todos los problemas que puedan surgir.

MisterProper.zip
MisterProper 1.0
(18.41 KiB) Descargado 29 veces


Volver a “PC & Compatibles X86”

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 4 invitados