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