CreateFile + FILE_APPEND_DATA == 疯狂的Writefile
问题是这样的:
HANDLE hTarget = CreateFile( csNewFilePath,
FILE_APPEND_DATA,
FILE_SHARE_READ,
NULL,
CREATE_NEW,
FILE_ATTRIBUTE_NORMAL,
NULL);
以FILE_APPEND_DATA的方式创建一个文件,然后写入文件:
char pData[] = "0123456789abcdef";
for ( int i = 0; i < g_nRepeateTime; ++i )
{
bWriteRes= WriteFile(hTarget, pData, 16, &dwBytesWritten, NULL);
if ( (0 == bWriteRes) || ( 16 != dwBytesWritten) )
{
ASSERT(0);
CloseHandle(hTarget);
return FALSE;
}
}
疯狂的结果出现了,比如说我将g_nRepeateTime = 10, 结果0123456789abcdef被写入了 > 10次!!也就是说WriteFile重复写入了数据,但是每次bWriteRes != 0 && dwBytesWritten == 16。
把FILE_APPEND_DATA换成GENERIC_READ | GENERIC_WRITE,一切OK.
跪求各位大侠赐教!