// here //----- Media_D_CopySector() ------------------------------------------ int Media_D_CopySector(struct us_data *us, DWORD start,WORD count,BYTE *buf) { //DWORD mode; //int i; WORD len, bn; //SSFDCTYPE_T aa = (SSFDCTYPE_T ) &Ssfdc; //ADDRESS_T bb = (ADDRESS_T) &Media; /* pr_info("Media_D_CopySector !!!\n"); */ if (Conv_D_MediaAddr(us, start)) return(ErrCode); while(1) { if (Assign_D_WriteBlock()) return(ERROR); len = Ssfdc.MaxSectors - Media.Sector; if (count > len) bn = len; else bn = count; //if (Ssfdc_D_CopyBlock(fdoExt,count,buf,Redundant)) if (Ssfdc_D_CopyBlock(us,bn,buf,Redundant)) { ErrCode = ERR_WriteFault; return(ErrCode); } Media.Sector = 0x1F; //if (Release_D_ReadBlock(fdoExt)) if (Release_D_CopySector(us)) { if (ErrCode==ERR_HwError) { ErrCode = ERR_WriteFault; return(ErrCode); } } count -= bn; if (count<=0) break; buf += bn * SECTSIZE; if (Inc_D_MediaAddr(us)) return(ErrCode); } return(NO_ERROR); }
int Media_D_CopySector(struct us_data *us, DWORD start,WORD count,BYTE *buf) { WORD len, bn; if (Conv_D_MediaAddr(us, start)) return(ErrCode); while(1) { if (Assign_D_WriteBlock()) return(ERROR); len = Ssfdc.MaxSectors - Media.Sector; if (count > len) bn = len; else bn = count; if (Ssfdc_D_CopyBlock(us,bn,buf,Redundant)) { ErrCode = ERR_WriteFault; return(ErrCode); } Media.Sector = 0x1F; if (Release_D_CopySector(us)) { if (ErrCode==ERR_HwError) { ErrCode = ERR_WriteFault; return(ErrCode); } } count -= bn; if (count<=0) break; buf += bn * SECTSIZE; if (Inc_D_MediaAddr(us)) return(ErrCode); } return(NO_ERROR); }