背景:在windows系统,如果磁盘格式为NTFS,就可以创建一个非常大的稀疏文件,这个文件的大小可以大于该分区的剩余大小,然后向文件写数据时才会分配磁盘空间,可以节省磁盘空间。 问题: HANDLE hFile = CreateFile(_this->m_strSrcFile, GENERIC_READ, FILE_SHARE_READ|FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_ARCHIVE, // 0); if ( INVALID_HANDLE_VALUE == hFile) { LOGFILE("1 CreateFile failure,Error=%d",GetLastError()); return 0; } ULARGE_INTEGER uli; uli.LowPart = GetFileSize(hFile,&uli.HighPart); DWORD dwSize = 1<<15; DWORD dwCount = (DWORD)((uli.QuadPart/dwSize)+(uli.QuadPart%dwSize?1:0)); PBYTE pBuf = new BYTE[dwSize]; for (DWORD i=0; i<dwCount; i++) { DWORD dwReal=0; BOOL bRead = ReadFile(hFile,pBuf,dwSize,&dwReal,NULL); if (!bRead) { LOGFILE("1 ReadFile failure,Error=%d",GetLastError()); return 0; } DWORD dwPos = (i+1)*100/dwCount; _this->m_ProgressCtrl.SetPos(dwPos); } delete []pBuf; CloseHandle(hFile); 当我像读普通一样读稀疏文件的时候发现,我的磁盘空间减少,当磁盘空间减少到0时,ReadFile就会返回错误112,后来查了一下啊,是磁盘空间不足的错误,这是什么原因?有人知道吗? XXXXXXXXXXXXXXXXXXXXX 有人遇到这种问题吗,server 2003 和xp系统下很容易出现这种情况,帮我看看,或者身边有高手的帮我请教一下,不胜感激!可以物质上感谢。 |