wufayuan
驱动牛犊
驱动牛犊
  • 注册日期2007-11-30
  • 最后登录2010-01-22
  • 粉丝0
  • 关注0
  • 积分71分
  • 威望18点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
阅读:1192回复:0

请教物理扇区0反复读写出现的问题

楼主#
更多 发布于:2007-11-30 17:10
问题描述
用writefile和readfile两个函数时,有时会出现错误。
我采用异步io方式,对于写:
hDev=createfile("\\\\.\\PHYSICALDRIVE1",GENERIC_WRITE,0,NULL,OPEN_EXISTING,FILE_FLAG_OVERLAPPED);

OVERLAPPED OSwrite={0};    //initial value 0;

setupcomm(hDev,1024,1024); // set  i/o buffer;

SetCommTimeouts(hDev,&Timeouts); // set  time outs;

ClearcommError(hDev,&,&);

OSwrite.hEvent=CreateEvent(NULL,TRUE,FALSE,NULL);
if(OSwrite.hEvent==NULL)
return 0;
if(!WrtieFile(hDev,lpsectbuff,wSectors,&dwCB,&OSwrtie))
{
       if(GetLastError()==ERROR_IO_PENDING)
       {
           dwRes=WaitForSingleObject(OSwrite.hEvent,INFINTE);
           if(dwRes==WAIT_OBJECT_0)
             {
                    if(GetOverlappedResult(hDev,&OSwrite,&dwWriten,TRUE))
                          return TRUE;
                   else
                          return FALSE;  
             }
             else
            {
                   return FALSE;  
            }
       }
      else
      {
           return FALSE;  
       }
}
else
{
          return TRUE;  
}
CloseHandle(hDev);

代码基本就是这样,
读的过程和写类似,不多说了。
我的代码是要一直对可移动盘物理扇区0进行读写,
奇怪的是读写几次到几十次后就数据就写不下去了,
用逻辑分析仪看是下了写命令,却没有出现数据。
getlasterror()得到23, ERROR_CRC。
不知是何原因,请高手指教, 谢谢了!~
PS:本代码是在FPGA平台上与Firmware配合用来制卡的。
游客

返回顶部