会员: 密码:  免费注册 | 忘记密码 | 会员登录 网页功能: 加入收藏 设为首页 网站搜索  
技术文档 > VC文档 > 系统硬件
Win2000下直接读写磁盘扇区
发表日期:2002-10-25 00:00:00作者: 出处:  

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

}

返回顶部】 【打印本页】 【关闭窗口

关于我们 / 给我留言 / 版权举报 / 意见建议 / 网站编程QQ群   
Copyright ©2003- 2024 Lihuasoft.net webmaster(at)lihuasoft.net 加载时间 0.00441