Win2000下直接读写磁盘扇区

王朝vc·作者佚名  2006-12-17
窄屏简体版  字體: |||超大  

Win2000下直接读写磁盘扇区

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 ;

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航