Programa para encontrar todas las particiones lógicas y su información
El programa que discutimos era anterior leer la información de la partición de la tabla de la partición de MBR. Pero apenas solamente leyendo el MBR, no podemos conseguir la información de otras particiones lógicas que estén en la partición extendida del disco.
Hemos discutido ya que el expediente principal del cargador tiene el límite de cuatro entradas en la tabla principal de la partición. No obstante la localización del expediente principal extendido del cargador se puede obtener con la ayuda del expediente principal del cargador que contiene las tablas extendidas de la partición, que formato es exactamente igual en fecha la tabla principal de la partición.
Todas las particiones extendidas deben existir dentro del espacio reservado por la entrada extendida de la partición. Solamente dos de las particiones extendidas se significan para ser utilizados, las primeras como partición normal y el segundo como otra partición extendida si existe.
Así con la ayuda de una tabla principal de la partición podemos conseguir la localización de otra tabla principal extendida de la partición al lado de ella, si presente.
El programa siguiente está para encontrar todas las particiones lógicas y su información de la entrada de la partición, leyendo MBR y MBRs extendido del disco. La codificación del programa es como sigue:
/* El programa para leer los parámetros de toda la partición lógica presenta en el disco*/
#include<dos.h>
char buffer[512], report_par[20];
unsigned drive_num =0x80;
unsigned long star_sec[20], sec;
/* La estructura del formato del paquete de la dirección de disco, ser utilizado por los readabsolutesectors funciona */
struct diskaddrpacket
{
char packetsize ; /* Tamaño del paquete, generalmente 10H */
char reserved ; /* Reservado (0) */
int blockcount ; /* Número de los bloques a transferir */
char far *bufferaddress ; /* dirección para transferir el almacenador intermediario */
unsigned long blocknumber[2] ; /* Comenzar número de bloque absoluto */
} ;
void main()
{
int no_par,i;
clrscr();
no_par = 0;
All_partition_information(star_sec,&no_par,&sec,buffer,
report_par);
printf(" \n\n Particiones totales en disco = %d\n ",
no_par);
for(i=0;i<no_par;i++)
{
printf("\n Comenzar el número del sector de la partición %d =
%lu " , i+1, star_sec[i]);
}
printf("\n");
getch();
}
|