读取磁盘某一个扇区(100分)

  • 主题发起人 主题发起人 冬月
  • 开始时间 开始时间

冬月

Unregistered / Unconfirmed
GUEST, unregistred user!
有读磁盘某个扇区的例子吗,需要在XP或者2000下好用,要能读取大于2G的
 
给你个读的例子,写的没敢试验,因为我只有一个HD.[:D]<br><br>procedure TForm1.Button1Click(Sender: TObject);<br>var &nbsp;hFile:THandle ;<br>&nbsp; &nbsp; &nbsp;bytesread:DWORD;<br>&nbsp; &nbsp; &nbsp;buf: array[0..511] of char ;<br>&nbsp; &nbsp; &nbsp;Security: TSecurityAttributes;<br><br>begin<br><br>&nbsp;hFile:=CreateFile('//./PhysicalDrive0',GENERIC_READ, FILE_SHARE_READ or FILE_SHARE_WRITE, nil ,OPEN_EXISTING,FILE_FLAG_SEQUENTIAL_SCAN,0);<br>&nbsp; if hFile=INVALID_HANDLE_VALUE then<br>&nbsp; begin<br>&nbsp; &nbsp; ShowMessage('No file exists yet.' );<br>&nbsp; &nbsp; Exit;<br>&nbsp; end;<br>&nbsp; if not &nbsp;ReadFile(hFile, buf, sizeof(buf), bytesread, nil) then showmessage('Error');<br><br>end;<br>&nbsp; &nbsp; 在WINNT和WIN2000中磁盘被看做一种标准设备,可以使用CreateFile象打开文件一样打开并存取。CreateFile支持两种方式的磁盘设备--逻辑磁盘(格式为"//./C:")和物理磁盘(格式为"//./PHYSICALDRIVEx",其中x为数字),例如打开A:盘进行读取操作,只要这样:<br>&nbsp; &nbsp; &nbsp;HANDLE hDev=CreateFile("////.//A:",GENERIC_READ,FILE_SHARE_WRITE,0,OPEN_EXISTING,0,0);<br>如果得到的句柄有效,就可以使用ReadFile来读取了,<br>&nbsp; &nbsp; &nbsp;ReadFile(hDev,Buffer,512,&amp;dwRet,0);<br>读取结束要关闭该句柄,<br>&nbsp; &nbsp; &nbsp;CloseHandle(hDev);
 
后退
顶部