请输入您要查询的百科知识:

 

词条 absread, abswirte
释义

函数名: absread, abswirte

功 能: 绝对磁盘扇区读、写数据

用 法: int absread(int drive, int nsects, int sectno, void *buffer);

int abswrite(int drive, int nsects, in tsectno, void *buffer);

drive=0(A驱动器)、1(B驱动器)、

nsects=要读、写的扇区数(最多64K个);

lsect=起始逻辑扇区号;

buffer=要读、写入数据的内存起始地址。

功能:读----从drive指定的驱动器磁盘上,sectnum指定的逻辑扇区号开始读取(通过DOS中断0x25读取)num个(最多64K个)扇区的内容,储存于buf所指的缓冲区中;写----将指定内容写入(调用DOS中断0x26)磁盘上的指定扇区,即使写入的地方是磁盘的逻辑结构、文件、FAT表和目录结构所在的扇区,也照常进行。

参数:drive=0对应A盘,drive=1对应B盘。

返回值:0:成功;-1:失败。

头文件:dos.h

用absread读出的数据是二进制形式的,其内容就是原本在磁盘中存储的数据的副本,至于表示什么,就依赖于原先存储的格式及数据的内容了.

abswrite函数将内存中指定的数据写入磁盘的特定位置,其内容也是二进制形式的,如果想再找到写入内容,当然可以用absread在原位置读出.

举一个简单的例子,比方说C盘主引导区受损,则可用软盘或光盘启动系统,利用abswrite将主引导区的备份重新写入,覆盖逐级损的部分,即可达到手工修复的目的.

程序例:

/* absread example */

#include <stdio.h>

#include <conio.h>

#include <process.h>

#include <dos.h>

int main(void)

{

int i, strt, ch_out, sector;

char buf[512];

printf("Insert a diskette into drive A and press any key\");

getch();

sector = 0;

if (absread(0, 1, sector, &buf) != 0)

{

perror("Disk problem");

exit(1);

}

printf("Read OK\");

strt = 3;

for (i=0; i<80; i++)

{

ch_out = buf[strt+i];

putchar(ch_out);

}

printf("\");

return(0);

}

随便看

 

百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。

 

Copyright © 2004-2023 Cnenc.net All Rights Reserved
更新时间:2024/12/23 21:17:46