arbutus
驱动牛犊
驱动牛犊
  • 注册日期2009-02-17
  • 最后登录2009-02-20
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望31点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:3066回复:4

用writefile写PC机上第二块硬盘扇区为什么写不进去呢?

楼主#
更多 发布于:2009-02-17 18:40
我的机器上除了OS运行的一块硬盘外,还挂了一块硬盘,想对这块硬盘进行物理扇区的读写,读的时候没问题,但写的时候返回是成功的,可实际上没写进去,不知道为什么呢?
 以下是写的那段代码:

hDev = CreateFile("\\\\.\\PHYSICALDRIVE1", GENERIC_READ|GENERIC_WRITE,FILE_SHARE_READ|FILE_SHARE_WRITE,NULL,OPEN_EXISTING,FILE_FLAG_NO_BUFFERING|FILE_FLAG_WRITE_THROUGH,NULL);


//这里一定要用PHYSICALDRIVE1这个物理名称,因为我的硬盘不是用FAT等WIN认识的格式的,所以不可能有C:等逻辑盘符出现,一定要用物理名称
 if (hDev == INVALID_HANDLE_VALUE) return 0;
 SetFilePointer(hDev, 512 * dwStartSector, 0, FILE_BEGIN);//dwStartSector是开始扇区号
 bRet = WriteFile(hDev, lpSectBuff, 512 * wSectors, &dwCB, NULL);//wSectors是要写多少个扇区
 CloseHandle(hDev);

从查资料的情况看好象用这个系列的函数写物理扇区应该就是这么用吧,但为什么写返回成功,可实际上没写进去呢?
而且我的硬盘不是OS运行的硬盘,该硬盘是个空磁盘,磁盘格式自己定义的,不是FAT,NTFS等任何其他格式的磁盘,所以我应该可以对该硬盘进行任何物理位置的写操作吧?可为什么写不进去呢?我的OS是WINDOWS2003 SERVER
我读该磁盘相应扇区的内容时,读的都是正确的内容,所以想请教一下这里是否有人碰到过这个问题呢?
请高手给点意见,谢谢了先!!!!
arbutus
驱动牛犊
驱动牛犊
  • 注册日期2009-02-17
  • 最后登录2009-02-20
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望31点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2009-02-18 09:57
PHYSICALDRIVE1是物理硬盘名称
arbutus
驱动牛犊
驱动牛犊
  • 注册日期2009-02-17
  • 最后登录2009-02-20
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望31点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2009-02-19 11:53
当然能确认了,因为我可以正确读出该扇区的内容

现在问题有一些进展,就是发现是某个扇区位置在写入某一些中文字符时会保存不进去,甚至用WINHEX写入也不行,如果换成其他字符,或者换个位置写也许都可以成功,所以非常奇怪,不知道是否有人碰到过这个问题呢?
游客

返回顶部