arbutus
驱动牛犊
驱动牛犊
  • 注册日期2009-02-17
  • 最后登录2009-02-20
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望31点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:3057回复: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
我读该磁盘相应扇区的内容时,读的都是正确的内容,所以想请教一下这里是否有人碰到过这个问题呢?
请高手给点意见,谢谢了先!!!!
lxh_phr
驱动小牛
驱动小牛
  • 注册日期2001-05-14
  • 最后登录2023-10-18
  • 粉丝0
  • 关注0
  • 积分18分
  • 威望156点
  • 贡献值0点
  • 好评度30点
  • 原创分0分
  • 专家分0分
  • 社区居民
沙发#
发布于:2009-02-17 18:50
PHYSICALDRIVE1是符号连接名吗?
lxh_zz
arbutus
驱动牛犊
驱动牛犊
  • 注册日期2009-02-17
  • 最后登录2009-02-20
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望31点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2009-02-18 09:57
PHYSICALDRIVE1是物理硬盘名称
AllenZh
驱动老牛
驱动老牛
  • 注册日期2001-08-19
  • 最后登录2015-11-27
  • 粉丝19
  • 关注10
  • 积分1316分
  • 威望2387点
  • 贡献值7点
  • 好评度321点
  • 原创分0分
  • 专家分0分
地板#
发布于:2009-02-18 17:46
Windows设备管理是否已经正确识别你的物理硬盘?如果没有当然不能工作了
你不能想当然的用PHYSICALDRIVE1,要确定PHYSICALDRIVE1存在,而且是你要操作的硬盘才能去action,否则认错了门当然到不了家
1,承接Windows下驱动/应用开发 2,本人原创虚拟鼠标/键盘,触摸屏,虚拟显卡,Mirror驱动,XP无盘的SCSI虚拟磁盘驱动等 3,windows下有尝技术服务(包括BUG调试,员工培训等) 欢迎深圳和海外企业联系.msn:mfczmh@sina.com
arbutus
驱动牛犊
驱动牛犊
  • 注册日期2009-02-17
  • 最后登录2009-02-20
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望31点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2009-02-19 11:53
当然能确认了,因为我可以正确读出该扇区的内容

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

返回顶部