Utilidad para limpiar entradas LFN

Avatar de Usuario
Kyp
Mensajes: 251
Registrado: 03 Oct 2013 17:13
Agradecido : 1 vez
Agradecimiento recibido: 20 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: 878
Registrado: 09 Oct 2013 16:47
Agradecido : 24 veces
Agradecimiento recibido: 41 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: 878
Registrado: 09 Oct 2013 16:47
Agradecido : 24 veces
Agradecimiento recibido: 41 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 3 veces


Volver a “PC & Compatibles X86”

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado