QQ登录

只需一步,快速开始

扫一扫,访问微社区

登录 | 注冊 | 找回密码

163 加中网–加拿大曼尼托巴中文门户网站 | 温尼伯华人论坛

 找回密码
 注冊

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 224|回复: 2
打印 上一主题 下一主题

[闲聊] Win2000下直接读写磁盘扇区

[复制链接]
跳转到指定楼层
1#
匿名  发表于 2002-11-6 18:41:54 回帖奖励 |倒序浏览 |阅读模式
在NT和2000下,通过CreateFile来打开需要读写的驱动器,ReadFile、WriteFile来进行磁盘读写。</P><P>下面的代码演示了,如何读写A驱</P><P>/* -----------------------------------------------------</P><P>Read Floppy Disk Sector for win NT/2000<BR>reads [numsec] sectors from [head] [track] [sector]</P><P>-------------------------------------------------------*/</P><P><BR>char* ReadSectors(int head, int sector, int track, int numsec)<BR>{</P><P><BR>// getting logical sector from absolute head/track/sector ...<BR>//计算扇区位置<BR>int LogicalSector = (sector-1) +<BR>(head*SECTORSPERTRACK) +<BR>(track*SECTORSPERTRACK*NUMOFHEADS) ;</P><P>char *buffer ;<BR>HANDLE hDevice ;</P><P><BR>HANDLE hDevice;<BR>char* buffer = (char*)malloc (512*numsec);<BR>strset ( buffer , ' ');<BR>DWORD bytesread ;</P><P>// getting a handle to the drive a: using<BR>// CreateFile () function ....<BR>//打开驱动器 \\.\A:<BR>hDevice = CreateFile("\\\\.\\A:",<BR>GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE,<BR>NULL, OPEN_EXISTING, 0, NULL);</P><P>if (hDevice == NULL)<BR>{<BR>MessageBox ("Failed !");<BR>return NULL;<BR>}</P><P><BR>// setting the file pointer to the start of the<BR>// sector we want to read .<BR>//移动文件指针到需要读取位置<BR>SetFilePointer (hDevice,<BR>(LogicalSector*512),<BR>NULL,<BR>FILE_BEGIN);</P><P>// reading sector(s) ...<BR>//读数据<BR>if (!ReadFile ( hDevice,<BR>buffer,<BR>512*numsec,<BR>&bytesread,<BR>NULL) )<BR>{<BR>/*<BR>int err;<BR>char error[10];<BR>err=GetLastError ();<BR>itoa (err, error, 10);<BR>MessageBox (error, "Reading sectors ...Failed ");<BR>return NULL ;<BR>*/<BR>}<BR>//关闭<BR>CloseHandle(hDevice);</P><P>return buffer ;<BR>}
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享
回复

使用道具

该用户从未签到

2#
发表于 2024-6-22 13:29:50 | 只看该作者
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2024-6-22 13:31:05 | 只看该作者
回复 支持 反对

使用道具 举报

发表回复
您需要登录后才可以回帖 登录 | 注冊

本版积分规则

    联系我们
  • 咨询电话:1.204.294.8528
  • 邮箱:163adv@gmail.com
  • QQ:179091654
    移动客户端:即将开放
    关注我们:
  • 扫描二维码加关注

快速回复 返回顶部 返回列表