• Jueves 28 de Marzo de 2024, 22:53

Autor Tema:  Info De Estructuras De Ntfs Y Fat32  (Leído 1394 veces)

silverfox

  • Miembro MUY activo
  • ***
  • Mensajes: 280
    • Ver Perfil
Info De Estructuras De Ntfs Y Fat32
« en: Miércoles 19 de Octubre de 2005, 00:17 »
0
Buenas a todos.

Tenía algo aparcado el C / C++ desde hace algún tiempo y ahora he decidido retomarlo mediante el intento de creación de un programa que realice un defrag de una partición del HDD, ya sea NTFS o FAT32.

He estado recopilando información acerca de estos dos formatos, pero, pese a que hay muchas páginas dedicadas a este tema, pocas me resultan útiles (si fuera ext2 o ext3 ya estaba hecho...  :devil: ).

Y como guinda del pastel, no sé qué opciones de manipulación de los datos de la partición tengo en C++, es decir, desconozco las funciones que debería usar y la forma de uso de las mismas para cargar la información del bloque de disco y su modificación.

He mirado y remirado mis manuales de C, algunos de programación para linux, por si acaso viene algo de esto, pero nada, ni tampoco en en la red encuentro nada realmente útil.

Si alguien ha tocado algún tema de estos, le agradecería que me indicase algún link útil para ver la información que necesito de los formatos de las particiones y, en caso de que se pueda hacer en C++, alguna pista de dónde podría echar un vistazo a las funciones necesarias. Si no se puede, pues decidmelo y buscaré opciones en asm...

Muchas gracias a todos.

Silverfox

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Info De Estructuras De Ntfs Y Fat32
« Respuesta #1 en: Miércoles 19 de Octubre de 2005, 11:27 »
0
Si lo queres hacer en Windows dispones de su API para trabajar de esta manera:

Código: Text
  1.  
  2. #include <windows.h>
  3. #include <stdio.h>
  4.  
  5. #define SECTOR_SIZE 512
  6.  
  7. void main()
  8. {
  9.   //HANDLE Disco = CreateFile("\\\\.\\PHYSICALDRIVE0", GENERIC_READ | GENERIC_WRITE, FILE_SHARE_WRITE | FILE_SHARE_READ, 0, OPEN_EXISTING, 0, 0);
  10.   HANDLE Disco = CreateFile("\\\\.\\C:", GENERIC_READ | GENERIC_WRITE, FILE_SHARE_WRITE | FILE_SHARE_READ, 0, OPEN_EXISTING, FILE_FLAG_NO_BUFFERING | FILE_FLAG_WRITE_THROUGH, 0);
  11.   if (Disco)
  12.   {
  13.     BYTE Sector[SECTOR_SIZE];
  14.     ZeroMemory(Sector, SECTOR_SIZE);
  15.     DWORD read = 0;
  16.     ReadFile(Disco, Sector, SECTOR_SIZE, &read, 0);
  17.     CloseHandle(Disco);
  18.   }
  19. }
  20.  
  21.  

Al llamar a ReadFile se obtiene el primer sector del HD, el que lleva el codigo para bootear. Si usas la llamada comentada tambien podes abrir el volumen.

Para mas informacion al respecto la MSDN:
http://msdn.microsoft.com/library/en-us/fi.../createfile.asp

Aca tenes info sobre estos formatos de archivo y sobre desfragmentacion en NTFS:

http://www.ntfs.com
http://www.sysinternals.com/Information/Di...ragmenting.html

Y mucho cuidado que podes arruinar todo el disco. :devil::devil::devil:

PD. A menos que trabajes en 16 bits assembly no te permitira nada que no te permita el Sistema Operativo y al ser tanto Windows como Linux S.O.s construidos con C toda su funcionalidad esta disponible desde C.

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

silverfox

  • Miembro MUY activo
  • ***
  • Mensajes: 280
    • Ver Perfil
Re: Info De Estructuras De Ntfs Y Fat32
« Respuesta #2 en: Jueves 20 de Octubre de 2005, 15:15 »
0
Exactamente lo que andaba buscando... Muchas gracias. En cuanto tenga un pedazo de código (con el tiempo que tengo será en el 2010 más o menos...) lo compartiré con vosotros.

En cuanto al HDD... bueno... no se rompe, solo habría que reformatear y si se rompe el soporte... una excusa para comprar otro ¿no crees?

Un saludos

Silverfox

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Info De Estructuras De Ntfs Y Fat32
« Respuesta #3 en: Jueves 20 de Octubre de 2005, 19:06 »
0
Cita de: "silverfox"
Exactamente lo que andaba buscando... Muchas gracias. En cuanto tenga un pedazo de código (con el tiempo que tengo será en el 2010 más o menos...) lo compartiré con vosotros.

De nadas y estare esperando tu contribucion.

Cita de: "silverfox"
En cuanto al HDD... bueno... no se rompe, solo habría que reformatear y si se rompe el soporte... una excusa para comprar otro ¿no crees?

Me referia a eso, arruinar los datos, no me gustaria hacerlo sobre mi disco eh  :whistling: Si llegara a perder todo lo que tengo ... no me gustaria mucho que digamos  :devil:  :devil:

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.