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