背景:我用HANDLE m_hTSFile=CreateFile(m_strFileName, GENERIC_WRITE |GENERIC_READ, 0, NULL, CREATE_ALWAYS, 0, 0)创建一个文件,之后用WriteFile写文件,假设文件空间只有100MB,当写到100MB后我用SetFilePointer(m_hTSFile, 0, NULL, FILE_BEGIN)把文件指针重新指到文件开头,再用WriteFile来写文件。现在问题来了:当我用WriteFile进行第一趟写的时候,write一个数据(大小为16KB)基本不花时间,可当文件写满100MB之后我把文件指针重新指到文件开头继续写,此时write一个数据(大小同样为16KB)却要花几十个milliseconds,这是为什么?30分奉上等着您!

解决方案 »

  1.   

    BOOL WriteFile(
      HANDLE hFile,                    // handle to file
      LPCVOID lpBuffer,                // data buffer
      DWORD nNumberOfBytesToWrite,     // number of bytes to write
      LPDWORD lpNumberOfBytesWritten,  // number of bytes written
      LPOVERLAPPED lpOverlapped        // overlapped buffer
    );
    最后一个参数
      

  2.   

    sdjnlf(bnxf) ,我也试了,问题依旧。
      

  3.   

    对于CreateFile和WriteFile是否都采用了OVERLAPPED结构?