再贴点资料,其他更具体的修改fat表哪些内容来截断文件,自己找资料,网上有的。<br> 读、写win2k的分区表(转贴) <br> 给你个读的例子,写的没敢试验,因为我只有一个hd.[:d] <br> <br> procedure tform1.button1click(sender: tobject); <br> var hfile:thandle ; <br> bytesread:dword; <br> buf: array[0..511] of char ; <br> security: tsecurityattributes; <br> <br> begin <br> <br> hfile:=createfile(//./physicaldrive0,generic_read, file_share_read or file_share_write, nil ,open_existing,file_flag_sequential_scan,0); <br> if hfile=invalid_handle_value then <br> begin <br> showmessage(no file exists yet.  
; <br> exit; <br> end; <br> if not readfile(hfile, buf, sizeof(buf), bytesread, nil) then showmessage(error); <br> <br> end; <br> ----------------------------------------- <br> 四、win2000中的磁盘扇区读写 <br> 在winnt和win2000中磁盘被看做一种标准设备,可以使用createfile象打开文件一样打开并存取。createfile支持两种方式的磁盘设备--逻辑磁盘和物理磁盘,例如打开a:盘进行读取操作,只要这样: <br> handle hdev=createfile("////.//a:",generic_read,file_share_write,0,open_existing,0,0); <br> 如果得到的句柄有效,就可以使用readfile来读取了, <br> readfile(hdev,buffer,512,&dwret,0); <br> 读取结束要关闭该句柄, <br> closehandle(hdev); <br> 这比win95/98下的磁盘扇区读取方便多了。 <br> 另外,上面的例子是操作逻辑磁盘的,它包括软驱、硬盘分区等;物理磁盘指的是实际的硬盘,它不关心该硬盘被分成几个区,硬盘的编号是从0开始的,"//./physicaldrive0"表示第一块硬盘,其它依此类推。大家可能马上会想起,利用这种机制可以对硬盘的分区表进行存取了。确实如此,此时便可以对硬盘的主引导扇区进行操作了。 <br> unsigned char buffer[512]={0}; <br> handle hdev=createfile("////.//physicaldrive0",generic_write,file_share_write,0,open_existing,0,0); <br> writefile(hdev,buffer,512,&dwret,0); <br> closehandle(hdev);