阅读:1842回复:7
2000下物理磁盘的读写问题
我在用DELPHI写段程序在2000下,把自己写的引导程序写到0扇区,但我现在只要写前面几十个字节,不能把全部的512字节都替换掉,那样会破坏分区表的。现在的问题是,我怎么有办法只写前面几十个字节?,我定义了个缓冲区,但每当我写进去的时候,就会把整个扇区都覆盖了。
谁能有办法解决? //读出我要写进扇区的文件到缓冲区BUFFER iFileHandle := FileOpen(\'a:\\first.bin\', fmOpenRead); iFileLength := FileSeek(iFileHandle,0,2); FileSeek(iFileHandle,0,0); Buffer := PChar(AllocMem(iFileLength + 1)); FileRead(iFileHandle, Buffer^, iFileLength); FileClose(iFileHandle); //在这里我发现buffer里面除了有我firet.bin文件外,还有其他,怎么回事? //找到0扇区,写到扇区 FileSeek(hDeviceHandle,SectorStart*BytesPersector,0);// if FileWrite(hDeviceHandle,buffer,SectorCount*bBytesPersector)<>SectorCount*bBytesPersector then raise exception.create(\'write错误\'); |
|
沙发#
发布于:2003-10-21 10:56
读出来修改那些你要修改的再写回去3!傻傻的接分!
|
|
|
板凳#
发布于:2003-10-21 11:05
怎么改?
定义个P:PCHAR 我把扇区数据读到了P[0],怎么帮我要改的换进去? 指教! |
|
地板#
发布于:2003-10-21 12:33
你先把整个扇区读出来,修改完后再整个扇区写回去,应该就可以拉
|
|
|
地下室#
发布于:2003-10-21 12:35
不是已经很清楚了,读取一个扇区的内容到你的BUFFER,修改前面的MBR保留分区表,把修改好的BUFFER中一个扇区的内容写回到0,0,1即可.
|
|
|
5楼#
发布于:2003-10-21 12:42
不好意思,我就是在修改的地方不知道怎么改。
FA33CD……这16进制怎么去替换。 |
|
6楼#
发布于:2003-10-22 10:10
我已经把要改的扇区替换掉了```
|
|
7楼#
发布于:2003-10-23 09:33
偶倒。
|
|
|