繁体中文
设为首页
加入收藏
当前位置:ASP技术首页 >> ASP基础 >> Win2000下直接读写磁盘扇区

Win2000下直接读写磁盘扇区

2006-05-15 08:00:00  作者:  来源:互联网  浏览次数:0  文字大小:【】【】【
简介:在NT和2000下,通过CreateFile来打开需要读写的驱动器,ReadFile、WriteFile来进行磁盘读写。 下面的代码演示了,如何读写A驱 /* ----------------------------------------------------- Read Floppy Disk Sect...
关键字:直接 Win2000 盘扇区

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

}

责任编辑:admin
相关文章