Программа для того чтобы найти все логически перегородки и их информацию
Программа, котор мы обсудили более раньше должна была прочитать данные по перегородки от таблицы перегородки MBR. Но как раз только путем читать MBR, мы не можем получить информацию других логически перегородок которые находятся в выдвинутой перегородке диска.
Мы уже обсуждали что мастерский показатель ботинка имеет предел 4 входов в мастерской таблице перегородки. Тем ме менее положение выдвинутого мастерского показателя ботинка можно получить with the help of мастерский показатель ботинка содержит выдвинутые таблицы перегородки, форма которых точно этим же от главной таблицы перегородки.
Все выдвинутые перегородки должны существовать внутри космос зарезервированный выдвинутым входом перегородки. Только 2 из выдвинутых перегородок намереваются быть использованным, первое как нормальная перегородка и секунда как другая выдвинутая перегородка если существует.
Таким образом with the help of одна мастерская таблица перегородки мы можем получить положение другой выдвинутой мастерской таблицы перегородки рядом с ей, если настоящий момент.
Following программа для находить все логически перегородки и их данные по входа перегородки, читающ MBR и выдвинутое MBRs от диска. Кодирвоание программы следующим образом:
/* Программа для того чтобы прочитать параметры полностью логически перегородки представляет в диске */
#include<dos.h>
char buffer[512], report_par[20];
unsigned drive_num =0x80;
unsigned long star_sec[20], sec;
/* Структура формы пакета адреса диска, быть использованным readabsolutesectors действует */
struct diskaddrpacket
{
char packetsize ; /* Размер пакета, вообще 10H */
char reserved ; /* Reserved (0) */
int blockcount ; /* Количество блоков, котор нужно перенести*/
char far *bufferaddress ; /* адрес для того чтобы перенести буфер */
unsigned long blocknumber[2] ; /* Начинать Совершенно Номер Блока*/
} ;
void main()
{
int no_par,i;
clrscr();
no_par = 0;
All_partition_information(star_sec,&no_par,&sec,buffer,
report_par);
printf(" \n\n Полные перегородки в диске = %d\n ",
no_par);
for(i=0;i<no_par;i++)
{
printf("\n Начинать номер участка перегородки %d =
%lu " , i+1, star_sec[i]);
}
printf("\n");
getch();
}
|