機能readabsolutesectorsのコーディング()およびwriteabsolutesectorsは()次に与えられてしまった:
//// 絶対セクターを読む機能 \\\\
int readabsolutesectors ( int drive,
unsigned long sectornumber,
int numofsectors,
void *buffer )
{
union REGS i, o ;
struct SREGS s ;
struct diskaddrpacket pp ;
pp.packetsize = 16 ; /* 包みのサイズ= 10H */
pp.reserved = 0 ; /* 予約= 0 */
pp.blockcount = numofsectors ; /* 読むべきセクターの数 */
/* データバッファのため */
pp.bufferaddress = (char far*) MK_FP ( FP_SEG((void
far*)buffer), FP_OFF((void far*)buffer));
pp.blocknumber[0] = sectornumber ; /* 読むべきセクター数 */
pp.blocknumber[1] = 0 ; /* ブロック番号 */
i.h.ah = 0x42 ; /* 機能数 */
i.h.dl = drive ; /* 物理的なドライブ数 */
i.x.si = FP_OFF ( (void far*)&pp ) ; /* ds:si 緩衝変数のため */
s.ds = FP_SEG ( (void far*)&pp ) ; /* ds:si 緩衝変数のため */
/* 区分の記録の価値のINT 13Hの指定機能を実施しなさい */
int86x ( 0x13, &i, &o, &s ) ;
if ( o.x.cflag==1)
return 0 ; /*失敗 */
else
return 1 ; /* 成功 */
}
|