在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 ;
}