코딩에 대하여 코멘트:
기능 Display_Information는 루트 디렉토리에서 파일과 전화번호부 정보를 그리고 읽기 위한 것이다. 구조에서 우리는 각 파일을 위한 32의 바이트 정보 또는 뿌리 [32]를 가진 전화번호부를 읽고 있다.
부호 없는 정수 배열 이름 [8] 및 ext [3] 8.3 (3개가 8에 의하여 점을 찍는다) 체재에 있는 DOS의 파일 또는 디렉토리 이름을 위해 이다. 유사하게 1개의 바이트는 송이 시작을 위한 속성 그리고 2개의 바이트를 위해 이다. 긴 서명 없는 int 크기; 4개의 바이트의 파일의 크기를 저장하는 것은 이다.
_bios_disk 기능은 구조 finfo에 의해 지정된 분야를 읽고 가동의 상태는 결과에서 저장된다.
512의 바이트의 각 정보에서 _bios_disk 기능에 의하여, 루트 디렉토리 지역 끝까지 읽으십시오, 우리는 디스크에서 저장된 파일 및 전화번호부의 정보를 모으고 스크린에 그들을 표시한다.
정수 file_no는 0에서 출발 상점 명부에 있는 파일 전화번호부의 수, 이다. 루트 디렉토리의 크기는 14의 분야의 일반적으로 이고 루트 디렉토리는 1.44MB와 3개의 ½ 플러피 디스크의 경우에는 실린더 =0, 머리 = 0 및 분야 =2에서 일반적으로 시작한다.
사용자가 입력으로 특성에게 `M' 또는 `m'를 주는 경우에, 다음 분야의 정보는 사용자 에의한 선택이 `R'이거나 `r'가 회수 함수 불리는 경우에 표시된다. 기능의 코딩은 () 아래와 같이 주어졌다 재기한다:
/* 지정된 파일을 위한 회복을 시작하는 기능 */
void recover(unsigned int *root,unsigned int len)
{
void clear_the_line(unsigned int r); /*스크린에 줄을 맑게 하는 기능 */
/* 지정된 파일을 통합하는 기능 */
void integrate(long unsigned int,unsigned int,
unsigned int,unsigned int);
unsigned int file_no,i;
char ch;
unsigned int *loc;
unsigned int cylinder,head,sector;
unsigned int start;
long unsigned int size;
clear_the_line(21); /* 줄 번호 21를 맑게 하십시오 */
clear_the_line(22); /* 줄 번호 22를 맑게 하십시오 */
clear_the_line(23); /* 줄 번호 23를 맑게 하십시오*/
clear_the_line(24); /* 줄 번호 24를 맑게 하십시오 */
gotoxy(10,21);
cprintf("FNO에 들어가십시오. 파일의 당신은 재기하고 싶다");
scanf("%u",&file_no); /* 파일을 재기되기 위하여 아니 얻으십시오 */
loc=(root+(len*file_no/2));
|