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

  • 常规讨论

  • 我的机器上除了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
    我读该磁盘相应扇区的内容时,读的都是正确的内容,所以想请教一下这里是否有人碰到过这个问题呢?
    请高手给点意见,谢谢了先!!!!

    2009年2月17日 8:39

全部回复