///// 드라이브 매개변수를 얻는 기능 \\\\\
unsigned long getdrivegeometry (int drive)
{
union REGS i, o ;
struct SREGS s ;
struct geometry g = { 26, 0, 0, 0, 0, 0, 0, 0 } ;
i.h.ah = 0x48 ; /* INT 13H 연장의 기능 수 0x48는 코멘트를 아래에 본다 */
i.h.dl = drive; /*드라이브 수*/
i.x.si = FP_OFF ( (void far*)&g ) ;
s.ds = FP_SEG ( (void far*)&g ) ;
/*세그먼트 기록기 가치를 가진 INT 13H 연장의 지정된 기능 수를 비십시오 */
int86x ( 0x13, &i, &o, &s ) ;
printf("\n 머리 = %lu, 대위 당 분야 = %lu, 실린더 =
%lu\n", g.heads, g.spt, g.cyl);
/* 드라이브 기하학 기능 실패를 얻는 경우에, 착오 알림말을 디스플레이하고 나가십시오 */
if(g.spt==0)
{
printf("\n 얻으십시오 드라이브 기하학 기능 실패를….");
printf("\n 지원되지 않는 연장은 나가기 위하여, 누른다 어떤 열쇠든지…");
getch();
exit(1);
}
return *g.sectors; /* 드라이브에 분야의 수를 돌려보내십시오 */
}
////// 요점의 시작 \\\\\\
void main()
{
unsigned long loop=0, Sectors_in_HDD1=0, Sectors_in_HDD2=0;
unsigned char buffer[61440]; /*읽기/쓰기에 61440의 바이트의 자료 버퍼 시간을 절약하는 512의 바이트의 120의 분야 이번에. */
char choice;
clrscr();
|