阅读:1192回复:0
请教物理扇区0反复读写出现的问题
问题描述
用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配合用来制卡的。 |
|