未加工ファイル回復のためのプログラムを書くこと
Microsoft Wordファイル(.DOC延長)の未加工ファイル回復のためのプログラムのコーディングは次に与えられてしまった。 プログラムはディスクのセクターのファイルを捜し、ファイルの名前を自動的に作成することによって回復されたファイルを自動的に救う。
ファイルを救うためにユーザーが指定する道が行先道として回復されたデータを救うのに使用されている。 転送先ディレクトリがなければ、プログラムは1つの登録簿のレベルまで行先を作成できる。
ここに与えられる回復プログラムは大型データを捜し、回復するためにディスクを支える。 プログラムは第2物理的なハードディスクのデータを捜すために書かれていた。
/*Microsoft Wordを回復する未加工ファイル回復プログラムはファイルする*/
#include<stdio.h>
#include<dos.h>
/* INT 13H延長、機能数0x48を使用してgetdrivegeometry機能が使用される構造。 */
struct geometry
{
unsigned int size ; /* (緩衝の呼出し)サイズ */
unsigned int flags ; /* 情報標識 */
unsigned long cyl ; /* ドライブの物理的なシリンダーの数 */
unsigned long heads ;/* ドライブの物理的な頭部の数 */
unsigned long spt ; /* トラックごとの物理的なセクターの数 */
unsigned long sectors[2] ; /*ドライブのセクターの総数 */
unsigned int bps ; /* セクターごとのバイト */
} ;
/* ディスク住所包みのフォーマットの構造は、readabsolutesectorsによって使用されるために作用する*/
struct diskaddrpacket
{
char packetsize ; /* 包み、概要に10Hのサイズ */
char reserved ; /* 予約(0) */
int blockcount ; /* 移るべきブロックの数 */
char far *bufferaddress ; /* 緩衝を移す住所 */
unsigned long blocknumber[2] ; /* 絶対ブロック番号の開始 */
} ;
///// ドライブ変数を得る機能 \\\\\
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 ; /* 機能数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 Head = %lu, Sectors Per Track = %lu, Cylinder = %lu\n",
g.heads,g.spt,g.cyl);
/* ドライブ幾何学機能失敗を得なさい、エラーメッセージを表示し、出なさい */
if(g.spt==0)
{
printf("\n Get Drive Geometry Function Fails....");
printf("\n Extensions Not Supported, Press any Key to
Exit...");
getch();
exit(1);
}
return *g.sectors; /* ドライブのセクターの数を戻しなさい */
}
unsigned long file_size=0, i=0;
unsigned long start_file=0, end_file=0;
unsigned long Sectors_in_HDD2=0, loop=0;
char buffer[512], filename[80], temp[8];
char path[80];
unsigned int result,num=0;
|
page 1 | 2 | 3 | 4 | 5 | 6 |
|
|
|