正在阅读:Win2000下直接读写磁盘扇区Win2000下直接读写磁盘扇区

2004-02-14 09:34 出处:PConline 作者:闻怡洋/译 责任编辑:zwg
Win2000下直接读写磁盘扇区  作者 N/A 原作者姓名 N/A 文章原始出处: http://www.codeguru.com/system/ReadSector.html 正文 闻怡洋译 转载请与作者联系 在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 ; } 点击下载源代码

关注我们

最新资讯离线随时看 聊天吐槽赢奖品