我现在有这样一个应用,需要把一些文本写入U盘的一个文件中,然后关闭U盘写保护。
我用的是CreateFile,WriteFile,CloseHandle实现的,但是发现有时候会弹出一个Windows的错误框:写保护错误,因软盘为写保护而无法写入软盘。我想这应该是windows的磁盘缓存在搞怪,我想请问一下,如果在CreateFile的参数里不用FILE_FLAG_NO_BUFFERING的情况下如何保证文件已经完全写入U盘(因为如果用了FILE_FLAG_NO_BUFFERING,那么写入必须是扇区的倍数,这样的话写入的文件就和原文本不一样了)?

解决方案 »

  1.   

    某些U盘是可以写保护的,和软盘差不多,写保护后禁止写入、删除.
    你要判断写入状态,可以判断CreateFile和WriteFile的返回值.
    也可以写完后再判断文件是否存在、文件尺寸和你写入的数据是否一致.
      

  2.   

    我是在CloseHandle之后才去关闭写保护的,CreateFile,WriteFile,CloseHandle全都返回成功,而且我也确定该写入的数据都写入了,但系统就是弹了那个错误框,不知道为什么。
      

  3.   

    GetLastError. 
    用这个看看返回值。。
      

  4.   

    DeviceIoControl周期性读取U盘的可写状态,直到不可写
      

  5.   

    刚才搜索到了,用FlushFileBuffers就可以了,谢谢各位,结贴了