| Win2K下如何直接读写磁盘扇区 |
|
| 作者:未知 文章来源:网络收集 点击数: 更新时间:2006-3-29 15:28:06
|
| Win2000下直接读写磁盘扇区 不少朋友来信问在2000如何写磁盘;我把自已常用的方法告诉大家;如果您不知道我在说什么;您赶快按ALT+F4 别浪费时间。
本文介绍在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 ;}
|
|
[ 收藏此页到: 天天|和讯|博采|ViVi|狐摘|我摘|天极 ] 文章录入:kinda 责任编辑:kinda |
|
上一篇文章: WindowsXP系统登录密码丢失后两种解决方案 下一篇文章: 非主流入侵之会话劫持winnt/2kHASH |
| 【字体:小 大】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口】 |