Win2000下直接读写磁盘扇区

[入库:2005年8月18日] [更新:2007年3月24日]

本文简介:选择自 leecylove 的 blog

在nt和2000下,通过createfile来打开需要读写的驱动器,readfile、writefile来进行磁盘读写。

下面的代码演示了,如何读写a驱

/* -----------------------------------------------------

read floppy disk sector for win nt/2000
reads [numsec] sectors from [head] [track] [sector]

-------------------------------------------------------*/


char* readsectors(int head, int sector, int track, int numsec)
{


// getting logical sector from absolute head/track/sector ...
//计算扇区位置
int logicalsector = (sector-1) +
(head*sectorspertrack) +
(track*sectorspertrack*numofheads) ;

char *buffer ;
handle hdevice ;


handle hdevice;
char* buffer = (char*)malloc (512*numsec);
strset ( buffer , ' ');
dword bytesread ;

// getting a handle to the drive a: using
// createfile () function ....
//打开驱动器 \\.\a:
hdevice = createfile("\\\\.\\a:",
generic_read, file_share_read | file_share_write,
null, open_existing, 0, null);

if (hdevice == null)
{
messagebox ("failed !");
return null;
}


// setting the file pointer to the start of the
// sector we want to read .
//移动文件指针到需要读取位置
setfilepointer (hdevice,
(logicalsector*512),
null,
file_begin);

// reading sector(s) ...
//读数据
if (!readfile ( hdevice,
buffer,
512*numsec,
&bytesread,
null) )
{
/*
int err;
char error[10];
err=getlasterror ();
itoa (err, error, 10);
messagebox (error, "reading sectors ...failed ");
return null ;
*/
}
//关闭
closehandle(hdevice);

return buffer ;
}

本文关键:Win2000下直接读写磁盘扇区
  相关方案
Google
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top