従ってフロッピィに80トラック(0から79)があるのでフロッピー・ディスクデータのイメージを保持するファイルのサイズが各トラック持っているそれおよび各セクターの把握の18のセクターをデータの512バイト、厳密な1,474,560バイト、2人の側面または頭部でなければ(頭部0および頭部1)ならないことを常に覚えなさい
総バイト= (トラックの数) * (頭部の数) * (トラックごとのセクター) * 512の数
= 80*2*18*512
= 1,474,560バイト
従って、読むことに間違いがフロッピー・ディスクのセクターにあれば、それは全体の情報を私達がこのファイルからのセクターによってディスクイメージのセクターを書こうと思っている行先ディスクのために完全または部分的に無益にさせる1,474,560バイトからファイルのサイズを変える。
これは割振り単位で割振られたのでコンピュータがセクターの範囲の内のフロッピー・ディスクの媒体の表面であらゆるファイルの情報を読むのでそうある。 今ファイルのデータのセクターが変われば、完全なファイル情報は変わる。
セクターの読み込みエラーの解決のために考えること
それは私達がディスクの表面からの情報を読めるかもしれないことそれが表面のそのような悪い区域を有するかもしれないこと悪くか判読不可能なフロッピィと可能である。
この条件イメージファイルのサイズが1,474,560バイトとこの場合異なるように私達がとばしたおよびフロッピィのイメージは他のセクターのために歪められるこのセクター意志の情報。
イメージファイルのサイズを維持し、行先ディスクの厳密なセクター位置の情報の残りを貼るために、私達は512バイトの元のデータに代わって他の情報を書き、しかし情報の残りを救うためにこのように、可能であるそのような場合の回復が部分的な回復であるかもしれない。
あなたのシステムがまた源フロッピィの最初のセクターを読まなければ行先フロッピィへのイメージを貼った後フロッピィのdosのブートレコードを書直すためにの前に記述されているプログラムを動かすべきである。
私達を私達がプログラミングかによってそれをいかにしてもいいか見ることを許可しなさい:
#include <bios.h>
#include <stdio.h>
void main(void)
{
int head,track;
union REGS regs;
int result,i,sector;
char filename[80];
struct diskinfo_t dinfo;
static char dbuf[512];
|